| 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