LU-LKP-B10:PD client server

From DiLab
Revision as of 19:05, 7 December 2010 by Leo (talk | contribs)
Jump to: navigation, search

Uzdevums - izstrādāt koncepciju un arhitektūru klienta - servera sistēmai, kas realizē daudzlietotāju vidi datorspēlei.

Diskusiju piezīmes.

Iespējamie spēles konteksti:

  • Ceļošana kosmosā
  • Ferma
  • Pilsētas simulators


Serveris

Asinhroni saņemam klienta komandas un ieliekam FIFO buferī.

Ir pasaules karte ar AxB šūnām. Katrā šūnā var būt:

  • objekta kods
  • norāde uz sarakstu ar objektiem

Ir dzīves cikls. tajā:

  • apstrādājam FIFO ar klientu komandām
  • apstrādājam automātiskos notikumus
  • Sūtam klientam atjaunotu informāciju

Uztur informāciju par klientiem:

  • Name
  • IP
  • port
  • lastSeen
  • X,Y
  • alive
  • score
  • ...

Konfigurācijas fails game-config define spēles noteikumus. Konfigurācijas apraksta sintaksei jābūt savietojamai ar citiem serveriem.


Klients

Ir savs FIFO ar darbībām. Sūta serverim komandas


Direktorijas serveris

Uztur informāciju par aktīvajiem serveriem:

  • name
  • ip
  • port
  • lastSeen


Protokols

Client, Server:

  • C=>S: darbības
  • S=>C: izmaiņas pasaulē
  • S=>C: tekošais pasaules stāvoklis
  • S=>C: komandas

Autentifikācija notiek ar "magic number". Alternatīvi autentifikācija notiek ar MD5.

Protokola komandas

Komanda, parametri un dati

  • Ping
  • DirInfo - atgriež informāciju par serveriem no direktorijas
  • RegSer Name, ip,port, magic
  • RegClient Name, ip,port, magic
  • GetMap x,y,h,w
  • Go direction(degrees)
  • GetStat - serveris atgriež klienta statusa info
  • Stat - serveris sūta klienta statusu serverī (alive, dead, restart...)
  • Use tool parameters
  • GameInfo - spēles noteikumi, rīki un iespējas
  • Quit
  • Say text - broadcast text - client to all, or server to client.


Problēmas

Sinhronizācija

Drošība, godīgums

Klientu autentifikācija un identifikācija