Download

Servertravle not working for clients

Hey guys! I followed the unreal engine multiplayer tutorial! I have everything like he does, but when i try to start the game, it does travle and give the the server host the widget that i am supposed to give him, but the others are stuck on loading screen

Its impossible to answer to your question.
Post at least screens where your script logic fail (widget, create session etc…)
I done that mp tut too and everything worked.

Okay, I will tomorrow. thanks

So this is the custom event that triggers the server transfer, same as the other guy, just that my maps are not in a map folder, they are inn content.
As you see i have checked the seamless option.
The transition map is set (travle map empty map for travle)

This is my gameengine.ini file

[/Script/EngineSettings.GameMapsSettings]
EditorStartupMap=/Game/Main_Menu.Main_Menu
GameDefaultMap=/Game/Main_Menu.Main_Menu
GlobalDefaultGameMode=/Game/Blueprints/PlayerCardsSystem.PlayerCardsSystem_C
GameInstanceClass=/Game/Blueprints/GameInstance/SB_GameInstance.SB_GameInstance_C
TransitionMap=/Game/TravleMap.TravleMap
ServerDefaultMap=/Game/Main_Menu.Main_Menu

[/Script/HardwareTargeting.HardwareTargetingSettings]
TargetedHardwareClass=Desktop
AppliedTargetedHardwareClass=Desktop
DefaultGraphicsPerformance=Maximum
AppliedDefaultGraphicsPerformance=Maximum

[/Script/Engine.GameEngine]
!NetDriverDefinitions=ClearArray
+NetDriverDefinitions=(DefName=“GameNetDriver”,DriverClassName="/Script/OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="/Script/OnlineSubsystemUtils.IpNetDriver")

[OnlineSubsystem]
DefaultPlatformService=Steam
PollingIntervalInMs=20

[OnlineSubsystemSteam]
bEnabled=true
SteamDevAppId=480
GameServerQueryPort=27015
bRelaunchInSteam=false
GameVersion=1.0.0.0
bVACEnabled=1
bAllowP2PPacketRelay=true
P2PConnectionTimeout=90

[/Script/OnlineSubsystemSteam.SteamNetDriver]
NetConnectionClassName="/Script/OnlineSubsystemSteam.SteamNetConnection"

[Core.Log]
LogOnline=verbose


The lobby is working, all players can find the match and they can choose role which changes a value at the local computer that triggers an event to the branches on the next pictures that are gonna check what widget the player is supposed to get, when i start the game, the HOST comes right inn, loads the proper widget by the choosen player. The joined client however stays at loading screen! This however does NOT happend when playing at the same computer! This event happend when there are two different computers with two different steam accounts after PACKAGE!

Blueprint system:



e28754ec4f41a00c98988a9a1a3f4833ecd89f86.png
a3d5ea486b40476a969c97810691619185014a40.png

All of this is started when the host hits start session, but the problem is that none of these print strings are triggered at the joined client, they only stay at the loading screen.

fd31efc1d95b719e2faa66bef294fff717b5d300.png
Is this how ever correct?

https://answers.unrealengine.com/questions/409874/players-getting-stuck-after-servertravel.html

Maybe this helps? Can’t find the file in the unreal project they are talking about tough

IT didint work, im clueless then…

Is the travel map defined in project setting?

Yes, it is. Its defined as transition map and has no gamemode.

…has this ever been resolved? I’ve got the same stuck on loading screen issue. The host loads into the map of choice but all other players are stuck on the loading screen.

How are you testing this, via the editor? If I recall correctly ServerTravel does not work with PIE. Instead you will have to launch as standalone or package the game.

I was fully aware of the limitation of PIE. This week I finally built my game enough that I exported a Packaged build to confirm if the online worked before releasing to my friend circle. I have not touched any portions of the blueprints that affect online functions. The packaged build allows my bro and I to connect but whoever is not the host gets stuck on the loading screen.

Not sure then, how do you mange the “loading screen”? I’ve fiddled a little bit with this, but I used the Advanced Session Plugin(which I highly recommend) and I was able to play with some friends via Steam. Using the test app ID you’re stuck with a weird region lock, of which there is - not that I know of, any sort of documentation of.

I was able to play with a friend that lives in the UK*(I live in Sweden)*. Sometimes it would work just fine and sometimes not work for several hours.

I don’t know what plugins I need if any. Last night trying to solve this issue I discovered plugins and enabled some like Steam Controller support and Steam Online Subsystem and when I told the Editor to package it required me to install Visual Studio 2015 Community. I launched Standalone and my game connected to Steam as expected under the default name SpaceWar iirc. Unfortunately after installing VS2015 the package process failed almost immediately. I therefore disabled the Steam Online Subsystem and some other things that I enabled and the packaging completed but of course my issue still exists; people other than the Host can not get past the Load Screen.

I did troubleshooting a moment ago and it appears that the players who are not the Host are not being accommodated once they finish loading into the map. The way I discovered this was simple. When players join the lobby they have a LobbyPC (player controller). When they move to the new map they are given GameplayPC (player controller). On the GameplayPC graph I told it to Remove All Widgets when the player pressed Z BUT I did not give this option to LobbyPC. Of course the Loading Screen disappeared and the player was indeed loaded into the map AND they were in control of GameplayPC due to the Z command working. The stuck players could see the Host player without the custom texture on the Base Character so I guess they were the default spectator pawn? Ultimately I guess the additional GameplayPCs, aside from the Host player, were never sent through the GameMode spawn function…I am unsure the best way to fix that.

After a night of trial and error I have deduced a description list of my issue.


Non-Host players do load into the map and are given the new Player Controller.

Non-Host players somehow are spawned at the Network Player Start actor in the map. The Host on the other hand, spawns at the correct desired location every time and has full control of a pawn.

Non-Host players can activate their Player Controller input events but can not move or look around.
+I created an Input event on the Player Controller to Respawn the player. They are respawned at the correct location and with the correct pawn. After the respawn however they maintain the inability to move the pawn or look up/down. They also now do have access to the Pawn Input events and can look Left & Right but the pawn mesh does not move. The Host player does not see any movement.

Non-Host players can see the Host pawn moving around but can not see any bullets, explosions, or other actors spawned by the Host player.

Non-Host players when seeing the Host do not perceive the custom texture color of the mesh. I blueprinted the mesh element to change color based on the Tags on the Actor blueprint. The Non-Host player does not see the new set element, they perceive the Host player as the base color of white no matter if the Host changes Tags mid-game.


I suspect information is not being replicated across clients?

The symptoms experienced in this video are the same when I use two separate computers. The host loads in just fine and the loading screen disappears as intended (see picture below). The client computers on the other hand load in but the loading screen widget does not get removed. This is totally strange because the Remove All widgets is linked to the Begin Play event for Player Controller that is created in the World Settings of the map. What is further strange is the server does spawn the correct pawn at the end of the exe path but the loading screen widget located at the start is never removed.

In the video I press Z for a custom input event to Remove All widgets. The non-host client is unable to walk, jump, or look up/down; they can use keyboard inputs that do not control movement. The Host is totally free to move and respawn without issue.

I am totally stumped. Why are the clients not properly possessing their pawn but the Host can?

27940fe455ab4afffe528dde718aa0c070fa9497.jpeg
vvvvv Respawn Player event connects to vvvvv
7d115b641cedb83a0d8068c6b0c57c4b839e6b86.png

…bump?..

My Solution:

I discovered my problem was the Game State for the world override settings after server travel used Game State Base as the parent. Upon reverting the use of Game State Base to the default “GameState” everything worked fine. I simply had to copy paste from my Game State Base child to the new child blueprint of GameState.