Is FMOD Technically support on dedicated server builds?

We recently updated FMOD to 2.01.22 for Unity.

When running on dedicated server, we’re getting exceptions during initialization:

{"log":"SystemNotInitializedException: [FMOD] Initialization failed : Output forced to NO SOUND mode : ERR_OUTPUT_INIT : Error initializing output device.", "stream":"stdout", "time":"2023-04-27T01:20:52.2539851Z"}
{"log":"  at FMODUnity.RuntimeManager.get_Instance () [0x00000] in <00000000000000000000000000000000>:0 ", "stream":"stdout", "time":"2023-04-27T01:20:52.2540269Z"}
{"log":"  at FMODUnity.RuntimeManager.LoadBank (System.String bankName, System.Boolean loadSamples, System.String bankId) [0x00000] in <00000000000000000000000000000000>:0 ", "stream":"stdout", "time":"2023-04-27T01:20:52.2540323Z"}

And then subsequently when a sound is trying to play:

{"log":"EventNotFoundException: [FMOD] Event not found: {1ffa4efc-d642-4fcf-9432-b85ea4488f92}", "stream":"stdout", "time":"2023-04-27T01:25:59.0153492Z"}
{"log":"  at FMODUnity.RuntimeManager.GetEventDescription (FMOD.GUID guid) [0x00000] in <00000000000000000000000000000000>:0 ", "stream":"stdout", "time":"2023-04-27T01:25:59.0153611Z"}
{"log":"  at FMODUnity.RuntimeManager.CreateInstance (FMOD.GUID guid) [0x00000] in <00000000000000000000000000000000>:0 ", "stream":"stdout", "time":"2023-04-27T01:25:59.0153668Z"}

If FMOD is not supported on dedicated server builds, and we’re using the StudioEventEmitter, how can we prevent audio from playing?

Or if FMOD is supported technically on dedicated server. How can we initialize it correctly?

Hi,

What version of Unity are you using? How are you building the dedicated server? E.g. Headless mode?

We’re currently using 2021.3.5 LTS.

We build headless server using the dedicated server build target.

We then upload and run it on playfab

1 Like

Are the errors happening when you are running the server on your machine or after you upload it to Playfab? If it is happening on Playfab could you test running it on your machine and see if the errors continue?

After using the following cmd for my build

"D:\Unity\2021.3.5f1\Editor\Unity.exe" -quit -batchmode -nographics -buildTarget Win64 -standaloneBuildSubtarget Server -projectPath= "D:\Unity Projects\UnityProject" -executeMethod BuildScript.Build -logFile /dev/stdout

I am unable to reproduce the issue. Could I see the command you are using to build the server?

Interesting.
Our build script looks like this:

string[] additionalDefines = new string[] { "ENABLE_PLAYFABSERVER_API", "UNITY_SERVER" };

var scenes = new List<string> ...
string locationPathName = ...;

BuildPlayerOptions options = new BuildPlayerOptions()
{
	scenes = scenes.ToArray(),
	locationPathName = locationPathName,
	target = BuildTarget.StandaloneWindows64,
	subtarget = (int)StandaloneBuildSubtarget.Server,
	extraScriptingDefines = additionalDefines,
	options = BuildOptions.Development
};

BuildPipeline.BuildPlayer(options);

We haven’t tested running the server build locally. Will do that now and report back

1 Like

Although the following are Unreal Engine issues. Could they be related here?

One of those posts mentions MSACM32.dll isn’t available on Window Server Core

Were you able to get the builds working locally?

Still in progress. Will report back here when it’s done

1 Like

FMOD does work on local server builds.

Any ideas how we could at least get FMOD initializing without exceptions on a playfab server?
Are there DLLs not included with the FMOD plugin that it’s expecting to exist?

If it helps, here is a log we get on playfab:

{"log":"[FMOD] OutputWASAPI::enumerate : IMMDeviceEnumerator::GetDefaultAudioEndpoint returned 0x800706BA.", "stream":"stdout", "time":"2023-04-27T01:20:51.0336990Z"}

Our plan right now is to remove all StudioEventEmitters and modify some of the other components like FMODEventTrack and StudioListener so that they don’t perform any logic when UNITY_SERVER is true.

Then with our own audio component, we can skip playing audio if UNITY_SERVER.

Yep, no audio support on Windows Server Core:

Hi,

Thank you for all the information. So this is related to an issue that we are already working on.

This will hopefully be part of the fix when it is implemented.

That is the best course of action right now, unfortunately. Once there is progress on the task I will update the thread.

Again, thank you for all your investigation.

1 Like

Thanks, looking forward to an update

1 Like

Just to confirm, was the Event not found issue also solved or were you still experiencing this? Or were there any other errors being logged on the server? Having another look, FMOD being set to NO SOUND mode shouldn’t have stopped the events being found.

Thanks

It’s not solved on playfab.

These are the errors:

{"log":"EventNotFoundException: [FMOD] Event not found: {1ffa4efc-d642-4fcf-9432-b85ea4488f92}", "stream":"stdout", "time":"2023-04-27T01:24:31.5786879Z"}

{"log":"[FMOD] ObjectLookup::get : Lookup failed for EventModel: {1ffa4efc-d642-4fcf-9432-b85ea4488f92}", "stream":"stdout", "time":"2023-04-27T01:24:31.6114714Z"}

The event does exist though. But for whatever reason on playfab, the lookup isn’t being generated.

Thank you for confirming, are there any further logs that are included with the server? Something that might include more information about the error, e.g. failed to load banks?

No other logs that I can see sorry

1 Like

All good. Thank you again for all your help. I will continue to investigate why events aren’t being found and if there is any progress on FMOD Server support I will reply here.

Thanks!

Would it be possible to set the FMOD Logging level to Log
image
Which should be logging all FMOD calls and a method for finding the log files on a Playfab server can be found here: Getting Unity logs from game server - Playfab Community

Let me know if this helps!