Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Spacegame

 Spacegame

Node.js based browser game

Avatar for Bence Dányi

Bence Dányi

December 16, 2015
Tweet

More Decks by Bence Dányi

Other Decks in Programming

Transcript

  1. A project Többjátékos shooter, Asteroids stílusban JavaScript frontend (böngésző alapú)

    JavaScript backend (NodeJS alapú) WebSocket alapú kommunikáció
  2. Architektúra client client client client proxy client proxy game nginx

    reverse proxy resources (images, js, css) koa + ws server game ws conn http conn
  3. Szinkronizáció Probléma: azonos állapot lásson minden kliens Játéklogika replikálása minden

    kliensen Minimális kliens-szerver kommunikáció client controller ws server remote manager remote game local game dispatch(action) send(message) dispatch(action) dispatch(action) send(message) dispatch(action)
  4. Játéklogika Könnyen tesztelhető, (state, action) => state alakú determinisztikus függvény

    state: perzisztens adatstruktúra determinisztikus: azonos bemenetre mindig azonos kimenet környezet független (bárhol futhat)
  5. Játéklogika, folytatás Szimuláció két lépésben: (az akció idejét a szerver

    határozza meg) fizikai szimuláció az „eltelt” időről az akció végrehajtása (fegyver elsütése, stb.) A darabosság elkerülésére a kliens egy „előre szimulált” valósidejű állapotot lát.
  6. Fizikai szimuláció Diszkrét időszimuláció Minden testre erő + forgatónyomaték hat

    Minden időszeletben egyenletesen gyorsuló mozgás „Jó” közelítése egy bonyolult differenciálegyenletnek.