Event-driven Multiplayer Session Subsystem for Unreal Engine (C++ & Blueprints).
Developed and tested in UE 5.7
LobbyManager encapsulates Unreal's Online Session Interface into a reusable UGameInstanceSubsystem, enabling clean multiplayer flows across level transitions.
- Async, delegate-driven architecture
- Full Blueprint support
- Create / Find / Join / Start / Destroy sessions
- Copy the LobbyManager folder into your project's Plugins/ directory (create the folder if it doesn't exist).
- Right-click your .uproject file and select "Generate Visual Studio project files".
- Open the solution and compile.
- Enable the plugin in Edit > Plugins.
To use this plugin with Steam, you must configure your DefaultEngine.ini file located in the Config/ folder of your project.
[/Script/Engine.GameEngine]
!NetDriverDefinitions=ClearArray
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="/Script/SteamSockets.SteamSocketsNetDriver",DriverClassNameFallback="/Script/SteamSockets.SteamNetSocketsNetDriver")
[OnlineSubsystem]
DefaultPlatformService=Steam
[OnlineSubsystemSteam]
bEnabled=true
SteamDevAppId=480
bInitServerOnClient=true
[/Script/OnlineSubsystemSteam.SteamNetDriver]
NetConnectionClassName="OnlineSubsystemSteam.SteamNetConnection"
Also you need to enable the plugins OnlineSubsystemSteam and SteamSockets.
Usage Guide (Blueprints)
The system is designed to be used directly from your UI Widgets (e.g., WBP_MainMenu).
- Creating a Session (Host) Call CreateSession with your desired settings. Bind to the OnCreateSessionComplete delegate to know when to show a loading screen or feedback.
Input: FMultiplayerCreateSessionSettings (Server Name, Max Players, LAN, Match Type).
Event: MultiplayerOnCreateSessionsCompleteDelegate.
- Finding Sessions (Server Browser) Call SearchSession. When the search finishes, the subsystem broadcasts an array of results.
Input: FMultiplayerSearchSessionSettings (Max Results, LAN Query).
Event: MultiplayerOnFindSessionsCompleteDelegate (Returns SessionResults array).
Tip: Loop through the SessionResults array to populate a ScrollBox with your server list widgets.
- Joining a Session Call JoinSession passing the index of the result chosen from the Search array.
Input: SessionIndex (int32).
Event: MultiplayerOnJoinSessionCompleteDelegate.
Behavior: Automatically performs ClientTravel upon success.
- Starting the Game Once in the Lobby, the Host calls StartSession. This finalizes the session registration and moves everyone to the Gameplay Map.
Input: MapPath (String, e.g., /Game/Maps/LobbyMap).
Behavior: Executes ServerTravel with ?listen arguments.
- OnlineSubsystem (Steam / EOS / Null)
