Tutorial: a working multiplayer menu
Testing with two players
Set up mock mode and two Play In Editor clients so host, find and join can actually be tested locally.
You cannot test multiplayer with one player, and against real Steam you cannot test it with two windows on one machine either. This page sets up the arrangement that does work.
The problem
One Steam client means one Steam account. Two Play In Editor windows report the same Steam ID, so:
- The second window joining the lobby is the host joining their own lobby.
- Every member of the lobby looks like the owner.
- Nothing about membership, ownership or joining behaves the way it will between two real players.
The fix: mock mode
The mock backend invents identity in the first place, so it can hand out a different one per window.
- Go to Edit > Project Settings > Plugins > SteamForge.
- Set Mock Mode to Always.
Each Play In Editor client now gets its own Steam ID and persona name, while lobbies stay shared across the editor process. Membership, ownership, chat and joining all behave the way they would between real players.
Set up two players
- Open the dropdown next to the Play button and choose Advanced Settings.
- Find Multiplayer Options.
- Set Number of Players to
2. - Set Net Mode to Play Standalone.
Play Standalone is the important one. It gives you two completely independent games that have to discover each other through Steam, which is the thing you are testing. The other net modes wire the two windows together before your menu ever runs, which tests something else entirely.
Run the test
Press Play. Two windows appear, each with your menu.
- In window 1, click Host. Its status reads
Hosting. - In window 2, click Find. The session appears in the dropdown.
- In window 2, select it and click Join. Its status reads
Joined.
Both players are now in the same session. Neither has travelled anywhere, because you unticked Travel back in step 2, and that is exactly the pre-match lobby state you want before a match starts.
When it does not work
| What you see | What it means |
|---|---|
| Find returns nothing | The host window did not actually host. Check its status line. |
| Find returns a session but Join fails | Read the Player Message from the diagnosis. It names which step failed. |
| Both windows show the same persona name | Mock Mode is not set to Always, so both are using the one real Steam account. |
| Nothing happens at all | Run steam.Status. If it reports Available: no, go back to First steps. |
Reading the log
Open Window > Output Log and filter for LogSteamForge. Every step of a host or join prints a line, and the failures say why rather than just that.
Testing against real Steam
Mock mode proves your Blueprint logic. It does not prove Steam works. Before shipping, test with two real accounts:
- Set Mock Mode back to Editor fallback.
- Package the game, or use Standalone Game from the Play dropdown.
- Run it on two machines, logged into two Steam accounts, both owning the App ID you set.
Two accounts on one machine will not work. Steam allows one logged-in account per computer.