Comment

Comment by lwansbrough

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.

parent lwansbrough 7 years ago

Discussion

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton