Skip to main content

Tutorial: Zero to Working Party

A single, linear walkthrough from nothing to a working Steam party with a friend. Every step ends with a checkpoint: a way to verify you're still on track. If a checkpoint fails, stop and check the Troubleshooting section before continuing; later steps cannot work if an earlier one is broken.

info

This tutorial condenses the pages Using Steam Party Menu, SIK Plugin Configuration and SPM Migration Steps into one guided path. Refer to those pages for extra detail and screenshots.

What You Need Before Starting

  • Unreal Engine 5.3+ (the template targets 5.6)
  • Steam Integration Kit (SIK), from FAB or compiled from GitHub. SPM does not work without it.
  • Steam client installed, running, and logged in on your PC. This is the #1 cause of "nothing works": the Steam client must be running before you launch the game.
  • For the final party test: a second PC with a different Steam account (a friend works great). You cannot test a real party alone on one machine, because Steam won't run two accounts at once.

You do not need your own Steam AppID to start. The template ships configured with AppID 480 (Valve's "Spacewar" test app), which any Steam account can use.

Step 1: Get the Project Running

Path A, using SPM as your starting project: create the project from the launcher, open it. Done, go to Step 2.

Path B, adding SPM to your existing project: follow the migration steps to migrate the SteamPartyMenu folder and enable SIK, then come back here. The two important gotchas:

  1. If you already have a custom GameInstance, reparent it to BP_SPM_Gameinstance (Class Settings → Parent Class). If you don't, set BP_SPM_Gameinstance as your Game Instance Class in Project Settings.
  2. Set PartyMenu as Game Default Map in Project Settings → Maps & Modes.

Both paths: verify your Config/DefaultEngine.ini contains the Steam sections from SIK Plugin Configuration ([OnlineSubsystem], [OnlineSubsystemSteam], the NetDriver definitions). The fresh template already has them; migrated projects must add them by hand.

✅ Checkpoint: the editor opens the project with no missing-plugin errors, and Edit → Plugins shows SteamIntegrationKit enabled.

Step 2: Understand PIE vs Standalone (read this, it bites everyone)

Steam does not initialize in normal PIE (Play In Editor). In PIE you can test the locker, settings menus, and save/load, but there is no lobby, no friends, no invites, no party. Anything Steam-related requires launching as Standalone Game: click the three dots next to the Play button → Standalone Game.

This is not a bug and not a broken setup. It's how Steam initialization works in-editor.

Step 3: First Standalone Launch

  1. Open the PartyMenu level (Content/SteamPartyMenu/Maps/PartyMenu).
  2. Make sure the Steam client is running and logged in.
  3. Play → Standalone Game.
  4. If a pop-up asks about different saved settings, choose Keep Current. This is normal on first editor launches; it's the save-validation dialog comparing saved vs current graphics settings.

✅ Checkpoint (visual): you see your character standing on the main pedestal, with your Steam persona name on the name plate, and the party menu UI around it.

✅ Checkpoint (log): open the log. When launched from the editor it is Saved/Logs/<ProjectName>_2.log: the _2 file is the standalone instance, the editor keeps the main one. Look for these lines, in this order:

LogSteamShared: Display: Loading Steam SDK 1.6
LogSteamShared: Steam SDK Loaded!
LogOnline: STEAM: Steam User is subscribed 1
LogOnline: STEAM: [AppId: 480] Client API initialized 1
LogOnline: OSS: Created online subsystem instance for: Steam

and later, once the menu level loads and the party lobby is created:

LogSockets: SteamSockets: Initializing Network Relay
LogSteamSocketsAPI: ... AuthStatus (steamid:7656...): OK (OK)
LogBlueprintUserMessages: [BPC Party Manager] Lobby Data Update

If Client API initialized 1 is missing, Steam did not attach. See Troubleshooting. If it says initialized 0 or the SDK fails to load, same thing. Nothing after this point can work until this line appears.

Step 4: Verify the Lobby Works (still solo)

While in the standalone game:

  1. Open the social menu. You should see your real Steam friends list (this proves the Friends subsystem works).
  2. Type something in the party chat. Your message should appear with your persona name (chat goes through the real Steam lobby, so this proves lobby data flow works).
  3. Open the Locker and switch character/variation. Your avatar should change (and this choice is saved and shared through lobby data).

✅ Checkpoint: friends list shows real friends; chat echoes your message; skin changes apply.

Step 5: The Real Party Test (two PCs)

Now the part that needs a friend (or a second PC with a different Steam account):

  1. Both machines need a build or editor-standalone of the project with the same AppID (480 for both is fine).
  2. Both launch to the party menu and pass the Step 3 checkpoint.
  3. Player A opens the social menu, finds Player B in the friends list, and invites them. B receives the invite notification with sound, and accepting joins the party. Alternatively B can join through the Steam overlay/friends list ("Join game").
  4. B's avatar appears on a pedestal on A's screen and vice versa. The host has a crown. A system message "…joined the party" appears in chat.

✅ Checkpoint: both players see both avatars, chat works both ways, and the host crown shows on the same player for both.

Step 6: Ready Up and Start a Match

  1. The host can open Match Settings and set party size / game mode / map. The other player sees the settings update live (that's HandleOnLobbyDataUpdate doing its job).
  2. Both players press Ready. Pedestals switch to the Ready state and the counter updates.
  3. When everyone is ready, the host automatically starts the game server: the host's game opens the selected map as a listen server, and the client travels to it over Steam sockets a moment later (you'll see the "match starting" overlay).
  4. In the match, both players control their characters with the skins they picked in the menu.
  5. Open the Escape menu to leave. The host can leave with the whole party. Everyone returns to the party menu, still in the same party.

✅ Checkpoint: both players end up in the match level together, and after leaving they're back in the menu still partied up.

That's the complete loop. From here, read Project Architecture to understand what you just exercised, and How Systems Work before modifying anything.

Troubleshooting

SymptomLikely cause / fix
No character, no Steam name, empty friends listYou're in PIE. Launch Standalone Game (Step 2).
Log missing Client API initialized 1Steam client not running or not logged in. Start Steam first, then launch the game.
Loading Steam SDK line missing entirelySIK not enabled, or DefaultEngine.ini missing the [OnlineSubsystemSteam] config (Step 1).
Steam works but lobby/party features misbehaveAnother Steam plugin (or leftover OnlineSubsystem config from one) is conflicting. SIK must be the only Steam plugin. Remove other plugins' config blocks from DefaultEngine.ini.
Game shows as "Spacewar" in SteamNormal with AppID 480. It's Valve's shared test app. Replace with your own AppID in DefaultEngine.ini when you have one.
Invite arrives but joining failsBoth machines must run the same AppID. Also check both passed the Step 3 log checkpoint.
Client doesn't travel to the matchFirewall blocking the game, or the SteamSockets relay wasn't ready. Check the SteamSockets: Initializing Network Relay / AuthStatus ... OK lines on both machines.
"Different settings" popup on every launchHarmless save-validation dialog. Pick Keep Current in the editor; it stops once saved and current settings match.
Weird lobby members / random players in test lobbiesSide effect of shared AppID 480: every developer on Spacewar shares the same lobby space. Use your own AppID for clean testing.
Cloud storage warning notificationSteam Cloud isn't available/enabled for the AppID. Either enable it in Steamworks (your own app), or uncheck Use Cloud Storage? in DA_PM_Settings.

Still stuck? Join the Discord and include the first 50 lines of your standalone log. They contain the Steam init sequence, which diagnoses 90% of setup issues.