New Character

Open the D_Character
Content > MultiplayerLobby > Blueprints > Datatables

datatables.webp

Click Add at the top of the datatable editor

new_character_row.webp

Fill out each field in the new row. You can add as many rows (characters) as needed

character_rows.webp


New Map

Open the D_Maps
Content > MultiplayerLobby > Blueprints > Datatables

datatables.webp

Click Add at the top of the data table window

new_map_row.webp

Fill in the required fields for your new map entry. You can add as many maps as you need

map_rows.webp

The value of MapServerTravel must exactly match the level name in the Content Browser

More Players

Open the WBP_CreateGame
Content > MultiplayerLobby > Widgets

create_game.webp

In the widget's event graph, locate the MaxPlayers and MinPlayers variables
Set the values as needed to define your player limits

change_max_players.webp

Add additional player starts in both the lobby and other playable levels
Without enough player starts, characters may fail to spawn or overlap

Add Enhanced Input

Open the InputActions
Content > MultiplayerLobby > Input > InputActions

input_actions.webp

Right-click in the Content Browser and create a new Action Input

new_input_action.webp

Name it AI_Test and use default settings

Open the InputActionsMappingContexts
Content > MultiplayerLobby > Input > InputActionsMappingContexts

mapping_contexts.webp

Add the new input to IMC_Actions by clicking the icon next to Mappings

new_mappings.webp

First Key default action key
Player Mappable allows players to rebind
Name for internal use
Display Name shown in keybinding menus

Use the keybind in your character blueprint or player controller

action.webp


Add New Audio

Import your audio file into the project

impot_audio.webp

Open the audio file and locate the Sound section

change_sound_class.webp

Choose the appropriate sound class (e.g., SC_Music for music files)
Drag the audio file from the content browser into your level

audio_on_level.webp


Steam Integration

Locate your project's DefaultEngine.ini file
The file path should look like this

default_engine.webp

Copy and paste these lines into your DefaultEngine.ini

[/Script/Engine.GameEngine]
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")

[OnlineSubsystem]
DefaultPlatformService=Steam

[OnlineSubsystemSteam]
bEnabled=true
SteamDevAppId=480

; If using Sessions
; bInitServerOnClient=true

[/Script/OnlineSubsystemSteam.SteamNetDriver]
NetConnectionClassName="OnlineSubsystemSteam.SteamNetConnection"

Installing Advanced Sessions

Download the Advanced Sessions plugin from vreue4.com - Advanced Sessions Library
Create a Plugins folder in your project directory

plugins_folder.webp

Drag and drop both downloaded files into the newly created folder

in_folder.webp

Testing Steam

Open your project and confirm the plugins are successfully installed

enabled_plugins.webp

Launch the game as a Standalone Game to ensure Steam integration works correctly

standalone_game.webp


Steam Sessions

Ensure that Advanced Sessions is installed first

Locate the WBP_CreateGame
Content > MultiplayerLobby > Widgets

create_game.webp

Find and replace the Create Session blueprint node with the Create Advanced Session node

create_sessions.webp
create_advanced_sessions.webp


Find Steam Sessions

Ensure that Advanced Sessions is installed first

Locate the WBP_Matches
Content > MultiplayerLobby > Widgets

matches_widget.webp

Search for the Find Sessions blueprint node in the widget

sessions_node.webp

Replace Find Sessions with Find Sessions Advanced and reconnect all lines to the new node

sessions_advanced.webp


Migrate Project

Create a new project from the Epic Games Launcher for Multiplayer Lobby

launcher.webp

Open the newly created project and right-click on the Multiplayer Lobby folder, then select Migrate from the menu

migrate_project.webp

Locate your project and migrate the Multiplayer Lobby into your Content folder

project_folder.webp

Open Project Settings, navigate to Maps & Modes, and change the default map to MainMenu Change the game instance class to BP_GI_ML

change_project_settings.webp


Troubleshooting

When testing in-engine, the characters are identical
Multiplayer Lobby was designed to work with two different PCs If you are testing the multiplayer lobby on the same PC, the project will use the same save game where players are stored

Lobby flashes when attempting to create a game
Open WBP_CreateGame and find the Open Level node
Remove Listen from the options

Lobby flashes when attempting to create a game in the packaged build

Head over to your project's asset manager and make sure you have packaged your maps with the project

asset_manager.webp

Steam is not showing up even though Advanced Sessions is installed
Make sure that you have completed every section from Steam Integration
Make sure you have pasted the lines into your DefaultEngine.ini file and that there are no duplicates

Packaged game won't open after installing Steam
In some versions of Unreal Engine, there were problems with a plugin called Steam Sockets
Try disabling or enabling the plugin and packaging your project again

Infinite loading screen when loading the map

Maps should be located in Game/MultiplayerLobby/Maps/ and that the names in the datatable and Maps folder matches
If you have changed the location of the Maps folder, you need to update the file path in BP_GM_Lobby and TravelIntoLevel

WBP_Settings_Keybind Error
Error appears if UserSettings are not enabled in the project settings
Edit > Project Settings > Enhanced Input > Enable User Settings
This option is already enabled in newer versions of the engine

enable_user_settings.webp