hanze/game-client

protocol.txt in main
Repositories | Summary | Log | Files

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).