OpenLevel calls SetClientTravel, which will disconnect any clients and act like a client. It throws away any state information and doesn’t work with seamless travel
If you call ServerTravel on a multiplayer server, any connected clients will attempt to connect along with the server. It also allows the use of SeamlessTravel, which allows things like player controllers to stay alive across maps.
So basically use ServerTravel if you’re a server and may have connected clients
When using ServerTravel, all PlayerController, PlayerState, GameMode, and GameState instances are preserved. With OpenLevel, apparently these are thrown away and things are started “from scratch.”
Also, ServerTravel will first load everybody into a “transition level” which is by default empty, and then it will load everybody into the target level. This is because there always needs to be an “active” world/level, so loading a new, big, level, while the old, big, level is still loaded, is bad for memory usage.