forked from stapelberg/vsy-bullshit
/
PROTOCOL
120 lines (100 loc) · 2.82 KB
/
PROTOCOL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
Protokolldokumentation
Als grundlegende Technik kommt HTTP + JSON zum Einsatz.
Wir gehen davon aus, dass Spielernamen eindeutig sind. Weiter Authentifikation
ist nicht nötig, alle haben sich lieb.
Generell gilt, dass Responses auf POSTs immer "success" und "error" in der
Response haben. "success" ist ein Boolean. Sofern er auf false steht, enthält
"error" eine passende Fehlermeldung, die dem Benutzer angezeigt werden sollte.
-------------------------------
Request: GET /CurrentGames
Body: <ignoriert>
Response:
[
{"id":"3984843...",
"participants": [
"Atsutane",
"sECuRE"
],
"name":"foo",
"created":123,
"size":3,
"winner":null,
"wordlist":"default"
},
{"id":"333...",
"participants": [ ],
"name":"Unbenannt 29eaa93",
"created":456,
"size":5,
"winner":null,
"wordlist":"wahl"
}
]
-------------------------------
Request: GET /GetWordlists
Body: <ignoriert>
Response:
[ "wahl", "default" ]
Gibt die verfügbaren Wortlisten zurück.
-------------------------------
Request: POST /RegisterPlayer
Body: {"nickname":"sECuRE"}
Response:
{"success":true,
"error":"",
"token":"939393"}
Das token muss später mitgeschickt werden, wenn der Spieler ein Spiel aufmacht
oder einem Spiel beitritt. Auf diese Weise kann man am Anfang einen Namen
eingeben und es kann geprüft werden, ob es derzeit schon einen Spieler mit
diesem Namen gibt. 24 Stunden nach der letzten Aktivität verfällt das Token.
-------------------------------
Request: POST /CreateGame
Body: {"token":"939393", "size":3, "name":"bar", "wordlist":"wahl"}
Response:
{"success":true,
"error":"",
"id":"3984843...",
"words":[
"Win-Win",
"Return of Investment",
"Blah",
"Management"
]}
Wenn "wordlist" nicht angegeben wurde, wird "default" benutzt.
Die Wörter müssen von links oben nach rechts verteilt werden, z.B. bei einem
3x3 Feld folgendermaßen:
Win-Win | Return of Investment | Blah
Management |
-------------------------------
Request: POST /JoinGame
Body: {"token":"93939393", "id":"398484..."}
Response:
{"success":true,
"error":"",
"size":3,
"words":["foo", "bar"]}
-------------------------------
Request: POST /LeaveGame
Body: {"token":"93939393", "id":"398484..."}
Response:
{"success":true,
"error":""}
-------------------------------
Request: POST /MakeMove
Body: {"token":"93939393", "id":"398484...", "field":7}
Response:
{"success":true,
"error":""}
Die Feldnummer wird ebenfalls von links oben nach rechts durchgezählt, beginnend mit 0.
-------------------------------
Request: POST /CheckWinner
Body: {"token":"93939393", "id":"398484.."}
Response:
{"success":true,
"error":"",
"winner": null
}
Sofern jemand das Spiel gewonnen hat, wird dessen Nickname in "winner" als
String zurückgegeben. Der Client sollte dann das Spiel beenden und nicht mehr
nach dem Gewinner fragen.
-------------------------------