Steam finding sessions - shipping build

I’ve been trying to get steam multiplayer to work but I’ve ran into some problems using the shipping build.
I’ve tried the multiplayer using Lan mode and it works fine.

This is my setup:

Using steam v132
I got a steam_appid.txt with 480 in it in the folder where the .exe is.
Used the steam setup utility, target.cs has usessteam=true, defaultengine.ini also looks right.
build.cs has: DynamicallyLoadedModuleNames.Add(“OnlineSubsystemSteam”);
Got the 4 dlls in Engine\Binaries\ThirdParty\Steamworks\Steamv132\Win64

Here are the relevant blueprints
Create session
Find session

To test I’m using two diffent pcs with 2 steam accounts.
When using the shipping build (adding it to steam so the overlay etc. shows) the find session function just instantly fails.
When using the development build and creating a session on the pc that has ue4 installed i can find the session on the other pc and join it. When creating a session on the pc that doesnt have ue4 installed i can’t find it on the other pc.

My guess is that even though the overlay shows in the shipping build, the steam online function just fails or is somehow not enabled.

Have I missed some detail or file?

Thanks

Also a tipp for anyone having general problems with steam and ue4, run everything as admin.

Hey there,

I would try setting the Online and Net logs to verbose in your game’s DefaultEngine.ini

[Core.Log]
LogOnline=verbose
LogNet=verbose

and then checkout the log filed saved into GAMENAME/Saved/Logs/

Hopefully some insight of what exactly is wrong can be gained from that

Okay, it’s possible that Shipping doesn’t enable logging, so we can’t look there.

You mentioned you placed your steam_appid.txt beside your .exe file. In a packaged build, there are several exe files. There is one in the main package folder, and there is one in your GAMENAME/Binaries/PLATFORM/ folder. The second of these folders is the one where your txt file needs to be, if it’s not there at currently.

The differences in UE4 code for Shipping and Non-Shipping in relation to Steam are the following: the ability to clear achievements, and the auto generation and cleanup of steam_appid.txt files.

You mention that you also had issues with your non-ue4 computer finding sessions. Are you running the Steam client on both computer? If Steam fails to initialize for some reason, UE4 will instead load the Null onlinesystem, which will only give you basic LAN support as far as session finding goes. The log options I told you about above should help you figure out what is going on, at least in Development builds.

do I need to set anything else? I added it to the defaultengine.ini and it doesn’t generate any log files.

Thanks, I had it there, but if you run the debuggame version it just deletes the old appid.txt. So without the .txt it just failed.

Now that I placed it there again it doesn’t instantly fail anymore.

But the reason I could find sessions seems to be that it just defaulted back to the lan subsystem, because now it can’t find any sessions.

The create session node reports back: creating session and session created.

I looked into the log, but the relevant parts exceed the character limit, so I uploaded it.

game starting at: 15.24.15
creating session at: 15.24.35

Nothing looks too out of place in that log for hosting a match, could you perhaps upload a log of a client doing a search while there is a hosted match?

Dropbox

Seems to be finding 50 sessions, but not the one I hosted as far as I could tell from the lobby id.

Thank you for your help

Steam will filter lobbies for you by your appid, but if there are more than your maximum requested results (50 in this case), you may not find the ones you’re looking for. UE4 session searches and Steam lobby searches support filtering of results based on key/values, but I am unsure how much of that is exposed through your AdvancedSessions plugin. You may want to add some unique game identifier to your sessions while you’re testing under the test app id, so you only get results you care about.

yes there is indeed a filter for that in the advanced sessions plugin, for anyone interested here is how it’s set up

Thank you for your help, seems to work now.

I’ll just have to work out why i can host a session on pc1 and find it on pc2, but not the other way round, logs seem identical.
Gonna have to try on another pc to see what could be up.