protocol.txt (8320B) download
1New Game server - Protocol Documentatie 2021
2
3Auteurs: Hilko Janssen, Remi Reuvekamp, Gertjan Haan, Timo Strating
4Onder begeleiding van: Bas Heijne
5Gemaakt in opdracht voor: Lech Bialek
6---------------------------------------------
7
8
9!!! Dit project wat je nu aan het bekijken bent is een 2de iteratie van een oude server. De oude server was heel erg
10 strict in het hanteren van het protocol. Daarnaast verstuurde het ook dingen in een volgorde die soms anders
11 gedocumenteerd was. De nieuwe server staat een meer vrije implementatie toe van het protocol. Zo zijn kan de nieuwe
12 server ook commando's begrijpen als er geen ""-quotes om een argument heen staan.
13
14 De nieuwe server is dus volledig backwards compatible met de stricte versie van dit protocol.
15
16
17---------------------------------------------
18Commando's in detail
19
20C = Client
21S = Server
22
23Notes bij server antwoorden:
24Items tussen vierkante haken ('[' en ']') geven een lijst weer.
25Items tussen accolades ('{' en '}') geven een map weer. Zoals bij alle maps, is de volgorde niet bepaald.
26
27Notes bij client commando's:
28Alle commando's zijn niet hoofdlettergevoelig.
29Alle argumenten zijn niet hoofdlettergevoelig.
30
31De server kan naast een server-berichten sturen ook de connectie verbreken.
32
33
34Niet ondersteunde commando:
35C: <niet ondersteunde commando> | <commando> <verkeerd(e) argument(en)>
36S: ERR <reden>
37->Geen gevolg.
38
39Inloggen:
40C: login <speler>
41S: OK | ERR <reden>
42->Nu ingelogd met spelersnaam lowercase(<speler>). Een naam moet lowercase uniek zijn.
43 Als deze spelersnaam al bekend was, maar bijvoorbeeld vroegtijdig weg is gegaan bij een toernooi, dan wordt je weer opnieuw in het toernooi gezet.
44
45Uitloggen/Verbinding verbreken:
46C: logout | exit | quit | disconnect | bye
47S: -
48->Verbinding is verbroken. De speler blijft in het toernooi en kan weer meespelen als hij met de oude spelersnaam opnieuw inlogt.
49
50Lijst opvragen met ondersteunde spellen:
51C: get gamelist
52S: OK
53S: SVR GAMELIST ["<speltype>", ...]
54->Lijst met spellen ontvangen.
55
56Lijst opvragen met verbonden spelers:
57C: get playerlist
58S: OK
59S: SVR PLAYERLIST ["<speler>", ...]
60->Lijst met spelers ontvangen.
61
62Inschrijven voor de spelzoeker om (voor de lol) een potje met iemand te spelen.
63C: subscribe <speltype>
64S: OK
65->Ingeschreven voor speltype <speltype>. Zodra nog een speler zich heeft ingeschreven start een match hiermee.
66
67Match aangeboden krijgen, bericht naar beide spelers:
68S: SVR GAME MATCH {PLAYERTOMOVE: "<naam speler1>", GAMTYPE: "<speltype>", OPPONENT: "<naam tegenstander>"}
69->Nu bezig met een match, de inschrijving voor een speltype is vervallen.
70
71De beurt toegewezen krijgen tijdens match:
72S: SVR GAME YOURTURN {TURNMESSAGE: "<bericht voor deze beurt>"}
73->Nu mogelijkheid een zet te doen.
74
75Een zet doen na het toegewezen krijgen van een beurt:
76C: move <zet>
77S: OK
78->De zet is geaccepteerd door de server, gevolg voor spel zal volgen.
79NB: <zet> is een integer van 0 t/m 8 (Tic Tac Toe) resp. 0 t/m 63 (Othello).
80De nummering van de vakjes op het bord is rij-gewijs, van linksboven naar rechtsonder.
81
82Resultaat van een zet ontvangen, bericht naar beide spelers:
83S: SVR GAME MOVE {PLAYER: "<speler>", DETAILS: "<reactie spel op zet>", MOVE: "<zet>"}
84->Er is een zet gedaan, dit bericht geeft aan wie deze gezet heeft, wat de reactie van het spel erop is
85
86Resultaat van een match ontvangen, bericht naar beide spelers:
87S: SVR GAME <speler resultaat> {PLAYERONESCORE: "<score speler1>", PLAYERTWOSCORE: "<score speler2>", COMMENT: "<commentaar op resultaat>"}
88->De match is afgelopen, <speler resultaat> kan de waarde 'WIN', 'LOSS' of 'DRAW' bevatten.
89 <score speler1> kan arbitrair zijn als
90
91Een match opgeven:
92C: forfeit
93S: OK
94->De speler heeft het spel opgegeven, de server zal het resultaat van de match doorgeven.
95
96Resultaat van een match die opgegeven is door een speler, bericht naar beide spelers:
97S: SVR GAME <speler resultaat> {PLAYERONESCORE: "<score speler1>", PLAYERTWOSCORE: "<score speler2>", COMMENT: "Player forfeited match"}
98->De match is afgelopen, <speler> heeft de match opgegeven.
99
100Resultaat van een match, speler heeft de verbinding verbroken:
101S: SVR GAME <speler resultaat> {PLAYERONESCORE: "<score speler1>", PLAYERTWOSCORE: "<score speler2>", COMMENT: "Client disconnected"}
102->De match is afgelopen, <speler> heeft de verbinding verbroken.
103
104Een speler uitdagen voor een spel:
105C: challenge "<speler>" "<speltype>" | challenge <speler> <speltype>
106S: OK
107->De speler is nu uitgedaagd voor een spel. Eerder gemaakte uitdagingen zijn komen te vervallen. Gebruik quotes als er een spatie in een naam zit
108
109Een uitdaging ontvangen:
110S: SVR GAME CHALLENGE {CHALLENGER: "Sjors", GAMETYPE: "Guess Game", CHALLENGENUMBER: "1"}
111->Nu mogelijkheid de uitdaging te accepteren.
112
113Resultaat van een uitdaging die is komen te vervallen:
114S: SVR GAME CHALLENGE CANCELLED {CHALLENGENUMBER: "<uitdaging nummer>"}
115->De uitdaging is vervallen. Mogelijke oorzaken: speler heeft een andere uitdaging gestart, speler is een match begonnen, speler heeft de verbinding verbroken.
116
117Een uitdaging accepteren:
118C: challenge accept <uitdaging nummer>
119S: OK
120->De uitdaging is geaccepteerd. De match wordt gestart, bericht volgt.
121
122Chatten, alleen toegestaan als chat ingeschakeld is door de admin:
123C: message <bericht zonder spaties> | message "<bericht met spaties>"
124S: OK | ERR <reden>
125
126Help opvragen:
127C: help
128S: OK
129->De client heeft nu help informatie opgevraagd, de server zal antwoorden met help informatie.
130
131Help opvragen van een commando:
132C: help <commando>
133S: OK
134->De client heeft nu help informatie opgevraagd voor een commando, de server zal antwoorden met help informatie.
135
136Help informatie ontvangen:
137S: SVR HELP <help informatie>
138->Help informatie is ontvangen, kan meerdere achtereenvolgende responses bevatten.
139
140
141---------------------------------------------
142Overzicht van server-berichten:
143
144OK Commando geaccepteerd
145ERR Commando afgewezen
146SVR [ HELP | GAME [MATCH | YOURTURN | MOVE | CHALLENGE | [WIN | LOSS | DRAW]]]
147 Bericht van server
148 HELP Bericht met help informatie
149 GAME Bericht met betrekking op een spel/match
150 MATCH Toewijzing van een match
151 YOURTURN Toewijzing van de beurt tijdens de match
152 MOVE Een zet gedaan tijdens de match
153 CHALLENGE Bericht met betrekking op een uitdaging
154 WIN Ontvanger heeft spel gewonnen
155 LOSS Ontvanger heeft spel verloren
156 DRAW Match is geeindigd in gelijk spel
157
158---------------------------------------------
159Overzicht van client-commando's:
160
161login Aanmelden als speler
162logout | exit | quit | disconnect | bye
163 Uitloggen en verbinding verbreken
164get <gamelist | playerlist>
165 Opvragen van gegevens
166 gamelist Opvragen van de lijst met ondersteunde speltypes
167 playerlist Opvragen van de lijst met aangemelde spelers
168subscribe Inschrijven voor een speltype
169move Een zet doen tijdens een match
170challenge [accept] Uitdagingen behandelen
171 accept Uitdaging accepteren
172forfeit De huidige match opgeven
173message Stuur een berichtje
174help [commando] Help weergeven
175
176
177
178
179
180
181
182
183Enkele tips/tricks van de schrijvers van deze server en voormalig winnaars van het toernooi in 2019
184---------------------------------------------
185
1861: Neem eens een kijkje op de wiki pagina van othello en reversi. Er zijn 4 manieren waardoor de server zal concluderen dat je hebt gewonnen.
187
1882: Hardcode het copyright bericht niet in je client.
189
1903: Veel server instellingen kunnen worden veranderd. Verwacht deze aanpasingen dan ook. Sommige oude clients gaan de mist in als de server de client bijvoorbeeld maar 5 seconde zou geven om te reageren.
191
1924: Daag eens een klasgenoot uit voor een potje voordat het toernooit begint.
193
1945: Sommige spellen hebben bordposities waarbij je beurt gepasseerd moet worden, maar de server heeft geen pass commando.
195
1966: Wees een beetje lief tegen de server, niet spammen enzo.
197
1987: Oude clients hadden soms popups die nare gevolgen met zich mee brachten.
199
2008: Iedereen die met de server is verbonden wordt "waarschijnlijk" tijdens het starten van een toernooi in het toernooi gezet. Er is dus niet een commando om deel te nemen aan het toernooi.
201
2029: Test Test Test
203
20410: De persoon die dit heeft getyped heeft dit project ook moeten doen maar dan zonder deze tips en heeft gewonnen dus doe er je voordeel mee (alvast sorry voor de spelfouten in het geval je die hebt gevonden).