Creating multiplayer and Godot limitations?

Godot Version

Godot_v4.2.2

Question

so I am researching Godot, and have 4.2.2 version, I want to make a multiplayer game, that I want to have a server hosting the game… BUT, what I envision, is… when a player goes to “Create” a new game, I want the server to spin up a new instance of that game, so all the players can join “That” game, I am not sure what this is called, similar to what Valorant is doing, but not sure if Godot has that ability. I want to do this because I want it to be server Authoritive as much as possible… for cheating purposes… I know its Impossible to get it 100 percent not cheatable… but if i can prevent it… it would be great… plus… I am coming from Unity and C# background… so i know a little bit of code… i tried Godot C#, sadly documentation is limited, so I would have to learn GDScript which is fine with me.

thanks in advance, any input helps.

The documentation explains barely everything you need. It shows a peer to peer connection, which is pretty similar to a server client architecture in Godot.

For something of this complexity you should use C#, at least for the server backend.

Create your master server application with the player auth logic and start your game server instances from it. In C# you can simply use Process.Start (or advanced libraries like CliWrap). Make sure to run Godot server instances with the --headless command line parameter to disable audio and rendering.

For the actual multiplayer networking you can use the Godot API (either in GDScript or C#) or any C# networking library you like. If you are coming from Unity that might be easier for you, as some of them are compatible with Godot/.NET in general. (DarkRift 2, Riptide, LiteNetLib, just to name a few…)

I am wondering about that… I am trying this with riptide, but then I run across the issue of bubbling up the packets to the GDScript layer on the client side from the c# layer. I figure the same issue will occur in every situation where you have to either call GDScript script methods from C# or figure out a way to capture c# events in GDScript.

From what I’ve seen on reddit, the calling portion is extremely expensive to where it isn’t worth it calling multiple times a second (as with the case for networking). I wonder if anyone was able to figure that out.