Difference between revisions of "LU-LKP-B10:PD client server"
|  (→Protokola komandas) | |||
| Line 79: | Line 79: | ||
| * Say text - broadcast text - client to all, or server to client. | * Say text - broadcast text - client to all, or server to client. | ||
| ==== Datu paketes struktūra ==== | |||
| Katram ziņojumam ir sekojoša struktūra: | |||
| * FSTART - char[1] = FSTART | |||
| * msg_id - char[ MSG_ID_SIZE ] | |||
| * msg_type - char[ MSG_TYPE_SIZE ] | |||
| * params - char [0 - *] - atkarīgs no komandas | |||
| * FSTOP - char[1] = FSTOP | |||
| ==== Ziņojumu tipi ==== | |||
| {| border=1 cellspacing=0 cellpadding=4 | |||
| |- | |||
| ! Msg_type | |||
| ! Parm, type, size | |||
| ! Sagaidāmā atbilde | |||
| ! Komentāri, sūtītājs, saņēmējs. | |||
| |- | |||
| | PING (P) | |||
| |  | |||
| * uint4_t sec | |||
| * uint4_t usec | |||
| | PONG | |||
| | Any-any | |||
| |- | |||
| | PONG (P+128) | |||
| |  | |||
| * uint4_t sec | |||
| * uint4_t usec | |||
| |  | |||
| | Any-any | |||
| |- | |||
| | REGSERVER() | |||
| |  | |||
| * uint4_t ip | |||
| * uint2_t port | |||
| * MAGIC_SIZE magic | |||
| |  | |||
| |  | |||
| |- | |||
| | X() | |||
| |  | |||
| * | |||
| |  | |||
| |  | |||
| |- | |||
| | X() | |||
| |  | |||
| * | |||
| |  | |||
| |  | |||
| |- | |||
| | X() | |||
| |  | |||
| * | |||
| |  | |||
| |  | |||
| |- | |||
| | X() | |||
| |  | |||
| * | |||
| |  | |||
| |  | |||
| |- | |||
| | X() | |||
| |  | |||
| * | |||
| |  | |||
| |  | |||
| |- | |||
| | X() | |||
| |  | |||
| * | |||
| |  | |||
| |  | |||
| |- | |||
| |} | |||
| = Problēmas = | = Problēmas = | ||
Revision as of 17:57, 21 December 2010
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.
Datu paketes struktūra
Katram ziņojumam ir sekojoša struktūra:
- FSTART - char[1] = FSTART
- msg_id - char[ MSG_ID_SIZE ]
- msg_type - char[ MSG_TYPE_SIZE ]
- params - char [0 - *] - atkarīgs no komandas
- FSTOP - char[1] = FSTOP
Ziņojumu tipi
| Msg_type | Parm, type, size | Sagaidāmā atbilde | Komentāri, sūtītājs, saņēmējs. | 
|---|---|---|---|
| PING (P) | 
 | PONG | Any-any | 
| PONG (P+128) | 
 | Any-any | |
| REGSERVER() | 
 | ||
| X() |  | ||
| X() |  | ||
| X() |  | ||
| X() |  | ||
| X() |  | ||
| X() |  | 
Problēmas
Sinhronizācija
Drošība, godīgums
Klientu autentifikācija un identifikācija
