Client can't connect to Steam Listen Server in UE 5.5 w/ Seamless Travel

I want to use Seamless Travel in my project to speed up the client travel time (which, without Seamless Travel, takes almost 15 seconds even though the actual map load only takes 1 second). When I enable Seamless Travel on the Server and Client by setting the flag in the Game Mode and creating a Transition level however, the client never connects.

Here is the log starting from the time I click the Connect button:

[2025.01.08-03.10.08:742][508]LogOnlineSession: STEAM: Using P2P Data for Connection Serialization
[2025.01.08-03.10.08:742][509]LogGlobalStatus: UEngine::Browse Started Browse: "steam.76561198252961387/Game/FieldOfHeroes/Maps/FrontEnd/L_FrontEnd"
[2025.01.08-03.10.08:742][509]LogNet: Browse: steam.76561198252961387/Game/FieldOfHeroes/Maps/FrontEnd/L_FrontEnd
[2025.01.08-03.10.08:743][509]LogCsvProfiler: Display: Metadata set : iris="0"
[2025.01.08-03.10.08:743][509]LogNet: InitBase PendingNetDriver (NetDriverDefinition GameNetDriver) using replication model Generic
[2025.01.08-03.10.08:748][509]LogNet: Display: SteamNetDriver_2147481637 bound to port 7777
[2025.01.08-03.10.08:748][509]LogNet: SteamNetConnection_2147481574 setting maximum channels to: 32767
[2025.01.08-03.10.08:748][509]PacketHandlerLog: Loaded PacketHandler component: Engine.EngineHandlerComponentFactory (StatelessConnectHandlerComponent)
[2025.01.08-03.10.08:749][509]LogHandshake: Stateless Handshake: NetDriverDefinition 'GameNetDriver' CachedClientID: 1
[2025.01.08-03.10.08:749][509]LogOnline: STEAM: Adding user 76561198252961387:7777 from RegisterConnection
[2025.01.08-03.10.08:749][509]LogNet: Game client on port 7777, rate 100000
[2025.01.08-03.10.08:749][509]LogNetVersion: FieldOfHeroes 1.0.0.0, NetCL: 37670630, EngineNetworkVersion: 36, GameNetworkVersion: 0 (Checksum: 2476364291)
[2025.01.08-03.10.08:750][509]LogLoadingScreen: Showing loading screen when 'IsShowingInitialLoadingScreen()' is false.
[2025.01.08-03.10.08:750][509]LogLoadingScreen: We are connecting to another server (PendingNetGame != nullptr)
[2025.01.08-03.10.08:750][509]LogStreaming: Display: FlushAsyncLoading(185): 1 QueuedPackages, 0 AsyncPackages
[2025.01.08-03.10.08:753][509]LogRHI: ShaderPipelineCache: Batch mode changed (1): Size: 1 -> 50, Time: 0.000000 -> 16.000000
[2025.01.08-03.10.08:754][509]LogCore: Display: Setting hang detector multiplier to 1.0000s. New hang duration: 0.0000s. New present duration: 0.0000s.
[2025.01.08-03.10.08:754][509]LogLoadingScreen: Loading screen showing: 1. Reason: We are connecting to another server (PendingNetGame != nullptr)
[2025.01.08-03.10.13:739][289]LogLoadingScreen: Loading screen showing: 1. Reason: We are connecting to another server (PendingNetGame != nullptr)
[2025.01.08-03.10.18:770][238]LogNet: Initial Connect Diagnostics: Sent '10' packets in last '10.027588' seconds, no packets received yet.
[2025.01.08-03.10.18:803][239]LogLoadingScreen: Loading screen showing: 1. Reason: We are connecting to another server (PendingNetGame != nullptr)
[2025.01.08-03.10.23:804][389]LogLoadingScreen: Loading screen showing: 1. Reason: We are connecting to another server (PendingNetGame != nullptr)

Here’s what sticks out in my mind:

  • “Sent ‘10’ packets in last ‘10.027588’ seconds, no packets received yet.” - Could there be a comms issue?
  • “Browse: steam.76561198252961387/Game/FieldOfHeroes/Maps/FrontEnd/L_FrontEnd” - The client should not be trying to go to the Front End; it should be going to another level named L_Lobby.
  • The transition level isn’t mentioned once in the log.

Here are my Net Driver definitions:

[/Script/Engine.Engine]
!NetDriverDefinitions=ClearArray
; Uncomment the next line if you are using the Null Subsystem
;-NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="/Script/OnlineSubsystemUtils.IpNetDriver",DriverClassNameFallback="/Script/OnlineSubsystemUtils.IpNetDriver")
; Uncomment the next line if you are using the Steam Subsystem
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")
; Uncomment the next line if you are using the Steam Socket net driver plugin
;+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="/Script/SteamSockets.SteamSocketsNetDriver",DriverClassNameFallback="/Script/SteamSockets.SteamNetSocketsNetDriver")

Any ideas as to why the client won’t connect?

I figured out my issue, and it was due to UCommonSessionSubsystem:

I leaned heavily on UCommonSessionSubsystem when implementing my game’s session management. In that class are two calls to ServerTravel: One for hosting an offline session, and the other called after an online session is created. My project effectively does the same thing.

By effectively replacing these calls withUGameplayStatics::OpenLevel with a “listen” parameter, and not writing to PendingTravelURL in my own project, I no longer have the issue.

I think the expected flow for a server is to: Create the session, call OpenLevel with “listen” as the options parameter; and then for each subsequent level change, use ServerTravel. I also don’t think ServerTravel was intended for use in offline play.

3 Likes

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.