MOBA game style Multiplayer Network System

Dear Unreal Community,

I’m working on a mobile MOBA game now and having some difficulties. I watched the Unreal Engine tutorial on Multiplayer Blueprint that they use Steam Online Subsystem to be able to host game and let clients join game. I searched on some website and would like to ask, do i need a dedicated server for this? as i saw the tutorial video they just plug in those online subsystem then be able to create sessions on Steam and joined by clients. I read the online subsystem documentation that i can use facebook, google play etc… is it true?

And on all MOBA game, normally it’s a match making process like Paragon, League Of Legends, once client click join/play/matchmaking, then clients start to search for match. Well… i don’t need a real match making now, i just need a system that clients click join and they’ll join with other 5 players (3v3)? all 6 are clients, how does server able to create a session automatically? or should i ask how normally MOBA works? is it one of the player will create a session and other clients to join? but the player who create session is client as well? Please advise how can i do this MOBA style multiplayer… thank you very much!!!

Difficult … usually you would have a load of dedicated servers which then do manage the sessions and replicate all networked data to all clients of this session. The problem with this is that the server must reply FAST, so you basically can not use a load of VMs on a handful of servers.

But even this depends on the amount of globals players you expect …
I once did a POC where i created a session which was purely hosted by one client (the one with the fastest and most reliable connection that is). Though you still require a matchmaking server and some basic understanding with UDP hole punching for this scenario. What it does is the following:

  1. All clients connect to the master server (your matchmaking servers, you wanna have a handful of those at least)
  2. By connection via UDP, the client routers will open an outgoing NAT port. Their routers will remember the client which opened this port, thus enabling a kind of a temporary DNAT rule.
  3. Your matchmaking server saves the outgoing port/s for each client and can clearly idenity each player by these.
  4. Now all players need to be informed which ports they can reach other players by.
    X. All players can now theoretically directly connect to each other, using the temporary opened (D)NAT port, which was originally opened by the client (your game) while sending an initial packet to your matchmaking servers. Your matchmaking servers should choose the most befitting client to take the role for hosting a session - this client now will handle further network communication between clients in a role of a typical server. Dont forget that these UDP “Holes” will close themself after 60-180s if you dont re-use them … so while creating the sessions on all clients and the server you want to send some keep-alive packets.

Alright. Understood. So if use the steam subsystem it’ll host in their server or?