Server implementation technical question...

Discussion in 'Planetary Annihilation General Discussion' started by portable, September 26, 2014.

  1. portable

    portable Active Member

    Messages:
    113
    Likes Received:
    50
    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?
  2. portable

    portable Active Member

    Messages:
    113
    Likes Received:
    50
    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.
  3. portable

    portable Active Member

    Messages:
    113
    Likes Received:
    50
  4. SXX

    SXX Post Master General

    Messages:
    6,896
    Likes Received:
    1,812
    It's also worth to ping @UberWilliam or @neutrino, but let's say fair your question looks like way too experimental thing.
  5. tatsujb

    tatsujb Post Master General

    Messages:
    12,902
    Likes Received:
    5,385
    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.
  6. DeathByDenim

    DeathByDenim Post Master General

    Messages:
    4,328
    Likes Received:
    2,125
    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.
  7. cola_colin

    cola_colin Moderator Alumni

    Messages:
    12,074
    Likes Received:
    16,221
    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.
  8. portable

    portable Active Member

    Messages:
    113
    Likes Received:
    50
    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)

Share This Page