Seemless Multiplayer Matchmaking


I’m trying to achieve a seemless matchmaking system kinda like in Journey. Players should be able to start a singleplayer game and then the server from time to time checks whether there are two players in the same point in the story (who aren’t in a session yet) and if so create a session and put them together, without any loading or travel map. But at the moment I have no idea how to achieve this…

At first I thought about using simple listen servers with a custom master server. Players would register via some king of request with this master server and update their progress every once in a while. Then this server could check if there are two matching players, and send a request to create a session to one of them and after getting the session details in a response send another request to joint that session to the other player. But that would result in 2 things, I guess. 1) The second player would see a loading screen while traveling to the server map and 2) if the first player quits the game, the second player would be kicked out as well. So that’s not an option.

Now I’m thinking of some kind of MMO setup, where players can also join and leave without loading. Of course for my game the player would not need to see all the other players and be on his own at first and only if there is one player near him, this player would be made visible. Would that be possible with a UE4 dedicated server? I don’t want to sync every bit of data like positions and everything with a custom server, so I’m hoping I can use UE4’s server for this stuff and just put my matchmaking logic on top of it… But if not: do you think it’s doable for a small team to build a custom server solution for a Journey-like game where players basically can only walk around and activate triggers and stuff?