Can Godot netcode scale for large multiplayer scenarios?

I am interested in building a FPS with a large party multiplayer experience. I can see the animation of around 200 characters running and walking in one scene is okay. I am now wondering how the netcode performs at scale for say 64 players in a single match.

Has anyone tried this and are there any videos of stress testing the netcode?

My first multiplayer attempt used Godot as a dedicated server using Godot’s built-in multiplayer support, and it was able to host two players before severely taxing my dual-core 1.86 GHz server CPU. Three players made it nearly unplayable. I didn’t try anything beyond that.

Using Godot as a LAN peer seemed to fare better, but I am not interested in that kind of setup so I didn’t do any stress tests.

It prompted me to create a multiplayer dedicated server system of my own. I only tested up to four simultaneous players, but the server registered a zero load the entire time.

I have concluded that Godot is not suitable as a dedicated server for large multiplayer sessions.

3 Likes

@soapspangledgames
Hey Thank you for providing your perspective on this question. Id been interested in creating a multiplayer game myself using Godot.

It unfortunate to hear that running a dedicated server took up the entire load but I’d be interested to hear more about the game you created and the services/configurations you used to set up your server.

Godot is package with a 3rd party network peer called ENET it has some nice features but by itself is not adequate for 200+ simultaneous players (actually I think it can only handle 32 simultaneous players). you will need to write your own replication code to optimize bandwidth there are plenty of tutorials out there in general.

Although if your objects are easy to synchronize like just returning a position. It could be an easy process. It really depends.

Take a look at this series.

1 Like

I have some information on my YouTube channel (https://www.youtube.com/channel/UCcYmIVCZQDLq4kVT_W3bGlg), but the gist is that I wrote a multiplayer server for Linux in C++ that synchronizes all the players. It handles connections and disconnections and timeouts, transmissions of map data to players, player actions, and a bunch of other things.

The game is a work in progress called Seas of Reverence. Much of the advice I post on the forums comes from what I’ve learned over the last two and a half years of making the game.

3 Likes