Unity 2019.3.0f6 - Nintendo Switch - SystemNotInitializedException: [FMOD] Initialization failed

We recently switched our project to Unity 2019.3.0f6 and are in the process of getting everything up and running on Nintendo Switch.

Unfortunately it would seem that this version of Unity and it’s matching Nintendo SDK are not yet supported?
Loading a scene, where a fmod listener is present and some audio is trying to play, results in the game just freezing.

On a non dev build, the game seems to be able to recover (to a certain point ) but when playing a dev build, fmod just stops working.

We were able to recreated this issue in a clean/empty project.
These are the steps we took:
• new project using Unity 2019.3.0f6
• Added the fmod unity plugins for the different platforms (2.00.08)
• Created the banks with the matching studio version
• Configured fmod for a multiplatform setup using streaming assets and added the banks
• Disabled unity audio
• added a listener to the camera in the sample scene and removed the default unity audio listener
• added the default emitter that plays some audio OnEnable to the camera
• Verfied everything is playing correctly in the Editor
• Created dev build for Nintendo switch

On pc everything works fine but on the console we instantly get the following error:

SystemNotInitializedException: [FMOD] Initialization failed : FMOD.Debug.Initialize : ERR_UNSUPPORTED : A command issued was not supported by this object. Possibly a plugin without certain callbacks specified.
at FMODUnity.RuntimeManager.CheckInitResult (FMOD.RESULT result, System.String cause) [0x00000] in <00000000000000000000000000000000>:0
at FMODUnity.RuntimeManager.Initialize () [0x00000] in <00000000000000000000000000000000>:0
at FMODUnity.RuntimeManager.get_Instance () [0x00000] in <00000000000000000000000000000000>:0
at FMODUnity.RuntimeManager.get_StudioSystem () [0x00000] in <00000000000000000000000000000000>:0
at FMODUnity.RuntimeManager.AddListener (FMODUnity.StudioListener listener) [0x00000] in <00000000000000000000000000000000>:0
at FMODUnity.StudioListener.OnEnable () [0x00000] in <00000000000000000000000000000000>:0

(Filename: currently not available on il2cpp Line: -1)

Starting main loop at 2.985485 seconds.
SystemNotInitializedException: [FMOD] Initialization failed : FMOD.Debug.Initialize : ERR_UNSUPPORTED : A command issued was not supported by this object. Possibly a plugin without certain callbacks specified.
at FMODUnity.RuntimeManager.CheckInitResult (FMOD.RESULT result, System.String cause) [0x00000] in <00000000000000000000000000000000>:0
at FMODUnity.RuntimeManager.Initialize () [0x00000] in <00000000000000000000000000000000>:0
at FMODUnity.RuntimeManager.get_Instance () [0x00000] in <00000000000000000000000000000000>:0
at FMODUnity.RuntimeManager.get_StudioSystem () [0x00000] in <00000000000000000000000000000000>:0
at FMODUnity.RuntimeManager.AddListener (FMODUnity.StudioListener listener) [0x00000] in <00000000000000000000000000000000>:0
at FMODUnity.StudioListener.OnEnable () [0x00000] in <00000000000000000000000000000000>:0

(Filename: currently not available on il2cpp Line: -1)

We tested this using 2.00.08

I’m hoping this issue is caused by the fact that according to the download page the plugin has been built for sdk9.3.1 while the latest versions of Unity are all on sdk9.4.1 .
But it’s tricky for use to determine if that is indeed the case.
Should this indeed be the cause of this issue, is there a way to get our hands on a beta plugin version that does support this or an eta on potential support?

Thanks for any potential help regarding this issue.
-Brecht

Hi Glowfish,

I had the same problem, try check the fmod lib for Nintendo Switch. When you a dev build, you need active the lib with “L” at the end. When you remove dev build flag you need use the lib without “L”.
2FFDhZe

To change the active lib just need check the Switch option on platform settings.
41c48c0602b5918eb9616070e87b23918725faa3_2_479x375

OBS: FMOD is not working on Linux builds, so if your game has a Linux version you will have to wait for them to resolve it yet.

Thx @leothurler for the very nice explanation!
That indeed fixes the issue in my test project.

Would be nice if someone at Fmod (@cameron-fmod ?) could provide a bit more insight on why this juggling needs to happen or where one could find the documentation regarding this.

For example on pc both the regular and the L libraries are enabled. But that isn’t allowed for the switch libraries from what it seems.
Would be nice if this switching was automated during the build process to avoid situations like the one we were having.

1 Like

https://fmod.com/resources/documentation-unity?version=2.0&page=platform-specifics.html#fmod-libs-on-static-platforms

Platforms such as iOS, tvOS and Switch make use of statically linked FMOD libraries. This means that the Integration cannot pick which libraries to load at runtime, this is an issue when it comes to choosing to load either the logging or release version.

Aha! Thank you totally missed that one.

This is something we are hoping we will be able to automate in the future.

An error message saying this is a potential problem would be helpful. Thanks for the fix.