Halo 4 and 5 use a project developed “in house” at Microsoft called Orleans. Roughly speaking it is similar to Akka. It’s an actor based distributed system which attempts to hide the implementation of distributed networking. In essence, each match and each player get their own “network attached“ object (a “grain” in Orleans terms.) So:
var player = new Player(123);
is actually instantiated _somewhere_ on the network (not necessarily locally on the calling server.) Then operating on that object, such as:
await player.FireWeapon();
tells the server (“silo” in Orleans terms) which owns that player instance to invoke that method on it.
In this way, it is very easy to quickly update game state without obsessing over the throughput of a single machine.
In this way, it is very easy to quickly update game state without obsessing over the throughput of a single machine.