Hi everyone,
I’m currently working on a multiplayer game designed for fast-paced, competitive sessions with up to 16 players. I’m trying to decide between using Netcode for GameObjects and Netcode for Entities for networking.
Unity recommends using Entities for this kind of game, but I’d like to better understand the advantages and disadvantages of using Netcode for GameObjects if I choose to go that route instead.
Any insights or advice would be greatly appreciated!
Thanks in advance!
Well, NGO doesn’t have the necessary features for serious competitive games. But casual competitive would work.
Main missing feature for serious competitive (eg tournaments) is server-side rollback and reconciliation. Meaning, client A fires at a moving client B and from A’s point of view it was a headshot. But because the hit message arrives at the server with latency, it will be registered as a miss.
Server-side rollback would however apply the hit back in time, eg rolling back the game simulation to a previous point, apply the client input, then re-simulate everything again up until the “now” time to ensure the simulation is accurate. You could try to implement that on top of NGO but it’ll require a deterministic game simulation.
For 16 players you may also have to use custom serialization and synchronization in general. Can’t speak of NfE but for NGO I find the overhead added by individual NetworkTransform (and other) components severe. They are designed to handle every imaginable use case but not designed for minimal bandwidth usage nor configurability.
Writing custom net serialization code is what you’d have to do when implementing a fast-based competitive game anyway.
However, if you have little to no networking experience and never used Entities either I’d strongly recommend NGO (or Fish-Net) because it’ll be easier to make progress at least initially.
1 Like