Server Travel doesn't Work when I packaged

I highly recommend anyone using Blueprints to use the following method instead of ServerTravel as it will give you much more modular control:

  1. When your Lobby is ready, send all the clients to a “transition” map by making each PlayerController call “Open Level”
    This map can hold anything you like for a loading screen, requires no replication, and should load instantly for clients. The most important part here is that you are sending the SessionID as a variable into the TransitionLevel to guarantee clients know where to go after hanging out in the TransitionLevel.

  2. When the “Send All Clients to Transition Map” is done, have the Server call “OpenLevel” of the actual map you want to go to. Or if you want, just have the Server also go to the TransitionMap but you’ll need to pass another variable reminding the GameInstance that that’s the server.

  3. You can put some looping logic in the TransitionLevel’s blueprint to FindSession of the SessionID. Just keep searching reasonably if the SessionID you have saved exists. Then you can just JoinSession again, which is far more reliable than sort of Server Traveling or Seamless logic.

Benefits are you can have a nice loading screen, and you know that ever client is joining with a completely fresh PlayerController. Ideally ServerTravel would just work though.

4 Likes