File: protocol.txt

package info (click to toggle)
between 6%2Bdfsg1-4
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, sid
  • size: 3,524 kB
  • sloc: cpp: 28,110; php: 718; ansic: 638; objc: 245; sh: 236; makefile: 102; perl: 67
file content (190 lines) | stat: -rw-r--r-- 3,467 bytes parent folder | download | duplicates (3)
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
All returns are whitespace-delimited.

Error returns start with the string "ERROR:"




=== Call:
server.php?action=get_player_id

Returns:
playerID


Where:
playerID = string


Note:  Used to prevent joining game with self.



=== Call:
server.php?action=create_for_friend&player_id=[id string]

Returns:
gameID
gamePasscode
playerNumber
playerBlockTransform


Where:
gameID = string
gamePasscode = string
playerNumber = 1 or 2
playerBlockTransform = comma-delimited list of indices 0..15

Note:  must check is_partner_ready before playing.





=== Call:
server.php?action=join_with_friend&player_id=[id string]&game_id=[id string]

Returns:
gameID
gamePasscode
playerNumber
playerBlockTransform


Where:
gameID = string
gamePasscode = string
playerNumber = 1 or 2
playerBlockTransform = comma-delimited list of indices 0..15


Note:  no need to check is_partner_ready before playing.




=== Call:
server.php?action=join_with_stranger&player_id=[id string]

Returns:
gameID
gamePasscode
playerNumber
playerBlockTransform


Where:
gameID = string
gamePasscode = string
playerNumber = 1 or 2
playerBlockTransform = comma-delimited list of indices 0..15

Note:  must check is_partner_ready before playing.
Must keep checking for available partner every 5 seconds until a partner is
provided.  If an unmatched gameID goes unchecked for more than 20 seconds,
it is assumed abandoned and discarded from the server.





=== General note:
player_id is not used by any of the following calls.  The purpose of player_id
is to ensure that players do not join games with themselves accidentally.






=== Call:
server.php?action=is_partner_ready&game_id=[id string]&game_passcode=[passcode string]&player_number=[1 or 2]


Returns:
readyFlag


Where:
readyFlag = 0 or 1


Note:
player_number in the call is *our* player number, not partner number.




=== Call:
server.php?action=report_alive&game_id=[id string]&game_passcode=[passcode string]&player_number=[1 or 2]


Returns:
successFlag


Where:
successFlag = 1


Note:  post_move and get_changed_columns also updates alive status.  Thus,
report_alive should only be called during periods of inactivity, at least once
every 5 minutes during such periods.




=== Call (params probably in POST body):
server.php?action=post_move&game_id=[id string]&game_passcode=[passcode string]&player_number=[1 or 2]&num_dirty_columns=[number]&dirty_column_0=[column string]&dirty_column_1=[column string]& ... &dirty_column_N=[column string]


Returns:
successFlag


Where:
successFlag = 1


Note:
Each column string starts with its column index number, followed by a "_", 
followed by a "_"-delimited list of block color signatures. Blocks are listed
starting with the block in row 0




=== Call:
server.php?action=get_changed_columns&game_id=[id string]&game_passcode=[passcode string]&player_number=[1 or 2]&last_state_seen=[number]


Returns:
secondsSincePartnerActed
stateNumber
numChangedColumns
column0
column1
...
columnN


Where:
secondsSincePartnerActed = integer >= 0
stateNumber = integer >= 0
numChangedColumns = integer >=0
columnX = column string (see below)


Notes:

-- last_state_seen  indicates the last state fetched by the client from the 
server.

-- secondsSincePartnerActed can be used to detect a zombie partner.

-- Each column string starts with its column index number, followed by a "_", 
followed by a "_"-delimited list of block color signatures. Blocks are listed 
starting with the block in row 0