Cannot host steam sessions in 4.26, 4.27 or 5.0

I have been working 3 days straight at trying to figure out why I cannot host Steam sessions for others to find online.

The problem:
My friends can all host sessions successfully, I can find them and join them (usually)
I can host a session. However, they cannot find my session and therefor cannot join me.
Sometimes, I cannot see their sessions, it seems very intermittent sometimes.

What I have done:
I have tried from the editor with standalone game, launched game from fire explorer, packaged game as development while including the steamapp id txt, as well as shipping.
Followed unreal’s documentation for setting up steam for the project(s), including the .ini file.
Installed the latest steamworks sdk(1.53)
Enabled OnlineSubsystemSteam
Proper execution of host, find, join session nodes.
I have tried unreals standard session classes.
I have tried SteamCore on the unreal marketplace, fancy plugin but no worky.
I have tried AdvancedSteamSessions plugin.
I have DMZ enabled for my PC via Router.
I have ports 7777, 2700-27100 port forwarded
I have query port set to 27015 and game port to 7777 in the .ini file
I have peer to peer connections enabled
I have firewall turned completely off on my pc, and have added exclusivity rules in the advanced settings allowing all traffic on all ports.
I have called my ISP to confirm that they are not filtering ports on their end.
I have connected directly to my modem to bypass all possible router interference.

^^^ Everything I have done I have also tried without. ^^^

I am getting VERY frustrated. I have googled solutions for hours upon hours, asked in help discords, asked the help of many of my friends and to no avail.

I’m pulling my hair out with this, I simply cannot decipher this issue! Please! Anyone with knowledge of networking, help me. Is this an issue I can fix without diving into C++? Can I even fix it with C++? Does anyone here have a working Steam Multiplayer game on 4.26 or higher?

Seeing your post sitting here 7 days no reply… I feel you man, it took me almost 3 weeks to work through this with dedicated server and listen server, and 3 months total, just to get my networking framework to work, using PacketHandlerComponents, etc. Here’s what I found:

  1. Using the Steam ‘Find Servers’ is almost useless, except if you’re using app_id 480, which is just for fun.
  2. I don’t recommend using ‘Stand Alone’ for testing. Notwithstanding all the videos that show this working, I have NEVER gotten it to work. I’m using 4.24.2 - I’m not sure why.
  3. Make your own server browser. It is not difficult and you can send your own session data so that you can find, sort, connect etc.
  4. You need to have a client and server on separate networks. I rent a server from Kamatera for my dedicated testing. But to debug my dedicated server, I need another machine on a different network (is use my phone hotspot and a laptop)
  5. Not delving into C++: this will be very problematical I think, except for the most basic of tutorial level. So I’d suggest you remove this constraint from your list.

To quickly note my experience with Steam networking: I have not ever work with such a difficult networking framework in my professional career, which included more than a year of remote print driver virtualization. There is little documentation that provides any utility for someone trying to figure this out and the doc that does exist is mostly the self-evident doc:

*** example of doc entry **
bool SomeFunctionToCall(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10)

SomeFunctionToCall() is a function to call;
Parameters:
param0
param1
…

Returns: returns true or false

** end doc entry

I have found most of my answers through

  1. Metric tons of trial & error (approximately 300+ hours of building/uploading/updating
  2. 15th comments down in some Stackexchange replys
  3. Prior knowledge of network/socket programming from 25 years professional software engineering experience and applying the theory to Steams networking (which acutally does a pretty good job of matching, so you CAN use other information to help
  4. Read and understand as much the C++ networking code as you can, even if you don’t use the C++, it will tell you what you need to know.

I am a single engineer on a game to be released in May 2022 and have nightmares about all the trouble ticket that will be coming in when release, just for the Steam networking. by the time of release I will have developed for 2 years, 3 months and I’d estimate about 4 months on networking alone.

I think other development TEAMS using UE4 have dedicated Steam network experts working on it full-time. I don’t have those resources. Probably you don’t either.

KEEP AT IT, NEVER GIVE UP: you will eventually work it out, as I have. Just factor in 5x more time to do something than you think it will actually take. It helps.

EDIT: I forgot to mention that any question I have ever asked about Steam networking has not been answered anywhere, except for 1, that referred me to a doc link like the above example.

Hey, sorry for reviving an old post.
Have you managed to make Steam sessions work in 4.27 or 5.0? I actually made it work pretty well in 4.26, but reportedly something is broken in 4.27 in terms of Steam, and apparently 5.0 has the same issue. Sessions just aren’t created =(

1 Like

Hi, I have it working properly in 4.27. PM me and I will try and help you out!

2 Likes

And reviving again. Trying to connect players via Steam and second day no luck. Without bInitServerOnClient=true server ain’t even started. With that flag server is started, but can’t find any session. Tried almost all session settings, like bUsesPresence, bUseLobbiesIfAvailable. Still no connection.

Hey!
Here’s what worked for me: you actually have to slightly modify the OnlineSubsystemSteam plugin. Copy it to your project instead of the engine (just make sure it doesn’t exist in the engine folder anymore; just back it up somewhere).
Just go to your engine folder → /Engine/Plugins/, cut the OnlineSubsystemSteam, paste it to some safe location, then copy it you your project’s /Plugins/ folder (create one if it doesn’t exist);
Then open /OnlineSubsystemSteam/Source/Private/OnlineSessionInterfaceSteam.cpp and somewhere around line 240 add “Session->SessionSettings.bUseLobbiesIfAvailable = true;” Recompile and it’s done. UE now finds Steam sessions.

1 Like

Default sessions were not working for me either in UE5 - Read from other sources that it may be busted out of box, after integrating the Steam Advanced Session plugin, things are now working - suggest you give it a try

Did you get this working on UE5.0?
5.1 was just released, think I might give it a shot on there.
Just such a pain to upgrade the project for a new engine.

It’s working for me in 4.26, 4.27, 5.0 but it wont create a session in 5.1

There are multiple issues at play here and its taken a bit for them all to be addressed.
Advanced sessions and SteamCore have both fixed the “uselobbieswhenavailable” bool that came into the picture and resulted in the default sessions nodes no longer working… their nodes expand the default calls to the OSS interface … however they didn’t resolve the issues with the actual module the interface proxy calls route to meaning clients who have started a session or who start one by default (friends only) would return false after a timeout when trying to run “find sessions” no matter what. This is a bug in later engine versions OnlineSubsystemSteam plugin. Searching for a session while also being a listen server host in these later versions would result in the following log
[2023.12.13-01.45.00:098][828]LogOnline: Warning: OSS: Async task ‘FOnlineAsyncTaskSteamFindLobbiesForFindSessions bWasSuccessful: 0 NumResults: 4’ failed in 15.096867 seconds

I’ve corrected this here GitHub - uno1982/UE4.27_OnlineSubsystemSteamFix: Fix to issues with UE4.27.2 binary engine module

You will still need to pair it with advanced sessions or SteamCore for full blueprint node support. and use their documentation or example projects to get going :slight_smile: