Edit: Also read my next post as I changed some things of how I’m doing what I said in this post
So far from my testing I noticed the following (they may not be accurate, and so corrections are welcomed):
1.1: Yes, you should use the same GameMode for all the maps that you use seamless travel to load them.
1.2: From my testing the variables values that I added inside GameMode, GameState, PlayerState (which were set to replicated) didn’t carry over to the new map, but that wasn’t the case with PlayerController, here the variable value did carry over after servertravel X was called. Inside the basic documentation it says that the GameMode should be carried over by default, but in my case it didn’t, so maybe you need to set something for them (GameMode, GameState, PlayerState) to carry over. I’m using UE5, and maybe they changed that behaviour in this version, as the documentation link says 4.27, or maybe they simply forgat to implement this too, as they did with other stuff in 5.0 (like with set style at runtime for some UI elements, which they said will be fixed in 5.2).
//Edit: The statement below (italic) was for first UE versions, now widgets are removed automatically, but you can still make them stay, open this to see how
2: The way that seamless transition work is that any widgets on screen will stay there even when a map is changed. An easy way to remove them is to call Remove All Widgets in Event BeginPlay of the map.
But here I found a problem. On normal maps the Event BeginPlay is called as expected, but when the transition map is loaded, that event doesn’t get triggered. Maybe that is a bug or just how it was made, I can’t say. As a simple test I added a create widget in Event BeginPlay but the widget didn’t showed, and so as an additional test I added only a print string in that event, and it didn’t get called/showed.
3: I can’t say for sure just yet, as the only tests I’ve done were on the same PC with multiple standalone versions of the game. I’ll try later a test with a different PC and see what happens. I can say that on the same PC, all players were send to transition map at the same time, and from transition map to the new map all at the same time.
4: I didn’t found a really good video to share, but I can say that there isn’t really all that much to it. Just make sure that inside your GameMode you have Use Seamless Travel checked, and inside your Project Settings -> Maps & Modes -> Default Maps -> Advanced -> Transition Map (for UE5, in UE4 I think those settings may be different as layout) you set the transition map. That is a map where everyone is send so that the old map is removed from memory, and the new map is loaded into memory. This means that the transition map should be something really small, with not much activity to not impact map switching time. Then when you want to load a new map use the node Execute Console Command and for the String you need to write servertravel followed by a space, and then the name of the new map, and for Specific Player set Get Player Controller 0. And be careful at what information is carried over to the new map, and which you need to set/reset.
Example:
As I said in the beginning, the information may not be accurate so do your own testing to be sure.
