Dedicated Server (Linux, Docker / Edgegap) fails to load GameInstance, but works locally on Windows

Hi everyone,

I’m running into a GameInstance loading issue on a Linux dedicated server build, and I’m hoping to get a second set of eyes from someone experienced with Unreal Engine packaging/cooking for servers.

Project context

  • Engine version: Unreal Engine 5.6.1

  • Project type: ~90% C++, minimal Blueprint usage

  • Target: Linux Dedicated Server

  • Build method: Docker build using Edgegap Extension

  • Engine image:

    ghcr.io/epicgames/unreal-engine:dev-5.6.1
    
    
  • Local builds:

    • Windows cook & package works without any issues

    • Editor PIE and standalone also work correctly

I am building and deploying a Linux dedicated server using Docker (Edgegap).
The server starts, mounts pak files correctly, but fails to load my custom GameInstance Blueprint and then exits because it cannot enter the start map.

The problem

On the Linux dedicated server, Unreal fails to load my GameInstance class and falls back to UGameInstance, followed by a map load failure.

Relevant full log lines from the container output:

LogInit: Display: Game Engine Initialized.
LogUObjectGlobals: Warning: Failed to find object 'Class /Game/FrameWork/BP_RHGameInstance.BP_RHGameInstance_C'
LogEngine: Error: Unable to load GameInstance Class '/Game/FrameWork/BP_RHGameInstance.BP_RHGameInstance_C'. Falling back to generic UGameInstance.

LogNet: Browse: "/Game/Maps/Menu/MainMenu_Level?Name=Player"
LogLoad: LoadMap: /Game/Maps/Menu/MainMenu_Level?Name=Player
LogPackageName: Error: LoadPackage: SkipPackage: /Game/Maps/Menu/MainMenu_Level - The package to load does not exist on disk or is not mounted.
LogEngine: Error: Failed to enter /Game/Maps/Menu/MainMenu_Level
LogEngine: Error: The map specified on the commandline '/Game/Maps/Menu/MainMenu_Level' could not be found. Exiting.

Important detail:
The GameInstance Blueprint exists, is referenced correctly in DefaultEngine.ini, and works perfectly on Windows.

GameInstance setup

  • GameInstance is a Blueprint derived from a C++ UGameInstance subclass

  • Path:

    /Game/FrameWork/BP_RHGameInstance
    
    
  • Config:

    [/Script/EngineSettings.GameMapsSettings]
    GameInstanceClass=/Game/FrameWork/BP_RHGameInstance.BP_RHGameInstance_C
    
    

What I have already tried

  • Deleted:

    • Saved

    • DerivedDataCache

    • Binaries

    • Intermediate

  • Deleted and recreated the GameInstance Blueprint

  • Tested with brand-new maps

  • Resaved all assets

  • Fix Up Redirector References

  • Verified that Windows cook & package works

  • Changed:

    bDontLoadBlueprintOutsideEditor=false
    
    

    in DefaultEditor.ini

  • Moved the GameInstance Blueprint explicitly into /Game/Content

  • Ensured engine version matches exactly between Editor and Docker image (5.6.1)

Despite all of the above, the Linux dedicated server still cannot load the GameInstance.

unreal_dedicated_server_image_log.txt (245.6 KB)

DefaultEngine.ini (23.0 KB)

Any insight or pointers would be greatly appreciated.

Thanks in advance.

It looks like a crutch, but… :roll_eyes:
Add Game Instance blueprint as a Primary Asset in the project settings.

That worked! Also I had a tons of errors that needed to be addressed, stuff I thought wouldn’t affect the server build :smiling_face:

But the asset manager was a good cal! Thank you :smiling_face: