Hi, I’m having an issue that when the server do an servertravel, all the clients are sent back to the menu and disconnected, while the server(client host) travels normally. This issue only occurs when testing on steam, in LAN the servertravel works just fine. Creating or joining session in steam works just fine as well, since in the lobby everyone is there, can chat in-game etc…
I’ve looked around and no one seems to know the answer in bp.
Help me, please!
I am having the exact same issue in 4.10. I’ve read somewhere, that using seamless travel should do the trick, but I haven’t come around to properly testing it yet. If I am successful, I’ll let you know.
I successfully tested servertravel with the Steam Subsystem using seamlesstravel. All you need to do, is activate the seamless travel checkbox on the GameMode-Blueprint and configure a Transition Map in the project settings.
Downside: You can’t use Play-In-Editor with multiple clients anymore, since seamlesstravel is not supported when running in single process. Launching multiple instances of the game on the same computer won’t really work either, since Steam does not support that, so you are basically forced to test multiplayer with multiple PCs when using Steam subsystem :(.
Edit:
I guess there is the workaround of closing Steam and then launching multiple game instances, though…
Well, I just tested on steam and it happens the same thing when launching multiple instances on the same computer.
The server creates a session and open level to the lobbymap, the client joins the session and is sent to the same map of the server, which is the lobby map, all good.
When the players are ready, the server calls for the server travel to the match map. (bSeamlesstravel true).
The server loads and waits for all the players to start the match.
The client seems to be inside the desired map, but it keeps loading. The things that occurs in the server are not replicating to the client yet, and the game is not freezed, since there’s an ambient sound playing in the client, you can tell the things are not replicating by the light colors. (And yes, it works and replicates perfectly fine this and all the other things in LAN with bseamlesstravel false, otherwise, even in LAN this issue happens if bseamlesstravel is true).
Last but not least, another curious thing is that if the client that was trying to travel with the server quits the game, the server starts the match (as it should), he spawns a character, but does not give the possesion to the server player(server-client), this is totally odd, since it does spawn the correct number of player characters(in case, 1), but it’s not automatically giving the possession to the player, which occurs pretty much always in all other situations.
By the way, the travelmap is a blank map. I don’t know if there’s something to do there.
Hmm, this is the exact same behavior i experienced before I activated seamless travel. Can you double check your lobby-game mode that seamless travel is enabled? Seamless travel always has to be enabled on the game mode of the level you are traveling away from.
Also search your Logs to see what is printed the moment your client disconnects and returns to the main menu. (Saved/Logs)
This is the log of two instances of the game. (this time I couldn’t test on steam but the log seems to show a problem)
both logs of the servertravel as attachment. link text
[note:] you can see at 51.41, there’s a jump to 52.22. It’s the time I’ve waited for the client to connect… until I intentionally closed the server by returning to the menu (on the serverclient). There’s no log between this time.
I found this in particular…
[2015.12.02-05.51.41:079][618]LogOnline:Warning: NULL: Can’t start an online session (Game) in state InProgress "
This might be the problem, but I don’t know what to do.
~Sorry for commenting just now~
Well, even after activating the seamless travel it actually didn’t work for unknown reasons. I say for unknown reasons because when I did the exactly same thing on a new project and activated the seamless travel, It worked. Just LOL,
Same problem here. I have tracked it down to the network or disk speed of the server vs. the client.
If the client has a fast disk drive (Solid State Drive) and the server has a old, actual spinning disk, disk drive, then when the server tells the clients to travel, the client gets throught the transition level load, and then the new map load very fast, and the server is still loading the transition map. Then the client’s final map is loaded but has no tick, and never gets a BeginPlay event either.
Looking in the C++ code for the core engine there is a property in NetDriver.h, float ServerTravelPause, that then is copied into the world as a countdown timer on the travel map loads (World.cpp NextSwitchCountdown). It can be set in Engine.ini with
ServerTravelPause=4.0
But has no effect in the Steam Net Driver. (It is used in tcpIp NEt Driver and WebSocketNetDriver)
The comment on the variables is " Amount of time to wait before traveling to next map, gives clients time to receive final RPCs @see ServerTravelPause"
Also in void UWorld::ServerTravel(const FString& FURL, bool bAbsolute, bool bShouldSkipGameNotify)
There is an intersting comment:
if we’re not already in a level change, start one now
If the bShouldSkipGameNotify is there, then don’t worry about seamless travel recursion
and accept that we really want to travel
“travel recursion” ?
So maybe the real question is: How does one get ServerTravelPause to work in Steam’s Net Driver?
P.S. This bug is a complete show stopper for Unreal Engine multiplayer. Better known as a “Critical Bug”