It seems pretty obvious that the units on one planet must be simulated within a single process (perhaps multithreaded, but certainly with either 1x or 2x the number of cores, and probably pinned). However, it's not obvious that units on a second planet would necessarily need to be simulated within the process handling the first planet's units. If so, a multi-process server could be distributed across a cluster, so that instead of handling "large games" and "small games" the cluster manages "large planets" and "small planets" such that load leveling by migrating planets around the cluster can be achieved. Obviously, this architecture would need a "master" process for handling inter-planet movement. A downside of this arrangement is the increase in complexity of connection management: do clients maintain connections to all "planet" hosts in addition to the master process host? Do clients subscribe to a simulation "event feed" from a farm of edge servers? So, my question is - does the Uber cluster work this way, or does it use the more traditional one-game-one-process model?
One additional thought: If Uber will open source the sim server (or at least documents the protocol), then we could build a version that runs the sim inside Docker containers deployed onto a CoreOS fleet, and that would be neat.
It's also worth to ping @UberWilliam or @neutrino, but let's say fair your question looks like way too experimental thing.
wow, that is such a good point! so true. Some clever code ruseing could do month's worth of optimisation there! As I pointed out who cares if rubber-banding occurs between planets? the only time it's unacceptable is for two interacting units on the same plane. where pro-level play would be invalidated.
You seem to be describing MPI. It's a common technique for running massive parallel simulations. Most of the compute clusters for scientific research are made up of individual nodes that use MPI to talk to each other, allowing one to do simulations on a large scale.
I've talked with neutrino about this idea on reddit during the kickstarter. He also mentioned the idea of separate processes, but I doubt they really implemented it as it really is a pretty crazy experimental thing of an idea and I doubt it would be helpful for most game setups.
Fair enough, but PA is pretty much a crazy experimental game. ;-) IOW, the tech risk on this game was already turned up to 11 (spherical planets, destroying planets, protocol "curves", KickStarter)