I recently started looking at what would be the requirements for developing a fast-based real time (e.g. an FPS) multiplayer game that would work well on internet, as internet multiplayer poses some interesting challenges such as variable lag, data loss, jitter, etc.
I started looking at what the "big players" are doing this domain. For example, the Source Engine has some extensive feature set and solid documentation on supporting this use case, specifically things like:
* Cheat protection (making the server authoritative source of truth)
* Entity interpolation
* Lag compensation
I was not able to find much on these topics in the Godot documentation (I was looking at High Level multiplayer docs).
I'd be happy to contribute to Godot project in this sense, but before digging into the code and trying to understand it myself, I was hoping to get some answers here first:
1) First of all, how does the Client-Server architecture of Godo multiplayer API look like? Specifically, when I for example make an
rpc() broadcast-like call from one of the clients, are these packets sent to other clients in peer-to-peer fashion or do they go thru server in centralized fashion? I think this is important for scenarios such as Cheat protection, where we should assume that every client is potentially hacked and can't be trusted
2) Is there any existing support for some of the features mentioned above? Is there some documentation on this yet? (if not, again, I'll be happy to contribute)
3) Are there any existing games that showcase Godot network code to achieve realtime multiplayer support?
Thanks in advance!