Nazwa modułu | Technologia | Opis |
---|---|---|
Serwer aplikacji | Java 2 SE | Moduł nadrzędny. Pozwala na przyłączenie modułów podrzędnych. Steruje przepływem danych. |
Gra | Java 2 SE | Aplikacja uruchamiana na serwerze. Otrzymuje dane o akcjach graczy. Kontroluje ich poprawność i przebieg rozgrywki. Wysyła dane o akcjach graczy do ich przeciwników (o ile są poprawne) i dane o stanie gry do modułu obserwatora. |
Gracz/Zawodnik | szkieletowe API komunikacyjne w C | Przyłącza się do gry. Otrzymuje dane o akcji przeciwnika i odpowiada swoją akcją. |
Obserwator stacjonarny | Java 2 SE (Swing) | Przyłącza się do gry. Otrzymuje dane o stanie gry. Wizualizuje lub loguje przebieg rozgrywki. |
Nazwa modułu | Funkcje |
---|---|
Serwer aplikacji |
|
Gra |
|
Gracz/Zawodnik |
|
Obserwator stacjonarny |
|
Nazwa modułu | Sposób powitania |
---|---|
Gra | Jest uruchamiana przez administratora systemu lub automatycznie przez serwer, gdy pojawia się żądanie przyłączenia do gry od gracza i serwer nie ma wolnych gier. |
Gracz |
<message type="hello" id="12345"> <mod-type>player</mod-type> <name>Wymiatacz</name> </message> |
Obserwator |
<message type="hello" id="12345"> <mod-type>observer</mod-type> <name>Logger</name> </message> |
<message type="params" id="12345"> <map width="10" height="8" goal="2"/> <attack side="-1" begin="true"/> </message>
<message type="log" id="12345"> <name>Zabijaka</name> <name>Wymiatacz</name> <map width="10" height="8" goal="2"/> <begin>Wymiatacz</begin> <move time="15:37.45"> <type>1</type> <type>2</type> <type>3</type> </move> ... <error name="Wymiatacz">Niepoprawny komunikat</error> ... <move time="15:38.45"> <type>1</type> <type>2</type> <type>3</type> </move> ... <winner>Wymiatacz</winner> </message>
Typ wiadomości | Opis |
---|---|
Koniec gry |
<message type="game-over" id="12345"> <name>Wymiatacz</name> </message> |
Odrzucenie/zaakceptowanie wiadomości | Serwer potwierdza badz odrzuca każdą wiadomość od klienta (gracza lub obserwatora).
Jeżeli wiadomość zostanie odrzucona, klient powinien ja zmienić zależnie od podanego
przez serwer powodu odrzucenia i wysłać ponownie.
W przypadku otrzymania trzech kolejnych niepoprawych wiadomości, serwer zamyka
połącznie z klientem, który je wysłał. Podobnie w sytuacji nadejścia wiadomości
w momencie gdy serwer się jej nie spodziewa (np. koniec gry). <message type="confirmation" id="12345"> <accepted/> </message> <message type="confirmation" id="12345"> <refused> Niepoprawny ruch. </refused> </message> |
Lista gier/Wybór gry do obserwacji |
<message type="games" id="12345"> <name>Red vs. Blue</name> <name>Freddy vs. Jason</name> </message> <message type="game" id="12345"> <name>RotoZoomer vs. PlasmaCloud</name> </message> |
GRACZ_1 GRA GRACZ_2 |-----\ H | | | \---->>| H /-------| | Ack /------|<<-----/ | |<<---/ |-------\ Ack | | P /------|-------\\----->>| |<<---/ | P \----->>| |-----\ Ack | Ack /-------| | \---->>|<<-----/ | | [T1b] | | | | | |-----\ A1 | | | \---->>| [T1e] | | Ack /------|-------\ A1 | |<<---/ | \----->>| | | Ack /-------| | [T2b] |<<-----/ | | | | | | A2 /-------| | [T2e] |<<-----/ | | A2 /------| | |<<---/ | | |-----\ Ack | | | \---->>| [T1b] | ... |-----\ An | | | \---->>| [T1e] | | Ack /------| | |<<---/ | | | GO /------|-------\ GO | |<<---/ | \----->>| | | | X X X