Quick answer: Configure DefaultEngine.ini with the right OnlineSubsystem section, enable the matching plugin, and provide platform-specific credentials (Steam app id, EOS DevAuth).
Here is how to fix Unreal OnlineSubsystem failing to initialize so multiplayer features (sessions, friends, leaderboards) do not work. Three pieces: ini config, plugin enable, credentials.
The Symptom
UE_LOG outputs OnlineSubsystem could not initialize on game start. Steam features unavailable.
What Causes This
Missing ini section. Without [OnlineSubsystem] DefaultPlatformService=Steam, no platform is selected.
Plugin disabled. Edit → Plugins → Online Platform → OnlineSubsystem Steam not enabled.
App ID missing. Steam needs steam_appid.txt with a valid app id to authenticate.
The Fix
Step 1: Enable the plugin. Edit → Plugins. Search OnlineSubsystem Steam (or EOS, etc.). Enable. Restart editor.
Step 2: Configure DefaultEngine.ini.
[OnlineSubsystem]
DefaultPlatformService=Steam
[OnlineSubsystemSteam]
bEnabled=true
SteamDevAppId=480
[/Script/OnlineSubsystemSteam.SteamNetDriver]
NetConnectionClassName="OnlineSubsystemSteam.SteamNetConnection"
[/Script/Engine.GameEngine]
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")
480 is Steam’s test app ID; replace with your real one when ready.
Step 3: Place steam_appid.txt. Project root, single line: 480. Steam SDK reads this for development authentication.
Step 4: Verify with logs. On startup, log should say OnlineSubsystem Steam initialized. Failure means a config piece is missing.
Step 5: For shipping, swap to your real App ID. Greenlit Steam app gets a real numeric id; replace 480 in ini and steam_appid.txt before release.
“Plugin enabled. Ini configured. App ID present. OSS initializes.”
Related Issues
For multicast RPC, see Multicast RPC. For game mode override, see GameMode Override.
Plugin. Ini. App ID. OSS works.