EOS What is the way for a client to travel game map after joining session?

I create a EOS session and make two players from different networks join to this session. One on windows as standalone from editor the other is packed android game that works on phone.

(x.xx.xx.xxx = ip)

However when I try to move client to server’s level with execute console command“open <SERVER_IP>” I get this error:

[2024.09.10-20.17.52:447][666]LogBlueprintUserMessages: [PingPongMenuPawn_C_0] REGISTER REQUEST SENT
[2024.09.10-20.17.53:156][453]LogBlueprintUserMessages: [PingPongMenuPawn_C_0] THIS CLIENT REGISERED BY SERVER.
[2024.09.10-20.17.53:156][453]LogBlueprintUserMessages: [PingPongMenuPawn_C_0] Moving To Session…
[2024.09.10-20.17.53:157][453]LogNet: Browse: x.xx.xx.xxx/Game/Lvl/PingPong/Menu/PingPongMainMenu
[2024.09.10-20.17.53:157][453]LogInit: WinSock: Socket queue. Rx: 32768 (config 32768) Tx: 32768 (config 32768)
[2024.09.10-20.17.53:158][453]LogNet: Created socket for bind address: 0.0.0.0 on port 0
[2024.09.10-20.17.53:158][453]PacketHandlerLog: Loaded PacketHandler component: Engine.EngineHandlerComponentFactory (StatelessConnectHandlerComponent)
[2024.09.10-20.17.53:158][453]LogNet: Game client on port 7777, rate 100000

then:

[2024.09.10-20.18.13:164][929]LogNet: Warning: UNetConnection::Tick: Connection TIMED OUT. Closing connection… Elapsed: 20.00, Real: 20.00, Good: 20.00, DriverTime: 20.01, Threshold: 20.00, [UNetConnection] RemoteAddr: x.xx.xx.xxx:7777, Name: IpConnection_0, Driver: PendingNetDriver IpNetDriver_0, IsServer: NO, PC: NULL, Owner: NULL, UniqueId: INVALID
[2024.09.10-20.18.13:164][929]LogNet: Error: UEngine::BroadcastNetworkFailure: FailureType = ConnectionTimeout, ErrorString = UNetConnection::Tick: Connection TIMED OUT. Closing connection… Elapsed: 20.00, Real: 20.00, Good: 20.00, DriverTime: 20.01, Threshold: 20.00, [UNetConnection] RemoteAddr: x.xx.xx.xxx:7777, Name: IpConnection_0, Driver: PendingNetDriver IpNetDriver_0, IsServer: NO, PC: NULL, Owner: NULL, UniqueId: INVALID, Driver = PendingNetDriver IpNetDriver_0
[2024.09.10-20.18.13:165][929]LogNet: Warning: Network Failure: PendingNetDriver[ConnectionTimeout]: UNetConnection::Tick: Connection TIMED OUT. Closing connection… Elapsed: 20.00, Real: 20.00, Good: 20.00, DriverTime: 20.01, Threshold: 20.00, [UNetConnection] RemoteAddr: x.xx.xx.xxx:7777, Name: IpConnection_0, Driver: PendingNetDriver IpNetDriver_0, IsServer: NO, PC: NULL, Owner: NULL, UniqueId: INVALID

BP DIAGRAM:
bp nodes: (menupawn bp in menu-level): here player creates a session and become server or join a server and awaiths notify to see if it is registered by server.

bp nodes: (gamepawn bp in game-level):here when server opens the map I report back to other player that I registered it as player.

DefaultEngine.ini:

[OnlineSubsystem]
DefaultPlatformService=EOSCore

[/Script/Engine.GameEngine]
!NetDriverDefinitions=ClearArray
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemEOSCore.NetDriverEOSCore",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")

[/Script/OnlineSubsystemEOSCore.NetDriverEOSCore]
NetConnectionClassName="OnlineSubsystemEOSCore.NetConnectionEOSCore"
bIsUsingP2PSockets=true
MaxNetTickRate=60
NetServerMaxTickRate=60
LanServerMaxTickRate=60
NetClientTicksPerSecond=60
bClampListenServerTickRates=true
MaxClientRate=100000
MaxInternetClientRate=100000

[/Script/OnlineSubsystemEOS.EOSCoreSettings]
DefaultConfigurationName=Cubbler
TickBudgetInMilliseconds=0
+EOSConfigurations=(ConfigName="MyConfigName",ProductId="xxxxxxxxxx",SandboxId="xxxxxxxxxx",DeploymentId="xxxxxxxxxx",ClientId="xxxxxxxxxx",ClientSecret="xxxxxxxxxx",EncryptionKey="1111111111111111111111111111111111111111111111111111111111111111")

[/Script/OnlineSubsystemUtils.IpNetDriver]
InitialConnectTimeout=30.0
ConnectionTimeout=60.0

For above I did not have any idea about EncryptionKey that came as 111… by default from EOSCore and I did not touch it or did anything about it.

Server use this console command:

open MyGameLevel?listen

Client tries to connect like this: [This is the problem part]

On portal I enter P2P bucket id for searching and can see both players are on same session.

What is the way I move to client to server’s level ? :expressionless:

I found the solution I am using a very old version of EOSCore plugin. I found changelog of the plugin on eeldev.com I managed it to work by modifying DefaultEngine.ini and AndroidEngine.ini files. Different versions has different configrations. This makes harder to work with it. Here is config for plugin version 1.8.4.3 (for UE4.26-27). The source of the error is actually “NET-DRIVER”

Here the difference is they mostly used “EOS” but not “EOSCore”

I did modifications:

[OnlineSubsystem]
DefaultPlatformService=EOS

[/Script/Engine.GameEngine]
!NetDriverDefinitions=ClearArray
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemEOS.NetDriverEOS",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")

[/Script/OnlineSubsystemEOS.NetDriverEOS]
NetConnectionClassName="OnlineSubsystemEOS.NetConnectionEOS"
bIsUsingP2PSockets=True
MaxNetTickRate=60      ; //OPTIONAL
NetServerMaxTickRate=60    ; //OPTIONAL
LanServerMaxTickRate=60    ; //OPTIONAL
NetClientTicksPerSecond=60   ; //OPTIONAL
bClampListenServerTickRates=true   ; //OPTIONAL
MaxClientRate=100000   ; //OPTIONAL
MaxInternetClientRate=100000   ; //OPTIONAL

Now;

  1. For SERVER: opening it as Open Level By Name/Object with param “listen”
  2. For CLIENT: Execute Consoel Command → “open EOS:SessionOwnerID:GameSession:97”

SessionOwnerID refers to ProductUserID of the session creator. Passing this by server attributes good way to get it.

hi gomi,
thanks for sharing this post about EOS, i am going to explore this module too, hoping to have a easy life when i twist it …

1 Like