Diablo-Like level travel

Let say you want to implement a Diablo-Like game in Unreal Engine where there is a Level called “Town” where players can use a portal to “Travel” to other level…

Now in Diablo, one player can stay in Town while another player can go to another map and play.

I’m trying to achieve this : have two players on seperate levels on the same server.

I compiled UE5.1 from source, and setup a Dedicated server to which clients connects.

Now, for the part where I want the players to change levels individualy, the way I understand it, I need to have a game mode with Seamless travel enable and call “ClientTravel”, right ?

When I do that, from the server, it does move the player to the other map, but the pawn/controller is not working.

APlayerController::ClientTravel :
If called from a server, will instruct the particular client to travel to the new map (but stay connected to the current server)

Is this the correct way to do this?
Thanks

I’ve been thinking a lot about this, and if someone knowledgeable on the subject reads this, I just would like to know if my ideas are on the right path.

1: Instanciate the zone: for example, if the player wants to travel to “the mine” from “town” We fire up the loading screen, instanciate the “mine” zone in the current map, and teleport the player there. Then the loading screen fades out, giving the impression that the player is on another map, but he’s not.

2: Multi-server instances: have a server running the map “Town” and another running “Mine”. Have something like an instance manager with Dockers run them. When the player “travels” to a zone, it, in fact, disconnects from one server and connects to the other.

Is it right to think that idea #1 is a good/easy approach for a multiplayer game and idea #2 is better suited for an MMO game? Mixing it with level streaming and such?

Thanks for your input.

I would do this with Level Streaming. In the case of an MMO you would do server shards that each run an instance of their own level.

Keep in mind that Level Streaming will load in the level for all connected clients when the server loads it in.

The new level instances system will not load in for more than the client it loads on if you attempt to use that new UE5 feature. It also will not replicate actors.