Another deployment problem

Unreal version: 4.18.3

FMOD works correctly in the Unreal editor, but when I test my deployed game, there is no FMOD sound played.

I tried everything I can do, like adding “FMODStudio” in PublicDependencyModuleNames (*.build.cs), or “IFMODStudioModule::Get();” in game mode constructor.

Here is my configuration:
Deploy config
FMOD config

Can you build in development mode and see if there are any errors or warning in the games log file?

In debug mode, the game won’t start:

Assertion failed: ModuleManager.IsModuleLoaded(ModuleName) [File:C:\Program Files\Epic Games\UE_4.18\Engine\Source\Runtime\Core\Public\Modules/ModuleManager.h] [Line: 271] Tried to get module interface for unloaded module: ‘FMODStudio’

Proto_Win64_DebugGame!FDebug::AssertFailed()
Proto_Win64_DebugGame!FModuleManager::GetModuleChecked() [c:\program files\epic games\ue_4.18\engine\source\runtime\core\public\modules\modulemanager.h:271]
Proto_Win64_DebugGame!APrototypeGameMode::APrototypeGameMode() [e:\documents\redwood\trunk\project\Proto\source\Proto\gamemode\prototypegamemode.cpp:14]
Proto_Win64_DebugGame!InternalConstructor()
Proto_Win64_DebugGame!UClass::CreateDefaultObject()
Proto_Win64_DebugGame!FEDLBootNotificationManager::ConstructWaitingBootObjects()
Proto_Win64_DebugGame!FAsyncLoadingThread::TickAsyncLoading()
Proto_Win64_DebugGame!FlushAsyncLoading()
Proto_Win64_DebugGame!LoadPackageInternal()
Proto_Win64_DebugGame!LoadPackage()
Proto_Win64_DebugGame!ResolveName()
Proto_Win64_DebugGame!StaticLoadObjectInternal()
Proto_Win64_DebugGame!StaticLoadObject()
Proto_Win64_DebugGame!ConstructorHelpersInternal::FindOrLoadObject() [c:\program files\epic games\ue_4.18\engine\source\runtime\coreuobject\public\uobject\constructorhelpers.h:35]
Proto_Win64_DebugGame!ConstructorHelpers::FObjectFinder::FObjectFinder() [c:\program files\epic games\ue_4.18\engine\source\runtime\coreuobject\public\uobject\constructorhelpers.h:108]
Proto_Win64_DebugGame!ADummySpawner::ADummySpawner() [e:\documents\project\trunk\project\Proto\source\Proto\character\dummy\dummyspawner.cpp:18]
Proto_Win64_DebugGame!InternalConstructor()
Proto_Win64_DebugGame!UClass::CreateDefaultObject()
Proto_Win64_DebugGame!UObjectForceRegistration()
Proto_Win64_DebugGame!ProcessNewlyLoadedUObjects()
Proto_Win64_DebugGame!FEngineLoop::PreInit()
Proto_Win64_DebugGame!GuardedMain()
Proto_Win64_DebugGame!GuardedMainWrapper()
Proto_Win64_DebugGame!WinMain()
Proto_Win64_DebugGame!__scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:253]
kernel32
ntdll

I believe this issue occurs when GetModuleChecked is called very early, before the FMOD Integration has had a chance to load.

This has been fixed in 1.10.05.

Now the game starts, but the problem is still there.

Fortunally there are logs. It seems that the event system look for not deployed files. Or I need to start FMod before game mode, if I look closer to my previous logs, the class ADummySpawner is loaded before. I keep digging.

[2018.05.10-12.20.50:546][ 0]LogStreaming: Error: Couldn’t find file for package /Game/FMOD/Events/SFX/PNJ/Dummy/Dummy_Attack requested by async loading code. NameToLoad: /Game/FMOD/Events/SFX/PNJ/Dummy/Dummy_Attack
[2018.05.10-12.20.50:546][ 0]LogStreaming: Error: Found 1 dependent packages…
[2018.05.10-12.20.50:546][ 0]LogStreaming: Error: /Game/Characters/Dummy/Animations/MIXAMO/AN_IVA_Attack
[2018.05.10-12.20.50:733][ 0]LogStreaming: Error: Couldn’t find file for package /Game/FMOD/Events/SFX/Avatar/Move/Avatar_Jump requested by async loading code. NameToLoad: /Game/FMOD/Events/SFX/Avatar/Move/Avatar_Jump
[2018.05.10-12.20.50:733][ 0]LogStreaming: Error: Found 1 dependent packages…
[2018.05.10-12.20.50:733][ 0]LogStreaming: Error: /Game/Characters/Avatar/Blueprints/AvatarBP
[2018.05.10-12.20.50:734][ 0]LogStreaming: Error: Couldn’t find file for package /Game/FMOD/Events/SFX/Avatar/Move/Avatar_Crouch requested by async loading code. NameToLoad: /Game/FMOD/Events/SFX/Avatar/Move/Avatar_Crouch
[2018.05.10-12.20.50:734][ 0]LogStreaming: Error: Found 1 dependent packages…
[2018.05.10-12.20.50:734][ 0]LogStreaming: Error: /Game/Characters/Avatar/Blueprints/AvatarBP
[2018.05.10-12.20.51:007][ 0]LogStreaming: Error: Couldn’t find file for package /Game/FMOD/Events/SFX/Objet/Tool/Misc_App/Zoom requested by async loading code. NameToLoad: /Game/FMOD/Events/SFX/Objet/Tool/Misc_App/Zoom
[2018.05.10-12.20.51:007][ 0]LogStreaming: Error: Found 1 dependent packages…
[2018.05.10-12.20.51:007][ 0]LogStreaming: Error: /Game/Accessories/Tablet/Applications/Bleuprint/MiscApp
[2018.05.10-12.20.51:007][ 0]LogStreaming: Error: Couldn’t find file for package /Game/FMOD/Events/SFX/Objet/Tool/Misc_App/Thermal_Vision requested by async loading code. NameToLoad: /Game/FMOD/Events/SFX/Objet/Tool/Misc_App/Thermal_Vision
[2018.05.10-12.20.51:007][ 0]LogStreaming: Error: Found 1 dependent packages…
[2018.05.10-12.20.51:007][ 0]LogStreaming: Error: /Game/Accessories/Tablet/Applications/Bleuprint/MiscApp
[2018.05.10-12.20.51:007][ 0]LogStreaming: Error: Couldn’t find file for package /Game/FMOD/Events/SFX/Objet/Tool/Misc_App/Night_Vision requested by async loading code. NameToLoad: /Game/FMOD/Events/SFX/Objet/Tool/Misc_App/Night_Vision
[2018.05.10-12.20.51:007][ 0]LogStreaming: Error: Found 1 dependent packages…
[2018.05.10-12.20.51:007][ 0]LogStreaming: Error: /Game/Accessories/Tablet/Applications/Bleuprint/MiscApp
[2018.05.10-12.20.51:464][ 0]LogStreaming: Error: Couldn’t find file for package /Game/FMOD/Events/SFX/Avatar/Move/Avatar_Run requested by async loading code. NameToLoad: /Game/FMOD/Events/SFX/Avatar/Move/Avatar_Run
[2018.05.10-12.20.51:464][ 0]LogStreaming: Error: Found 1 dependent packages…
[2018.05.10-12.20.51:465][ 0]LogStreaming: Error: /Game/Characters/Avatar/Animations/AS_Male_Run_Glowstick_01
[2018.05.10-12.20.52:012][ 0]LogStreaming: Error: Couldn’t find file for package /Game/FMOD/Events/SFX/PNJ/Character/Character_Walk requested by async loading code. NameToLoad: /Game/FMOD/Events/SFX/PNJ/Character/Character_Walk
[2018.05.10-12.20.52:012][ 0]LogStreaming: Error: Found 1 dependent packages…
[2018.05.10-12.20.52:012][ 0]LogStreaming: Error: /Game/Characters/Character/Animations/AN_Character_Pistol_Walk_Anim
[2018.05.10-12.20.52:569][ 0]LogStreaming: Error: Couldn’t find file for package /Game/FMOD/Events/SFX/PNJ/Character/Character_Run requested by async loading code. NameToLoad: /Game/FMOD/Events/SFX/PNJ/Character/Character_Run
[2018.05.10-12.20.52:569][ 0]LogStreaming: Error: Found 1 dependent packages…
[2018.05.10-12.20.52:569][ 0]LogStreaming: Error: /Game/Characters/Character/Animations/AN_Character_Run
[2018.05.10-12.20.52:838][ 0]LogFMOD: FFMODStudioModule startup
[2018.05.10-12.20.52:838][ 0]LogFMOD: Lib path = ‘…/…/…/Proto/Plugins/FMODStudio/Binaries’
[2018.05.10-12.20.52:838][ 0]LogFMOD: FFMODStudioModule::LoadDll: Loading …/…/…/Proto/Plugins/FMODStudio/Binaries/Win64/fmodL64.dll
[2018.05.10-12.20.52:839][ 0]LogFMOD: FFMODStudioModule::LoadDll: Loading …/…/…/Proto/Plugins/FMODStudio/Binaries/Win64/fmodstudioL64.dll
[2018.05.10-12.20.52:865][ 0]LogFMOD: Loading strings bank: …/…/…/Proto/Content/FMOD/Desktop/Master Bank.strings.bank
[2018.05.10-12.20.52:867][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/Cutscene/Avatar_Dummy_Vision/Avatar_Dummy_Sequence
[2018.05.10-12.20.52:867][ 0]LogFMOD: Constructing asset: /Game/FMOD/Buses/Voice
[2018.05.10-12.20.52:867][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/Cutscene/Avatar_Dummy_Vision/Event_Ressource/Avatar_Dummy_Start
[2018.05.10-12.20.52:867][ 0]LogFMOD: Constructing asset: /Game/FMOD/Banks/SFX
[2018.05.10-12.20.52:867][ 0]LogFMOD: Skipping asset: bank:/Master Bank.strings
[2018.05.10-12.20.52:867][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/SFX/PNJ/Dummy/Dummy_Attack
[2018.05.10-12.20.52:867][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/Lieux/Car_Crash_Site/Police_Car
[2018.05.10-12.20.52:867][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/Ambiance/Lieux/Forest_Lake/Lake_General
[2018.05.10-12.20.52:867][ 0]LogFMOD: Constructing asset: /Game/FMOD/Buses/Ambiance
[2018.05.10-12.20.52:867][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/SFX/Avatar/Move/Avatar_Run
[2018.05.10-12.20.52:867][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/SFX/PNJ/Character/Character_Walk
[2018.05.10-12.20.52:867][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/Voix/Avatar/Respiration_Walk
[2018.05.10-12.20.52:867][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/SFX/Avatar/Move/Avatar_Walk
[2018.05.10-12.20.52:867][ 0]LogFMOD: Constructing asset: /Game/FMOD/Banks/Voice
[2018.05.10-12.20.52:867][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/SFX/Objet/Tool/Misc_App/Normal
[2018.05.10-12.20.52:867][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/SFX/Lieux/Car_Crash_Site/Police_Car
[2018.05.10-12.20.52:867][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/SFX/Objet/Tool/Misc_App/Zoom
[2018.05.10-12.20.52:868][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/SFX/Lieux/Forest_Observatory/Manette_Generateur
[2018.05.10-12.20.52:868][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/Ambiance/Foret/Amb_Foret_General
[2018.05.10-12.20.52:868][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/SFX/Lieux/Forest_Museum/Generateur_Museum
[2018.05.10-12.20.52:868][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/SFX/Lieux/Forest_Museum/Manette_Generateur
[2018.05.10-12.20.52:868][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/SFX/Objet/Tool/Misc_App/Night_Vision
[2018.05.10-12.20.52:868][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/SFX/Lieux/Forest_Observatory/Generateur_Obs
[2018.05.10-12.20.52:868][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/SFX/PNJ/Character/Walk
[2018.05.10-12.20.52:868][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/SFX/PNJ/Character/Character_Run
[2018.05.10-12.20.52:868][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/Voix/Avatar/Respiration_Run
[2018.05.10-12.20.52:868][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/Cutscene/Allumage_Generateur_Lampadaire/Lampadaire_Sol
[2018.05.10-12.20.52:868][ 0]LogFMOD: Constructing asset: /Game/FMOD/Banks/Master_Bank
[2018.05.10-12.20.52:868][ 0]LogFMOD: Constructing asset: /Game/FMOD/Buses/Reverb
[2018.05.10-12.20.52:868][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/Ambiance/Wind/Wind_General
[2018.05.10-12.20.52:868][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/Voix/Avatar/Avatar_Crouch_Voice
[2018.05.10-12.20.52:868][ 0]LogFMOD: Constructing asset: /Game/FMOD/Buses/SFX
[2018.05.10-12.20.52:868][ 0]LogFMOD: Constructing asset: /Game/FMOD/Snapshots/Group_Test/Snapshot_Test
[2018.05.10-12.20.52:868][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/Cutscene/Avatar_Dummy_Vision/Event_Ressource/Avatar_Dummy_End
[2018.05.10-12.20.52:868][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/Cutscene/Avatar_Dummy_Vision/Event_Ressource/Avatar_Dummy_Loop
[2018.05.10-12.20.52:868][ 0]LogFMOD: Constructing asset: /Game/FMOD/Banks/Ambiance
[2018.05.10-12.20.52:868][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/Ambiance/Foret/Amb_Prairie
[2018.05.10-12.20.52:868][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/Ambiance/Test/TEST
[2018.05.10-12.20.52:868][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/Cutscene/Avatar_Dummy_Vision/Avatar_Dummy_Sequence_Old
[2018.05.10-12.20.52:868][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/Ambiance/Wind/Wind_Fond
[2018.05.10-12.20.52:868][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/SFX/Objet/Tool/Misc_App/Thermal_Vision
[2018.05.10-12.20.52:868][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/SFX/Porte_Fermee
[2018.05.10-12.20.52:868][ 0]LogFMOD: Skipping asset: bus:/
[2018.05.10-12.20.52:868][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/SFX/Avatar/Move/Avatar_Crouch
[2018.05.10-12.20.52:868][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/Voix/Avatar/Avatar_Jump_Voice
[2018.05.10-12.20.52:868][ 0]LogFMOD: Constructing asset: /Game/FMOD/Events/SFX/Avatar/Move/Avatar_Jump
[2018.05.10-12.20.52:875][ 0]LogFMOD: Creating runtime Studio System
[2018.05.10-12.20.52:877][ 0]LogFMOD: Default sample rate = 48000
[2018.05.10-12.20.52:877][ 0]LogFMOD: System sample rate = 48000
[2018.05.10-12.20.52:877][ 0]LogFMOD: Matching system sample rate 48000
[2018.05.10-12.20.52:893][ 0]LogFMOD: Loading Banks
[2018.05.10-12.20.52:894][ 0]LogFMOD: Loading bank: …/…/…/Proto/Content/FMOD/Desktop/Ambiance.bank
[2018.05.10-12.20.52:894][ 0]LogFMOD: Loading bank: …/…/…/Proto/Content/FMOD/Desktop/SFX.bank
[2018.05.10-12.20.52:894][ 0]LogFMOD: Loading bank: …/…/…/Proto/Content/FMOD/Desktop/Voice.bank

This is not a complete solution, but I removed any dependency to Blueprints classes in my C++ code, so FMOD wasn’t needed early anymore. And it works.

I believe the “Couldn’t find file” errors are caused by using the top level ‘FMOD’ folder in the Additional Non-Asset Directories to Package/Copy.
On a side note, only use Package or Copy not both as it is essentially adding the files to the built game twice.
The reason we use the top level folder, is because we cannot specify different paths for each platform from a plugin. This can be achieved by modifying/creating config files for each platform in your project.

After looking into this further, it is definitely something we could document a bit better.
I have made a task to add this to the docs.

This is what you should see in the DefaultGame.ini (among other things):
“[ProjectDirectory]/Saved/Config/DefaultGame.ini”

[/Script/UnrealEd.ProjectPackagingSettings]
+DirectoriesToAlwaysStageAsUFS=(Path=“FMOD”)

Using these config files you can specify the exact bank folder to use for each platform.
eg. FMOD/PS4, FMOD/Mobile, etc.