Difference between revisions of "LU-LSP-b13:projekts"
(→Komunikācijas protokols) |
(→Komunikācijas protokols) |
||
(One intermediate revision by the same user not shown) | |||
Line 58: | Line 58: | ||
===Komandas:=== |
===Komandas:=== |
||
Turpmāk "K:" apzīmē klienta komandu, bet "S:" servera komandu vai atbildi. |
|||
-- '''Reģistrācija''' |
-- '''Reģistrācija''' |
||
Line 81: | Line 83: | ||
* CAPACITY - planētas ietilpība |
* CAPACITY - planētas ietilpība |
||
* SHIPS - planētā esošo kuģu skaits |
* SHIPS - planētā esošo kuģu skaits |
||
* [...] - PID_X_Y_UID_CAPACITY_SHIPS atkārtojas katrai planētai, PLANET_COUNT reizes. |
|||
Piemērs: |
Piemērs: |
||
Line 107: | Line 110: | ||
* ID - konkrētā spēlētāja ID |
* ID - konkrētā spēlētāja ID |
||
* USERNAME - konkrētā spēlētāja lietotājvārds |
* USERNAME - konkrētā spēlētāja lietotājvārds |
||
* [...] - atkārtojas ID_USERNAME ar pārējiem spēlētājiem, kopā COUNT reizes |
|||
Piemērs: |
Piemērs: |
||
K: U |
K: U |
||
S: 2 1_karlis 2_janis |
S: U 2 1_karlis 2_janis |
||
-- '''Saņemt klientam visus vērstos uzbrukumus''' |
-- '''Saņemt klientam visus vērstos uzbrukumus''' |
||
Line 121: | Line 125: | ||
* FROM - planēta, no kuras nāk uzbrukums |
* FROM - planēta, no kuras nāk uzbrukums |
||
* TIME - laiks sekundēs pēc kāda ienāks uzbrukums |
* TIME - laiks sekundēs pēc kāda ienāks uzbrukums |
||
Piemērs: |
|||
K: A |
|||
S: A 2 1_50_3_2_45 2_100_4_2_15 |
|||
===Servera konfigurācija:=== |
===Servera konfigurācija:=== |
Latest revision as of 12:26, 17 January 2014
Uzdevums: izstrādāt klienta un servera programmatūru, kas realizē daudzlietotāju spēli datortīklā.
Par spēli izvēlēta Galcon spēles tēma ar vienkāršotiem noteikumiem, kas definēti zemāk.
Kursa projekta mērķis ir pielietot kursā apgūto par sistēmas resursiem, servisiem un programmēšanu lai izstrādātu programmatūru.
Tai skaitā:
- starpprocesu komunikācija lietojot "sockets"
- vairāku procesu vai pavedienu arhitektūra
Spēles noteikumi
Spēles vēsture un apraksts pieejami šeit.
Šajā projektā lietojami vienkaršoti spēles noteikumi.
Spēles mērķis ir iekarot pēc iespējas vairak planētas.
- Planētas tiek iekarotas sūtot uz tām kosmosa kuģus.
- Katrai planetai ir vērtība, kas nosaka, cik kuģu nepieciešams lai to iekarotu.
- Iekarojot planētu tiek zaudēti tik kuģi cik ir planētas vērtība.
- Bez tam par katru pretinieka kuģi, kas atrodas uz planētas, tiek zaudēts arī iekarotāja kuģis.
- ja pēc planētas iekarošanas paliek pari vismaz viens spēlētāja kuģis, tad planēta pāriet spēlētaja īpašumā.
- Katra spēlētāja iekarotā planeta ražo kuģus.
- Planētas ražība, t.i. saražoto kuģu skaits laika vienībā ir atkarīga no tās lieluma.
Spēles realizācijas principi
Jums jārealizē:
- servera programmatūra, kas modelē pasauli ar planētam un spēlētāju kuģiem, ka arī apkalpo spelētāju klienta programmatūru.
- klienta programmatūra, kas ļauj spēlētājiem pieslēgties spēles serveriem un piedalīties spēlē.
Spēles parametri tiek definēti konfigurācijas failā, kuru jāprot ielasīt un realizēt jebkuram serverim.
Konfigurācijas faila formāts tiek kopīgi izstrādāts piedaloties visiem studentiem un pasniedzēiem.
Komunikācijas protokols starp servera un klienta programmatūrām arī tiek izstrādāts kopīgi tā, lai jebkurš klients un jebkurš serveris būtu savietojami.
Klienta un servera programmatūru izstrādā katra komanda pati.
Komunikācijas protokols
Piedāvāju versiju komunikācijas protokolam, (paldies Kārlim Babrim).
Aicinu vadīties pēc šī protokola. Kritiskos gadījumos var tikt pieņemtas arī atkāpēs no šī protokola, vai papildinājumi. Protams, projekta grupas ietvaros visam jādarbojas korekti. Piemēram, ja klienta programmatūrā ieviesti protokola papildinājumi, tie jāatbalsta arī servera programmatūrai.
Piezīmes:
- Spēle notiek pozitīvu koordināšu sistēmā.
- Protokols TCP
- Servera atbildē pirmais simbols ir tās pašas komandas, kura tika sūtīta.
- Spēlētāju lietotājvārdi var saturēt tikai a-z simbolus, nekādu diakritisko vai speciālo simbolu.
Komandas:
Turpmāk "K:" apzīmē klienta komandu, bet "S:" servera komandu vai atbildi.
-- Reģistrācija
K: J USERNAME S: J USERID SECONDS
- USERNAME - lietotājvārds
- USERID - lietotāja ID vai 0, ja netika reģistrēts
- SECONDS - atlikušās sekundes līdz spēles sākumam
Piemērs:
K: J karlis S: J 1 15
-- Dati par planētām
K: M S: M PLANET_COUNT PID_X_Y_UID_CAPACITY_SHIPS [...]
- PLANET_COUNT - planētu skaits kartē
- PID - planētas ID
- X un Y - planēta koordinātes
- UID - attiecīgās planētas īpašnieka ID, 0, ja nepieder nevienam
- CAPACITY - planētas ietilpība
- SHIPS - planētā esošo kuģu skaits
- [...] - PID_X_Y_UID_CAPACITY_SHIPS atkārtojas katrai planētai, PLANET_COUNT reizes.
Piemērs:
K: M S: M 2 1_12_15_1_100_50 2_20_45_2_90_40
-- Kuģa nosūtīšana uzbrukumā
K: S FROM TO AMOUNT S: S SENT_AMOUNT ARRIVAL_TIME
- FROM - no kuras planētas sūta
- TO - uz kuru planētu sūta
- AMOUNT - cik kuģus sūta
- SENT_AMOUNT - nosūtīto kuģu skaits. 0, ja nevarēja nosūtīt
- ARRIVAL_TIME - laiks sekundēs pēc kura ieradīsies. 0, ja nevarēja nosūtīt
Piemērs:
K: S 1 2 30 S: S 30 65
-- Spēlētāju saraksta iegūšana
K: U S: U COUNT ID_USERNAME [...]
- COUNT - skaits, cik spēlētāju ir kopā
- ID - konkrētā spēlētāja ID
- USERNAME - konkrētā spēlētāja lietotājvārds
- [...] - atkārtojas ID_USERNAME ar pārējiem spēlētājiem, kopā COUNT reizes
Piemērs:
K: U S: U 2 1_karlis 2_janis
-- Saņemt klientam visus vērstos uzbrukumus
K: A S: A COUNT PID_AMOUNT_FROM_UID_TIME
- COUNT - uzbrukumu skaits
- PID - planēta, kurai uzbrūk
- AMOUNT - skaits, cik kuģi tiek sūtīti
- FROM - planēta, no kuras nāk uzbrukums
- TIME - laiks sekundēs pēc kāda ienāks uzbrukums
Piemērs:
K: A S: A 2 1_50_3_2_45 2_100_4_2_15
Servera konfigurācija:
- PLAYERS - maksimālais spēlētāju skaits kartē
- SPEED - vienību daudzums cik koordināšu sistēmā vienas sekundes laikā veic kuģis
- START_TIME - laiks sekundēs pēc servera ieslēgšanas, kurā sākas spēle, ja vēl nav sasniegts PLAYERS limits
- MIN_CAPACITY - minimālais maksimālo kuģu skaits planētā
- MAX_CAPACITY - maksimālais maksimālo kuģu skaits planētā
Piemērs:
PLAYERS 10 SPEED 5 START_TIME 30 MIN_CAPACITY 20 MAX_CAPACITY 100