Is Godot suitable for a MOBA style game?

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By rogerdv

Is the network support scalable enough to handle a couple of thousands players?

:bust_in_silhouette: Reply From: Zylann

For such a high number of concurrent players the problem you have to solve extends way beyond Godot (and you must preferably have some experience in the field to handle that). Regardless of the engine you choose here, you will need a really solid network architecture, and that may depend on the game you are doing.
For sure you would not use the high-level networking API which is only tailored for smaller games, but the engine also exposes lower-level functionality to use network in a way that is closer to classic UDP message management (It uses ENet internally).

So, incase I decide to use it, I should avoid high level API and go for the lower lever one. And probably use threads also. But if I correctly design the network architecture, and the hardware is powerful enough, Godot will scale to larger numbers of players?

rogerdv | 2019-12-04 20:18

Network-speaking, this won’t really depend on Godot. The engine only provides you access to the messaging system that should run on clients (and probably servers if you want Godot on server too). I’m not an expert into making such games, but I know it requires careful design and proper hardware to handle the load.

Btw, in which game did you see thousands of players at once on the same map?

Also there might actually be a limitation in the number of active peers, would be worth to check out if that’s the case with ENet. I had a look and found this:

ENET_PROTOCOL_MAXIMUM_PEER_ID         = 0xFFF,

That’s 4096 peers.
But in any case you’re free to even use your own network library. For example if you use C# there is LiteNetLib.

Zylann | 2019-12-04 21:01

A MOBA has only 10 players+observers (we are planning a free for all, 5 teams map, but that is not relevant) per map, but concurrently you have several matches going on, the lobby, etc. Thats why I have to think in terms of thousands of concurrent players.

rogerdv | 2019-12-04 22:15

You could probably use the high-level multiplayer API, as each game will only have 10-20 players at most. Regardless of the API or engine you use, you’ll need to host multiple servers to scale. This is not an easy task, but you may want to look at technologies such as Kubernetes if you’re interested. If you’re just starting out and don’t expect the game’s playerbase to grow beyond a few dozen concurrent players (which is common for indies), a shell script that starts a few server instances will be sufficient.

Calinou | 2019-12-09 18:17

Oh indeed if you only need 10-20 players per match then it’s way easier. You are not planning for thousands of players per game then, because you will very likely have multiple instances of game servers, not a single one. How to manage those game servers is up to you, though.

Zylann | 2019-12-09 18:36