Is there anyone who can run the Online Subsystem Steam properly in UE 5.6?

The default map workaround is specifically for dedicated servers. I guess your problem is somewhere else. Double and triple check your online subsystem ini settings to use the new SteamSockets.

Posting here one possible solution. It seems that the host fails to open a listen server automatically in 5.6+ by simply adding a ?listen into the ServerTravel function. I managed to fix this by manually listening for connections after OnCreateSessionComplete is called before calling ServerTravel()

UWorld* World = GetWorld();
if (World && World->GetNetMode() == NM_Standalone)
{
   FURL ListenURL;
   ListenURL.Port = 7777;

   FString Error;
if (!World->Listen(ListenURL))
{
   UE_LOG(LogTemp, Error, TEXT("Failed to start listen server: %s"), *Error);
   return;
}
UE_LOG(LogTemp, Log, TEXT("Listen server started successfully on port %d"), ListenURL.Port);

}`

This fixed the issue for me. Everyone might not have the same issue though.

2 Likes

In 5.7 the same problem, your solution solve it

I had been beating my head against a wall for about two days, I finally said the right words in ChatGPT and I think it pulled together the findings in this thread.

I made a reddit post in case anyone wants the current solution in a summarized manner → https://www.reddit.com/r/unrealengine/comments/1r1kesf/solved_servertravelclienttravel_with_online/

I hope I can get some sort of communication if this is fixed in an upcoming release.

The key issue with 5.6 is the new SteamSockets subsystem doesn’t support non-seamless travel. If you haven’t built your game for seamless travel, you’re bound to run into various issues ranging from simple to fix (PostLogin vs HandleStartingNewPlayer in game mode) all the way to weird streaming issues.

The aforementioned CL revert in this thread above didn’t work for me. It seems the options based on my research (and solution) is:

Revert back to using the old steam socket subsystem that is part of the steam online subsystem itself OR fix the internals.

I fixed the internals for our project by keeping the underlying steam socket open and cleaning up the NetDriver and layers above the API-level. This isn’t a “trivial” fix and requires rebuilding the engine with some pretty deep cuts into the subsystem. At some point soon I want to put my changes onto GitHub but haven’t gotten around to it yet.

Solution I have is working quite nicely, we’ve had no issues with 100+ playtests since the fix went in. I made this change on 5.6 and it merged really nicely into 5.7.4. No guarantee into the future but I imagine a fix for this might be aways out.

2 Likes