… | |
… | |
20 | Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
20 | Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
21 | --> |
21 | --> |
22 | </head> |
22 | </head> |
23 | <body> |
23 | <body> |
24 | |
24 | |
25 | <h1>$Revision: 1.26 $</h1> |
25 | <h1>$Revision: 1.27 $</h1> |
26 | |
26 | |
27 | <h1>KGS Protocol Description</h1> |
27 | <h1>KGS Protocol Description</h1> |
28 | |
28 | |
29 | <p>This XML document describes the KGS protocol. It is also used |
29 | <p>This XML document describes the KGS protocol. It is also used |
30 | to automatically generate the perl parser for all the messages and |
30 | to automatically generate the perl parser for all the messages and |
… | |
… | |
61 | |
61 | |
62 | <p>Well, that is just what he accouned earlier, so he just did what he |
62 | <p>Well, that is just what he accouned earlier, so he just did what he |
63 | said...</p> |
63 | said...</p> |
64 | |
64 | |
65 | <p>Anything I know about changes in 2.5.x are reflected in this |
65 | <p>Anything I know about changes in 2.5.x are reflected in this |
66 | document already. You can log-in, chat, log-out, but the gamelist |
66 | document already. You can log-in, chat, log-out, watch games, but you |
67 | is corrupted, and you still cannot watch games.</p> |
67 | cannot comment games nor play nor privately chat.</p> |
68 | |
68 | |
69 | <h2>Structure and conventions of this document and the protocol</h2> |
69 | <h2>Structure and conventions of this document and the protocol</h2> |
70 | |
70 | |
71 | <p>"Send" means messages send from the client to the server, while |
71 | <p>"Send" means messages send from the client to the server, while |
72 | "received" means messages send by the server to the client.</p> |
72 | "received" means messages send by the server to the client.</p> |
… | |
… | |
180 | resolution. There are also special values for wins by time etc., either |
180 | resolution. There are also special values for wins by time etc., either |
181 | in result or in the score* types, or both :)</p> |
181 | in result or in the score* types, or both :)</p> |
182 | |
182 | |
183 | <type name="score16" type="I16" multiplier="4"/> |
183 | <type name="score16" type="I16" multiplier="4"/> |
184 | <type name="score32" type="I32" multiplier="4"/> |
184 | <type name="score32" type="I32" multiplier="4"/> |
|
|
185 | <type name="score1000" type="I32" multiplier="1000"/> |
185 | |
186 | |
186 | <p>A score value (used for displaying the score at the end of a game) |
187 | <p>A score value (used for displaying the score at the end of a game) |
187 | are multiplied by four for a change (the 0.25 resolution is not |
188 | are multiplied by four for a change (the 0.25 resolution is not |
188 | used). In game structures it is encoded by dividing by two, though, so |
189 | used). In game structures it is encoded by dividing by two, though, so |
189 | watch out!</p> |
190 | watch out! And in some others, it's encoded by multiplying by 1000... |
|
|
191 | yuck!</p> |
190 | |
192 | |
191 | <type name="time" type="U32" multiplier="1000"/> |
193 | <type name="time" type="U32" multiplier="1000"/> |
192 | |
194 | |
193 | <p>Time values are multiplied by 1000, giving them millisecond |
195 | <p>Time values are multiplied by 1000, giving them millisecond |
194 | accuracy.</p> |
196 | accuracy.</p> |
… | |
… | |
522 | < 0 not fully setup |
524 | < 0 not fully setup |
523 | <member name="komi" type="komi16"/> |
525 | <member name="komi" type="komi16"/> |
524 | <member name="moves" type="I16"/> |
526 | <member name="moves" type="I16"/> |
525 | This field reflects either the movenum or the score, sorry, not even guards help, as |
527 | This field reflects either the movenum or the score, sorry, not even guards help, as |
526 | the flags to determine that are _after_ the field. Arg. Divide by two to get the actual |
528 | the flags to determine that are _after_ the field. Arg. Divide by two to get the actual |
527 | score (NOT score16!). |
529 | score (NOT score16!) (argĀ²). |
528 | <member name="flags" type="U16"/> |
530 | <member name="flags" type="U16"/> |
529 | <member name="observers" type="U32"/> |
531 | <member name="observers" type="U32"/> |
530 | <member name="saved" type="flag"/> |
532 | <member name="saved" type="flag"/> |
531 | <member name="notes" type="STRING" guard-member="handicap" guard-cond="< 0"/> |
533 | <member name="notes" type="STRING" guard-member="handicap" guard-cond="< 0"/> |
532 | </struct> |
534 | </struct> |
… | |
… | |
834 | <message type="4406" name="upd_tree" recv="yes"> |
836 | <message type="4406" name="upd_tree" recv="yes"> |
835 | <member name="channel" type="U16"/> |
837 | <member name="channel" type="U16"/> |
836 | <member name="tree" type="TREE"/> |
838 | <member name="tree" type="TREE"/> |
837 | </message> |
839 | </message> |
838 | |
840 | |
839 | <message type="4407" name="set_node" recv="yes"> |
|
|
840 | <member name="channel" type="U16"/> |
|
|
841 | <member name="node" type="U32"/> |
|
|
842 | </message> |
|
|
843 | |
|
|
844 | <message type="4409" name="superko" recv="yes"> |
841 | <message type="4409" name="superko" recv="yes"> |
845 | Superko-warning. |
842 | Superko-warning. |
846 | <member name="channel" type="U16"/> |
843 | <member name="channel" type="U16"/> |
847 | </message> |
844 | </message> |
848 | |
845 | |
… | |
… | |
880 | <message type="4422" name="unknown4422" recv="yes"> |
877 | <message type="4422" name="unknown4422" recv="yes"> |
881 | change teacher? something to do with editing? |
878 | change teacher? something to do with editing? |
882 | <member name="channel" type="U16"/> |
879 | <member name="channel" type="U16"/> |
883 | <member name="name1" type="username"/> |
880 | <member name="name1" type="username"/> |
884 | <member name="name2" type="username"/> |
881 | <member name="name2" type="username"/> |
|
|
882 | </message> |
|
|
883 | |
|
|
884 | <message type="4428" name="add_tree" recv="yes"> |
|
|
885 | <p>See <ref ref="set_tree"/>. In addition, flags the tree as being |
|
|
886 | uploaded completely.</p> |
|
|
887 | <member name="channel" type="U16"/> |
|
|
888 | <member name="tree" type="TREE"/> |
885 | </message> |
889 | </message> |
886 | |
890 | |
887 | <message type="4433" name="req_result" recv="yes"> |
891 | <message type="4433" name="req_result" recv="yes"> |
888 | Unclear. |
892 | Unclear. |
889 | <member name="channel" type="U16"/> |
893 | <member name="channel" type="U16"/> |