Unable to find Steam dedicated server session

Hi,

I am currently working on the migration of our game on Steam and have successfully managed to create a Steam session when a client hosts a multiplayer game which can then be found and joined by other clients.

However, I am struggling with the migration of our dedicated server application.

I’m using two different scenarios (which should both work in theory):

Public dedicated server on Internet (bIsLANMatch and bUsesPresence set to false in the session settings)

In this case the problem is that clients can’t find the server using a session research.

In the server’s log, everything seems to be OK. I even activated LogOnline verbose to be able to check everything in detail. The session is created successfully, in the log I can see the Server SteamP2P IP, the Server IP, the Master Server Data and the Aux Server Data. I even used directly two methods from the Steam API to check if the Anonymous authentication worked and to log the session’s owning user name.

Dedicated server on LAN (bIsLANMatch and bUsesPresence set to true in the session settings)

In this case, the server crashes when a client initiate a LAN session research.

The session seems to be created successfully, and the server is listening for LAN beacon requests but I don’t seem to be logged in (even though I started the dedicated server from the Steam client) and therefore the session has no OwningUserId and this causes a server crash when a client starts a LAN session research in FOnlineSessionSteam::AppendSessionToPacket.

Additional information

I implemented the RegisterServer method of our GameSession class to create a Steam session, passing 0 as HostingPlayerNum, since I can’t get a FUniqueNetId from a local player like in the case of a client hosting a game.

I used this page to open UDP and TCP ports on our router even if all my tests are done on a local network for now, but it didn’t help.

I am using two different PC on Windows with two different steam accounts.

I tried launching my dedicated server using the Steam client (I uploaded the dedicated server application on Steamworks, we have an APPID for it) and directly using a script file but with the Steam client running. I even tried installing it using SteamCMD.

I attached a cleaned version of the log file for each case, leaving only relevant entries.

Does anyone have an idea on what I could be missing?

We’ve had the same issue and so far no one has been able to help. I will suggest one of the following 4 solutions to this issue

1: Find an external networking SDK which includes a dedicated server (such as PhotonSDK & Photon Server) and integrate this into UE4 yourself, this may require quite a bit of work. You will also need to integrate the SteamSDK to the networking SDK you’ve chosen (and not UE4!)

2: Hope that Epic sees this and is able to overhaul both their documentation as well as troubleshooting and error logs, Unity handles this a lot better than UE4 at this moment and of all the engines i’ve worked with UE4 is sadly one of the worst in this department.

3: Make the required changes to the engines source & SteamSDK to fix the issues yourself

4: Use an alternative engine, UE4 is extremely powerful and in almost all cases it is the engine I’d reccomend above all others, sadly though it’s dedicated server support and some of (but not all!) its networking is VERY outdated and is prone to similar issues as the one you’ve described. Multiple people have probed Epic about this but it seems to be very low priority and I don’t have confidence that it will be fixed for quite some time.

Thanks for the answer.

I managed to make it work, and turns out everything was ok. I just had to place the steam_appid.txt file at the root of the game’s directory (and not in [GameDir][ProjectName]\Binaries\Win64) with the game’s appId in it and start the dedicated server manually (not using the Steam Client) while logged in to Steam. When I start the dedicated server using the Steam client it modifies the steam_appid.txt file replacing the game’s appid by the dedicated server’s appId and it doesn’t work.