LU-LSP-b11:projekts
Uzdevums: izstrādāt koncepciju un arhitektūru klienta-servera sistēmai, kas realizē daudzlietotāju vidi reālā laika stratēģiskai datorspēlei "Tanciņi".
Serveris
Serverim jābūt savietojamam ar kopējo komunikācijas protokolu - tā, lai visu grupu klienti varētu pie tā slēgties!
Serveris spēj saņemt šādas komandas:
- ?
Serveris var nosūtīt šādas komandas:
- ?
Ir pasaules karte ar NxM šūnām. Katrā šūnā var būt:
- ?
Servera programmā ir "galvenais cikls" (while (1)
vai for (;;)
), tajā notiek:
- ?
Serveris uztur informāciju par klientiem:
- ?
Klients
Klientam jābūt savietojamam ar kopējo komunikācijas protokolu - tā, lai tas spētu slēgties pie visu grupu serveriem!
Klients spēj saņemt šādas komandas:
- ?
Klients var nosūtīt šādas komandas:
- ?
Klienta programmā ir "galvenais cikls", tajā notiek:
- ?
Direktorijas serveris
Uztur informāciju par aktīvajiem serveriem:
- ?
Datu apmaiņas protokols
Izmanto TCP protokola soketus, ports 1337.
ASCII formāts datiem.
Komandas sākumu apzīmē ar '^'.
Komandas beigas apzīmē ar '$'.
Komandas piemērs:
^G_U$
Nozīme: "go up" - virzīties uz augšu.
Komandu parameterus vienu no otra atdala ar kādu no whitespace simboliem: tukšumu, tab ('\t'), newline ('\n') vai carriage return ('\r') simboliem. Ja ir vairāki whitespace simboli pēc kārtas, tie jāuztver analoģiski vienam.
Komandas
Klients -> serverim
- S - start game Parametri: nav
- E - disconnect (end game) Parametri: nav
- G - go Parametri: virziens (U, B, L, vai R burti)
- F - shoot (fire) Parametri: nav
- T - stobra kustība (turret movement) (opcionāls) Parametri: virziens (U, B, L, vai R burti)
Serveris -> klientam
- M - map info
Map info parametri
Kartes lauciņi var būt:
- šķērslis (necaurejams tankiem, obstacle) - O
- masīvs šķērslis (necauršaujaums & necaurejams tankiem) - X
- ceļš (road) - R
- zāle (grass, kustība notiek 2x lēnāk, nekā pa ceļu) (opcionāls) - G
- purvs (swamp, kustība notiek 5x lēnāk, nekā pa ceļu) (opcionāls) - S
Map info komandas parametri:
- Kartes dimensijas: divi skaitļi N (platums) un M (augstums).
- NxM burtus gara karte ar terrain type. piemēram: "R R R R X R ...". Karti sūta, sākot no augšējās rindas, no kreisās puses uz labo.
- Nenoteikta garuma saraksts ar objektiem. Objekts tiek aprakstīts šādi:
"O-burts Tips X-koordināta Y-koordināta [citi paramteri]"
Tips:
- T - tanks
- S - shot (šāviņš)
"Citus parametrus" norāda tikai tankam. Tie ir:
- Tanka īpašnieka IP adrese un ports
- Tanka virziens (U, B, L, R)
- Tanka stobra virziens (U, B, L, R)
- Health-status (0-100%)
Objekta piemērs: "O T 1 2 10.0.0.1 33780 L L 100" - tanks lauciņā (1,2), piederošs klientam ar adresi 10.0.0.1 un portu 33780, pavērsts pa kreisi, ar stobru pavērstu pa kreisi, ar 100% veselību.
Koordināta 0 0 atbilst augšējam kreisajam stūrim.