Hello, new to Unreal and trying to set up a test for creating/finding/joining online sessions via the Steam online subsystem using UE 5.5.2 on macOS. So far I’ve managed the following:
Got Unreal Engine to let me make a C++ based project on macOS (this is trickier than it sounds)
Got a working local online subsystem setup using the default CreateSession and FindSession blueprint nodes
Installed the AdvancedSessions and AdvancedSteamSessions plugins and rebuilt the project
Adjusted the DefaultEngine.ini file to enable the Steam online subsystem, enable bInitServerOnClient, and set the SteamDevAppId to the test ID 480
Swapped the default CreateSession and FindSession nodes with the new CreateSessionAdvanced and FindSessionAdvanced nodes from the above plugins
Packaged a Development binary and confirmed it runs
Opened Steam and added the binary to my Library
Opened the binary through the Steam Library
Confirmed that the Steam overlay appears when pressing shift-tab
So it seams the Steam SDK has loaded and is ready to use. When I create a new session, however, the net code kicks back a NetDriverListenFailure (which I’m seeing by printing the error code to string, since I don’t yet how to access a log for a packaged binary).
I’ve done some extensive searching to get this far and all the mentions of this error I’ve run into to this point have people solving it by doing things that I’ve already done, or who are on older versions of the engine that don’t have the same setups. I gather this probably works out of the box on Windows, and I think it may be a Mac-specific problem.
tl;dr
So my question is: how do I resolve the NetDriverListenFailure error and/or how do I access some sort of log or debug tool on a packaged binary so that I can troubleshoot this?
I’ve seen that post before and came to the conclusion that the port recommendations were intended for a dedicated server. I’m doing a listen-server (per the documentation’s vocabulary), so I understood that to mean that the Steam online subsystem would handle creating the connection between the host user and the client user without needing to open up ports on my home network’s router/firewall.
The thread offered another suggestion—disabling the SteamSockets plugin—but that wasn’t relevant to my situation as it was not enabled in my project.
For any future readers: I did not solve, nor figure out how to debug, the issue I was having with my project. However, I was able to successfully get the Steam online subsystem working in a fresh project.
For those interested, these were my updated steps for UE5.5.2 and Xcode on an Intel Mac:
Open Unreal Editor and create a new C++ project
Wait for the project to open fully, then close it
Download the Advanced Session plugins for 5.5.2 (link)
Create a Plugins folder in the root of the project folder and copy the AdvancedSessions and AdvancedSteamSessions folders from the download into the new Plugins folder
Copy the below configuration code from the Online Subsystem Steam documentation (link) into /Config/DefaultEngine.ini. Be sure to uncomment the bInitServerOnClient=true line as shown below.
[/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"
Reopen the project in Unreal Editor and allow it to rebuild the plugins when it asks.
Open the project settings and delete the default setting for Platforms->Xcode Projects->Mac:Development Entitlements
Open the plugins window and make sure the Advanced Sessions and Advanced Steam Sessions plugins are enabled
Build your session logic using the new Create Session Advanced and Find Advanced Sessions Blueprint nodes
When you’re ready to test, create a Development package
Open Steam and add the package to your Library from the menu bar under Games → Add a Non-Steam Game to My Library…
Use Steam to start your game
Once the game loads, you can check if the Steam SDK initialized successfully by seeing if the Steam overlay opens (shift-tab)
If everything went well, your session code should work correctly
I was also able to package the same project on a Windows machine and have the Mac version connect to the Windows version and vice-versa.