game-client

Play TicTacToe and Reversi
Log | Files | Refs

protocol.txt (8320B)


      1 New Game server - Protocol Documentatie 2021
      2 
      3 Auteurs: Hilko Janssen, Remi Reuvekamp, Gertjan Haan, Timo Strating
      4 Onder begeleiding van: Bas Heijne
      5 Gemaakt 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 ---------------------------------------------
     18 Commando's in detail
     19 
     20 C = Client
     21 S = Server
     22 
     23 Notes bij server antwoorden:
     24 Items tussen vierkante haken ('[' en ']') geven een lijst weer.
     25 Items tussen accolades ('{' en '}') geven een map weer. Zoals bij alle maps, is de volgorde niet bepaald.
     26 
     27 Notes bij client commando's:
     28 Alle commando's zijn niet hoofdlettergevoelig.
     29 Alle argumenten zijn niet hoofdlettergevoelig.
     30 
     31 De server kan naast een server-berichten sturen ook de connectie verbreken.
     32 
     33 
     34 Niet ondersteunde commando:
     35 C: <niet ondersteunde commando> | <commando> <verkeerd(e) argument(en)>
     36 S: ERR <reden>
     37 ->Geen gevolg.
     38 
     39 Inloggen:
     40 C: login <speler>
     41 S: 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 
     45 Uitloggen/Verbinding verbreken:
     46 C: logout | exit | quit | disconnect | bye
     47 S: -
     48 ->Verbinding is verbroken. De speler blijft in het toernooi en kan weer meespelen als hij met de oude spelersnaam opnieuw inlogt.
     49 
     50 Lijst opvragen met ondersteunde spellen:
     51 C: get gamelist
     52 S: OK
     53 S: SVR GAMELIST ["<speltype>", ...]
     54 ->Lijst met spellen ontvangen.
     55 
     56 Lijst opvragen met verbonden spelers:
     57 C: get playerlist
     58 S: OK
     59 S: SVR PLAYERLIST ["<speler>", ...]
     60 ->Lijst met spelers ontvangen.
     61 
     62 Inschrijven voor de spelzoeker om (voor de lol) een potje met iemand te spelen.
     63 C: subscribe <speltype>
     64 S: OK
     65 ->Ingeschreven voor speltype <speltype>. Zodra nog een speler zich heeft ingeschreven start een match hiermee.
     66 
     67 Match aangeboden krijgen, bericht naar beide spelers:
     68 S: 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 
     71 De beurt toegewezen krijgen tijdens match:
     72 S: SVR GAME YOURTURN {TURNMESSAGE: "<bericht voor deze beurt>"}
     73 ->Nu mogelijkheid een zet te doen.
     74 
     75 Een zet doen na het toegewezen krijgen van een beurt:
     76 C: move <zet>
     77 S: OK
     78 ->De zet is geaccepteerd door de server, gevolg voor spel zal volgen.
     79 NB: <zet> is een integer van 0 t/m 8 (Tic Tac Toe) resp. 0 t/m 63 (Othello).
     80 De nummering van de vakjes op het bord is rij-gewijs, van linksboven naar rechtsonder.
     81 
     82 Resultaat van een zet ontvangen, bericht naar beide spelers:
     83 S: 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 
     86 Resultaat van een match ontvangen, bericht naar beide spelers:
     87 S: 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 
     91 Een match opgeven:
     92 C: forfeit
     93 S: OK
     94 ->De speler heeft het spel opgegeven, de server zal het resultaat van de match doorgeven.
     95 
     96 Resultaat van een match die opgegeven is door een speler, bericht naar beide spelers:
     97 S: 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 
    100 Resultaat van een match, speler heeft de verbinding verbroken:
    101 S: SVR GAME <speler resultaat> {PLAYERONESCORE: "<score speler1>", PLAYERTWOSCORE: "<score speler2>", COMMENT: "Client disconnected"}
    102 ->De match is afgelopen, <speler> heeft de verbinding verbroken.
    103 
    104 Een speler uitdagen voor een spel:
    105 C: challenge "<speler>" "<speltype>" | challenge <speler> <speltype>
    106 S: 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 
    109 Een uitdaging ontvangen:
    110 S: SVR GAME CHALLENGE {CHALLENGER: "Sjors", GAMETYPE: "Guess Game", CHALLENGENUMBER: "1"}
    111 ->Nu mogelijkheid de uitdaging te accepteren.
    112 
    113 Resultaat van een uitdaging die is komen te vervallen:
    114 S: 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 
    117 Een uitdaging accepteren:
    118 C: challenge accept <uitdaging nummer>
    119 S: OK
    120 ->De uitdaging is geaccepteerd. De match wordt gestart, bericht volgt.
    121 
    122 Chatten, alleen toegestaan als chat ingeschakeld is door de admin:
    123 C: message <bericht zonder spaties> | message "<bericht met spaties>"
    124 S: OK | ERR <reden>
    125 
    126 Help opvragen:
    127 C: help
    128 S: OK
    129 ->De client heeft nu help informatie opgevraagd, de server zal antwoorden met help informatie.
    130 
    131 Help opvragen van een commando:
    132 C: help <commando>
    133 S: OK
    134 ->De client heeft nu help informatie opgevraagd voor een commando, de server zal antwoorden met help informatie.
    135 
    136 Help informatie ontvangen:
    137 S: SVR HELP <help informatie>
    138 ->Help informatie is ontvangen, kan meerdere achtereenvolgende responses bevatten.
    139 
    140 
    141 ---------------------------------------------
    142 Overzicht van server-berichten:
    143 
    144 OK			Commando geaccepteerd
    145 ERR			Commando afgewezen
    146 SVR [ 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 ---------------------------------------------
    159 Overzicht van client-commando's:
    160 
    161 login				Aanmelden als speler
    162 logout | exit | quit | disconnect | bye
    163 					Uitloggen en verbinding verbreken
    164 get <gamelist | playerlist>
    165 					Opvragen van gegevens
    166 	gamelist		Opvragen van de lijst met ondersteunde speltypes
    167 	playerlist		Opvragen van de lijst met aangemelde spelers
    168 subscribe			Inschrijven voor een speltype
    169 move				Een zet doen tijdens een match
    170 challenge [accept]	Uitdagingen behandelen
    171 	accept			Uitdaging accepteren
    172 forfeit				De huidige match opgeven
    173 message             Stuur een berichtje
    174 help [commando]		Help weergeven
    175 
    176 
    177 
    178 
    179 
    180 
    181 
    182 
    183 Enkele tips/tricks van de schrijvers van deze server en voormalig winnaars van het toernooi in 2019
    184 ---------------------------------------------
    185 
    186 1: 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 
    188 2: Hardcode het copyright bericht niet in je client. 
    189 
    190 3: 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 
    192 4: Daag eens een klasgenoot uit voor een potje voordat het toernooit begint.
    193 
    194 5: Sommige spellen hebben bordposities waarbij je beurt gepasseerd moet worden, maar de server heeft geen pass commando.
    195 
    196 6: Wees een beetje lief tegen de server, niet spammen enzo.
    197 
    198 7: Oude clients hadden soms popups die nare gevolgen met zich mee brachten.
    199 
    200 8: 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 
    202 9: Test Test Test
    203 
    204 10: 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).