Technical Discussion June 18 2010

How to solve the Network synchronization challenge

Some ideas

  • UDP is commonly used for games and TCP for matchmaking
  • Full sync every X
  • timestamp interpolation
  • timestepping, really fast turns that only track player actions. (AI War does this)

Software design

Piper took us through how they do software design in the software systems lab.

Objects

  • players
  • entity
    • ships
    • asteroids
    • projectiles
  • vector
  • hit points
  • input
  • shield
  • damage
  • weapon
  • view

Functions

  • move(entity)
  • accelerate(entity)
  • collision(entity, entity) // may not work in all cases
  • fire(ship, weapon)
  • draw(ship)

server-client model game loop

for p in Players
    input := getinput(p)
    accelerate(ship(p), input)
    fire(ship(p), input))
forall e in entity
    if e.hitpoints <= 0
        destroy(e) // all object have HP?
    move(e)
    checkCollision()

Members present

  • Eric Raue
  • Dave Hughes
  • Jordan Fox
  • Piper Jackson
  • … maybe more but it wasn't recorded.
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License