20070706 - 510 Players on Screen at 128 Kbps


Here is the paper napkin model which started the idea behind the network logic for Atom, a massively multi-player online game with first person shooter interactivity.

  1. Mixed P2P and server centric model.
  2. Maximum of 256 minimum sized UDP packets/sec.
  3. Goal to get as many players interacting at one time as possible.

Key concepts.

  1. Only send what players are looking or interacting with.
  2. Closer players need to interact at higher frame rates.
  3. Distant players need not interact at high frame rates.
  4. Probably don't want to draw over 1000 players at one time.
  5. Don't need more than 16fps of position updates for any player.
  6. Players out of view need to be updated less frequently.
  7. Players not being targeted need to be updated less frequently.
  8. Player movement will be predicted and corrected when actual position is transmitted in a fluid way.

Using the idea that players are sending packets directly to other peers to notify the peers of player movement and action, here is one possible fixed distribution of 256 packets to support 510 players on screen at a given time,

  1. 32 packets -- for 2 players -- gives 16 updates per second (targeting)
  2. 32 packets -- for 4 players -- gives 8 updates per second (close)
  3. 32 packets -- for 8 players -- gives 4 updates per second (near)
  4. 32 packets -- for 16 players -- gives 2 updates per second
  5. 32 packets -- for 32 players -- gives 1 updates per second
  6. 32 packets -- for 64 players -- gives 0.5 updates per second
  7. 32 packets -- for 128 players -- gives 0.25 updates per second (far)
  8. 32 packets -- for 256 players -- gives 0.125 updates per second (distant)

Now actual breakdown of packets would have to change dynamically in the game, but this shows that interacting with 510 players is possible. Having another 10,000 to 60,000 players that are in very distant areas of the world and switching them in and out of the local pool of around 510 interactive players, would be an easy way to support a massively online game with first person shooter interactivity.