How To Debug Steam Subsystem create and find sessions?

Hi, I’ve been recently having trouble debugging the Steam subsystem for my multiplayer video game (Unreal Engine 5.1). What’s giving me such a hard time is that I don’t have an error to follow in my packaged development logs. As of now the design is in blueprints. I’ll walk through the blueprints first, then my setup for the steam subsystem.

I’ve set up a GUI for a main menu which allows me to create a session or join a session.

Creating a session is straightforward:

Finding a session is pretty straightforward like so:

I’m fairly confident the logic of the blueprints is sound. On the other hand, the Steam subsystem is pretty black-boxy to me. I’ve read through its documentation and set up the following:

  • Steamworks came packaged with Unreal Engine, so I didn’t need to reinstall it
  • Steam App ID 480 (this is confirmed in logs to be detected)
  • Installed the Steam subsystem plugin
  • Updated DefaultEngine.ini:
[/Script/Engine.GameEngine]
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")

[OnlineSubsystem]
DefaultPlatformService=Steam

[OnlineSubsystemSteam]
bEnabled=rue
SteamDevAppId=480
bInitServerOnClient=true
GameServerQueryPort=27015
bRelaunchInSteam=false
bHasVoiceEnabled=false
GameVersion=1.0.0.0
bVACEnabled=0
bAllowP2PPacketRelay=true
P2PConnectionTimeout=90

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

Also, I saw some things about modifying the Target cs file:

bUsesSteam = true;

And, also the Build cs file:

		PublicDependencyModuleNames.AddRange(new string[] { "OnlineSubsystem", "OnlineSubsystemUtils" });

		PrivateDependencyModuleNames.AddRange(new string[] { "OnlineSubsystem", "OnlineSubsystemNull", "OnlineSubsystemSteam" });

Okay, so here’s what works and what doesn’t:

Launching 2 instances of the game (Standalone or packaged for development) If I run in LAN mode from the same computer, I can have it work as intended (One machine can create a session with no errors, the other can find the session and join it with no errors). I think this is happening via the Null subsystem since from what I read Steam subsystem does not do anything in LAN.

If I run 2 instances of the game (Packaged for development), one on my development machine, and another within a VM on the same network in LAN mode, I can create a session on either machine without any errors in the logs, but neither computer can find the session via my find session blueprint code above.

If I run 2 instances of the game (Packaged for development), one on my development machine, and another within a VM on the same network in Online Mode (2 different steam accounts in the same region), I can create a session on either machine without any errors in the logs, but neither computer can find my session either. The logs do, however, let me know I’m getting other peoples sessions back.

I’ve port forwarded a bunch of different IP’s (including 7777 and 7778). The logs make it look like everything is working, And I can’t really figure out how to narrow this down any further. Any tips? Thanks :slight_smile:

Solved! I ended up replacing my blueprint for creating and finding sessions with the advanced session blueprint plugin and it works like a charm :slight_smile: