I’m using UE5.6 to create a multiplayer game by using Online Subsystem Steam plugin.
I got an issue with Steam P2P connections in Unreal Engine. When trying to client travel to a Steam P2P session using an address like steam.76561199243353197:7777
, the client will teleport to default game map.
When i created the listen server, the path is /Game/Level/Lvl_MultiplayerLobby, but i saw “LogNet: Browse: steam.76561199243353197/Game/ThirdPerson/Lvl_ThirdPerson” in log, which browse the default map path.
Here’s the log when i tried to use client travel.
[2025.07.08-22.02.29:647][100]LogTemp: Join session enum result: Success
[2025.07.08-22.02.29:647][100]LogOnlineSession: STEAM: Using P2P Data for Connection Serialization
[2025.07.08-22.02.29:647][101]LogTemp: Joinning address: steam.76561199243353197:7777
[2025.07.08-22.02.29:648][101]LogGlobalStatus: UEngine::Browse Started Browse: "steam.76561199243353197/Game/ThirdPerson/Lvl_ThirdPerson"
[2025.07.08-22.02.29:648][101]LogNet: Browse: steam.76561199243353197/Game/ThirdPerson/Lvl_ThirdPerson
[2025.07.08-22.02.29:648][101]LogCsvProfiler: Display: Metadata set : iris="0"
[2025.07.08-22.02.29:648][101]LogNet: InitBase PendingNetDriver (NetDriverDefinition GameNetDriver) using replication model Generic
[2025.07.08-22.02.29:648][101]LogInit: WinSock: Socket queue. Rx: 32768 (config 32768) Tx: 32768 (config 32768)
[2025.07.08-22.02.29:648][101]LogNet: Created socket for bind address: 0.0.0.0:0
[2025.07.08-22.02.29:648][101]LogNet: IpConnection_2147482376 setting maximum channels to: 32767
[2025.07.08-22.02.29:648][101]PacketHandlerLog: Loaded PacketHandler component: Engine.EngineHandlerComponentFactory (StatelessConnectHandlerComponent)
[2025.07.08-22.02.29:658][101]LogHandshake: Stateless Handshake: NetDriverDefinition 'GameNetDriver' CachedClientID: 1
[2025.07.08-22.02.29:658][101]LogNet: Game client on port 7777, rate 100000
[2025.07.08-22.02.29:658][101]LogNetVersion: MultiplayerTest 1.0.0.0, NetCL: 43139311, EngineNetworkVersion: 42, GameNetworkVersion: 0 (Checksum: 2350724970)
[2025.07.08-22.02.29:658][101]LogSockets: Warning: GetAddressInfo failed to resolve host with error SE_HOST_NOT_FOUND [11001]
[2025.07.08-22.02.29:658][101]LogNet: UNetConnection::Close: [UNetConnection] RemoteAddr: , Name: IpConnection_2147482376, Driver: Name:PendingNetDriver Def:GameNetDriver IpNetDriver_2147482439, IsServer: NO, PC: NULL, Owner: NULL, UniqueId: INVALID, Channels: 3, Time: 2025.07.08-22.02.29
[2025.07.08-22.02.29:658][101]LogNet: UNetConnection::SendCloseReason:
[2025.07.08-22.02.29:658][101]LogNet: - Result=AddressResolutionFailed, ErrorContext="AddressResolutionFailed"
[2025.07.08-22.02.29:658][101]LogNet: UChannel::Close: Sending CloseBunch. ChIndex == 0. Name: [UChannel] ChIndex: 0, Closing: 0 [UNetConnection] RemoteAddr: , Name: IpConnection_2147482376, Driver: Name:PendingNetDriver Def:GameNetDriver IpNetDriver_2147482439, IsServer: NO, PC: NULL, Owner: NULL, UniqueId: INVALID
[2025.07.08-22.02.29:659][102]LogNet: Error: UEngine::BroadcastNetworkFailure: FailureType = PendingConnectionFailure, ErrorString = Your connection to the host has been lost., Driver = Name:PendingNetDriver Def:GameNetDriver IpNetDriver_2147482439
[2025.07.08-22.02.29:659][102]LogNet: Warning: Network Failure: PendingNetDriver[PendingConnectionFailure]: Your connection to the host has been lost.
[2025.07.08-22.02.29:659][102]LogNet: NetworkFailure: PendingConnectionFailure, Error: 'Your connection to the host has been lost.'
[2025.07.08-22.02.29:659][102]LogNet: DestroyNamedNetDriver: Name:PendingNetDriver Def:GameNetDriver IpNetDriver_2147482439
[2025.07.08-22.02.29:663][103]LogGlobalStatus: UEngine::Browse Started Browse: "/Game/ThirdPerson/Lvl_ThirdPerson?closed"
[2025.07.08-22.02.29:663][103]LogNet: Browse: /Game/ThirdPerson/Lvl_ThirdPerson?closed
[2025.07.08-22.02.29:663][103]LogNet: Connection failed; returning to Entry
[2025.07.08-22.02.29:663][103]LogLoad: LoadMap: /Game/ThirdPerson/Lvl_ThirdPerson?closed
This issue confused me few days and i don’t konw how to fix it.
below is the config of engine
[/Script/Engine.GameEngine]
!NetDriverDefinitions=ClearArray
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")
[OnlineSubsystem]
DefaultPlatformService=Steam
[OnlineSubsystemSteam]
bEnabled=true
SteamDevAppId=480
bInitServerOnClient=true
[/Script/OnlineSubsystemSteam.SteamNetDriver]
NetConnectionClassName="OnlineSubsystemSteam.SteamNetConnection"
[/Script/OnlineSubsystemSteam.SteamNetDriver]
ConnectionTimeout=25.0
and the code of client travel
void USessionManagerSubsystem::OnJoinSessionComplete(FName SessionName, EOnJoinSessionCompleteResult::Type Result)
{
if (!SessionInterface)
{
if (GEngine)
{
GEngine->AddOnScreenDebugMessage(-1, 15.f, FColor::Red, TEXT("OnlineSessionInterface is not valid"));
}
return;
}
else
{
SessionInterface->ClearOnJoinSessionCompleteDelegate_Handle(JoinSessionCompleteDelegateHandle);
}
MultiplayerOnJoinSessionComplete_Delegate.Broadcast(Result);
UE_LOG(LogTemp, Log, TEXT("Join session enum result: %s"), *JoinResultToString(Result));
FString Address;
SessionInterface->GetResolvedConnectString(NAME_GameSession, Address);
UE_LOG(LogTemp, Log, TEXT("Joinning address: %s"), *Address);
if (GEngine)
{
GEngine->AddOnScreenDebugMessage(-1, 15.f, FColor::Green, FString::Printf(TEXT("Join session connect string: %s"), *Address));
}
APlayerController* PlayerController = GetGameInstance()->GetFirstLocalPlayerController();
if (PlayerController)
{
PlayerController->ClientTravel(Address, ETravelType::TRAVEL_Absolute);
}
}