… | |
… | |
21 | Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
21 | Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
22 | --> |
22 | --> |
23 | </head> |
23 | </head> |
24 | <body> |
24 | <body> |
25 | |
25 | |
26 | <h1>$Revision: 1.47 $</h1> |
26 | <h1>$Revision: 1.48 $</h1> |
27 | |
27 | |
28 | <h1>KGS Protocol Description</h1> |
28 | <h1>KGS Protocol Description</h1> |
29 | |
29 | |
30 | <p>This XML document describes the KGS protocol. It is also used |
30 | <p>This XML document describes the KGS protocol. It is also used |
31 | to automatically generate the perl parser for all the messages and |
31 | to automatically generate the perl parser for all the messages and |
… | |
… | |
60 | |
60 | |
61 | <p>Everything on the wire is in little-endian format (what a shame).</p> |
61 | <p>Everything on the wire is in little-endian format (what a shame).</p> |
62 | |
62 | |
63 | <p>Primitive types are mostly integers (signed |
63 | <p>Primitive types are mostly integers (signed |
64 | "<code>I</code><bits>", unsigned "<code>U</code><bits>"), |
64 | "<code>I</code><bits>", unsigned "<code>U</code><bits>"), |
65 | ascii strings ("<code>username</code>"), or zero-terminated |
65 | ascii strings ("<code>username</code>"), zero- or non-terminated |
66 | UCS2-Strings ("<code>STRING</code>"). Yes, I know java is supposed to |
66 | UCS2-Strings ("<code>ZSTRING</code>" or "<code>STRING</code>"). Yes, |
67 | do UTF-16, but no implementation seems to care...</p> |
67 | I know java is supposed to do UTF-16, but no implementation seems to |
|
|
68 | care...</p> |
68 | |
69 | |
69 | <p>For the rest, go figure or bug me, <a href="mailto:pcg@goof.com">Marc Lehmann <pcg@goof.com></a></p> |
70 | <p>For the rest, go figure or bug me, <a href="mailto:pcg@goof.com">Marc Lehmann <pcg@goof.com></a></p> |
70 | |
71 | |
71 | <h2>Stream and message structure.</h2> |
72 | <h2>Stream and message structure.</h2> |
72 | |
73 | |
… | |
… | |
282 | <member name="flags" type="U32" value="1"/> |
283 | <member name="flags" type="U32" value="1"/> |
283 | </struct> |
284 | </struct> |
284 | |
285 | |
285 | <struct name="rules" class="KGS::Rules"> |
286 | <struct name="rules" class="KGS::Rules"> |
286 | |
287 | |
287 | <p>This structure is used for challanges as well as in the special |
288 | <p>This structure is used for challenges as well as in the special |
288 | TREE "subprotocol". It tightly encodes the game parameters.</p> |
289 | TREE "subprotocol". It tightly encodes the game parameters.</p> |
289 | |
290 | |
290 | <member name="ruleset" type="U8"/> |
291 | <member name="ruleset" type="U8"/> |
291 | <member name="size" type="U8"/> |
292 | <member name="size" type="U8"/> |
292 | <member name="handicap" type="U8"/> |
293 | <member name="handicap" type="U8"/> |
… | |
… | |
428 | <member name="i1" type="U32" value="0"/> |
429 | <member name="i1" type="U32" value="0"/> |
429 | <member name="b1" type="U8" value="0"/> |
430 | <member name="b1" type="U8" value="0"/> |
430 | <member name="b2" type="U8" value="255"/> |
431 | <member name="b2" type="U8" value="255"/> |
431 | <member name="b3" type="U8" value="255"/> |
432 | <member name="b3" type="U8" value="255"/> |
432 | <member name="group" type="U8" value="1"/> |
433 | <member name="group" type="U8" value="1"/> |
433 | <member name="name" type="STRING"/> |
434 | <member name="name" type="ZSTRING"/> |
434 | <member name="description" type="STRING"/> |
435 | <member name="description" type="ZSTRING"/> |
435 | <member name="flags" type="U8"/> |
436 | <member name="flags" type="U8"/> |
436 | See ROOMFLAGs |
437 | See ROOMFLAGs |
437 | </message> |
438 | </message> |
438 | |
439 | |
439 | <message type="031b" name="req_upd_rooms" src="client"> |
440 | <message type="031b" name="req_upd_rooms" src="client"> |
… | |
… | |
623 | |
624 | |
624 | <message type="4433" name="req_result" src="client"> |
625 | <message type="4433" name="req_result" src="client"> |
625 | I forgot. |
626 | I forgot. |
626 | |
627 | |
627 | <member name="channel" type="U16"/> |
628 | <member name="channel" type="U16"/> |
|
|
629 | </message> |
|
|
630 | |
|
|
631 | <message type="4434" name="set_quiet" src="client"> |
|
|
632 | <p>Sets (or clears) the quiet flag on a game.</p> |
|
|
633 | <member name="channel" type="U16"/> |
|
|
634 | <member name="quiet" type="U8"/> |
628 | </message> |
635 | </message> |
629 | |
636 | |
630 | <message type="4436" name="msg_game" src="client"> |
637 | <message type="4436" name="msg_game" src="client"> |
631 | <member name="channel" type="U16"/> |
638 | <member name="channel" type="U16"/> |
632 | <member name="message" type="STRING"/> |
639 | <member name="message" type="STRING"/> |
… | |
… | |
896 | </message> |
903 | </message> |
897 | |
904 | |
898 | <message type="001f" name="memo" src="server"> |
905 | <message type="001f" name="memo" src="server"> |
899 | Unclear. "Leave Message"? |
906 | Unclear. "Leave Message"? |
900 | 6 strings following. |
907 | 6 strings following. |
901 | <member name="s1" type="STRING"/> |
908 | <member name="s1" type="ZSTRING"/> |
902 | <member name="s2" type="STRING"/> |
909 | <member name="s2" type="ZSTRING"/> |
903 | <member name="s3" type="STRING"/> |
910 | <member name="s3" type="ZSTRING"/> |
904 | <member name="s4" type="STRING"/> |
911 | <member name="s4" type="ZSTRING"/> |
905 | <member name="s5" type="STRING"/> |
912 | <member name="s5" type="ZSTRING"/> |
906 | <member name="s6" type="STRING"/> |
913 | <member name="s6" type="ZSTRING"/> |
907 | </message> |
914 | </message> |
908 | |
915 | |
909 | <message type="0021" name="userpic" src="server"> |
916 | <message type="0021" name="userpic" src="server"> |
910 | <member name="name" type="username"/> |
917 | <member name="name" type="username"/> |
911 | Reply to pic_req, contains an image in jpeg format. |
918 | Reply to pic_req, contains an image in jpeg format. |
… | |
… | |
1155 | Unclear. |
1162 | Unclear. |
1156 | <member name="channel" type="U16"/> |
1163 | <member name="channel" type="U16"/> |
1157 | # # recv_result(?) |
1164 | # # recv_result(?) |
1158 | </message> |
1165 | </message> |
1159 | |
1166 | |
1160 | <message type="4434" name="unknown4434" src="server"> |
1167 | <message type="4434" name="set_quiet" src="server"> |
|
|
1168 | <p>Sets (or clears) the quiet flag on a game.</p> |
1161 | <member name="channel" type="U16"/> |
1169 | <member name="channel" type="U16"/> |
1162 | <member name="b1" type="U8"/> |
1170 | <member name="quiet" type="U8"/> |
1163 | ?? !demonstration game?? |
|
|
1164 | </message> |
1171 | </message> |
1165 | |
1172 | |
1166 | <!-- added recently --> |
|
|
1167 | <message type="443b" name="del_global_challenge" src="server"> |
1173 | <message type="443b" name="del_global_challenge" src="server"> |
1168 | <p> |
1174 | <p> |
1169 | Remove a game from the global challenge list (open game list). |
1175 | Remove a game from the global challenge list (open game list). |
1170 | </p> |
1176 | </p> |
1171 | <member name="channel" type="U16"/> |
1177 | <member name="channel" type="U16"/> |