ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/kgsueme/doc/protocol.html
Revision: 1.8
Committed: Thu Jun 5 17:54:18 2003 UTC (20 years, 11 months ago) by pcg
Content type: text/html
Branch: MAIN
Changes since 1.7: +35 -2 lines
Log Message:
*** empty log message ***

File Contents

# Content
1 <html>
2 <head>
3 <title>KGS Protocol Description</title>
4 <!--
5 Copyright (C) 2003 Marc Lehmannn &lt;pcg@goof.com&gt;
6
7 You can redistribute and/or modify this document under the terms of
8 the GNU General Public License as published by the Free Software
9 Foundation; either version 2 of the License, or (at your option) any
10 later version.
11
12 This document is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 -->
21 </head>
22 <body>
23
24 <h1>KGS Protocol Description</h1>
25
26 <p>This XML document describes the KGS protocol. It is also used
27 to automatically generate the perl parser for all the messages and
28 structures in the protocol. Adapting it to other languages should be
29 trivial.</p>
30
31 <p>If you feel you need to update the visual appearance of this
32 document, feel free to look at <tt>doc/doc2html.xsl</tt> and improve
33 it.</p>
34
35 <p>The current version of this document can always be found at
36 <a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/*checkout*/kgsueme/kgsueme/doc/protocol.xml?rev=HEAD&amp;content-type=text/xml">here</a>, while
37 the HTML version of it can be found
38 <a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/*checkout*/kgsueme/kgsueme/doc/protocol.html?rev=HEAD&amp;content-type=text/html">here</a>.
39 </p>
40
41 <h2>Structure and conventions of this document and the protocol</h2>
42
43 <p>"Send" means messages send from the client to the server, while
44 "received" means messages send by the server to the client.</p>
45
46 <p>Everything on the wire is in little-endian format (what a shame).</p>
47
48 <p>Primitive types are mostly integers (signed
49 "<code>I</code>&lt;bits&gt;", unsigned "<code>U</code>&lt;bits&gt;"),
50 ascii strings ("<code>username</code>"), or zero-terminated
51 UCS2-Strings ("<code>STRING</code>"). Yes, I know java is supposed to
52 do UTF-16, but no implementation seems to care...</p>
53
54 <p>For the rest, go figure or bug me, Marc Lehmann &lt;pcg@goof.com&gt;</p>
55
56 <h2>Stream and message structure.</h2>
57
58 <p>After connecting to the server, a handshake byte is sent. It's
59 the major version number of the protocol the client expects to
60 receive. Version 3 and 4 are mostly the same, except that Version 4
61 clients expect server messages to be compressed, version 3 clients
62 not.</p>
63
64 <p>The server sends back his protocol number, which is always 3 in
65 the current protocol. Most of the protocol variation is determined by
66 the server using the client version that is used in the initial login
67 message, not the initial handshake byte.</p>
68
69 <p>After the initial handshake, the client sends uncompressed
70 messages, while the server sends back a zlib-compressed
71 stream (<a href="http://rfc1950.x42.com/">rfc1950</a> and <a href="http://rfc1950.x42.com/">rfc1951</a>).</p>
72
73 <p>All messages have the same header:</p>
74
75 <h4>STRUCTURE message_header</h4>
76 <table border="1">
77 <tr>
78 <th>NAME</th>
79 <th>TYPE</th>
80 <th>DEFAULT</th>
81 <th>DEC-GUARD</th>
82 </tr>
83 <tr>
84 <td colspan="4">
85 </td>
86 </tr>
87 <tr>
88 <td>_unknown</td>
89 <td>U16</td>
90 <td></td>
91 <td>
92 <b></b> </td>
93 </tr>
94 <tr>
95 <td colspan="4">
96 </td>
97 </tr>
98 <tr>
99 <td>length</td>
100 <td>U16</td>
101 <td></td>
102 <td>
103 <b></b> </td>
104 </tr>
105 <tr>
106 <td colspan="4">
107 The length is the length of the full message including the header.
108 </td>
109 </tr>
110 <tr>
111 <td>type</td>
112 <td>U16</td>
113 <td></td>
114 <td>
115 <b></b> </td>
116 </tr>
117 <tr>
118 <td colspan="4">
119 If the type is &gt;= 0x4000 this is a message for a specific channel. The channel
120 number is always the next U16.
121 </td>
122 </tr>
123 </table>
124
125 <h2>Primitive types used in the protocol.</h2>
126
127 <h4>TYPE username</h4>
128 BASE TYPE: A<br />
129 LENGTH: 12<br />
130 MULTIPLIER: <br />
131
132 <p>The basic user or login name, used throughout the protocol
133 as a handle to the user.</p>
134
135 <h4>TYPE roomname</h4>
136 BASE TYPE: S<br />
137 LENGTH: 25<br />
138 MULTIPLIER: <br />
139 <!-- argh, how horribly broken -->
140
141 <p>Many strings in the protocol are fixed-width for no good reason
142 (maybe this is one reason for using compression in enwer versions, as
143 the packets itself are wasting lots of space.</p>
144
145 <h4>TYPE locale</h4>
146 BASE TYPE: A<br />
147 LENGTH: 5<br />
148 MULTIPLIER: <br />
149
150 <p>A kind of locale specifier. It seems the general format seems to be
151 lowercase language, underscore, uppercase location, e.g. en_US. More
152 fancy specifications don't fit.</p>
153
154 <h4>TYPE flag</h4>
155 BASE TYPE: U8<br />
156 LENGTH: <br />
157 MULTIPLIER: 1<br />
158
159 <p>Just a simple boolean value. 0 means false, and 1 generally true,
160 but I suggest ccepting != 0 as true.</p>
161
162 <h4>TYPE komi16</h4>
163 BASE TYPE: I16<br />
164 LENGTH: <br />
165 MULTIPLIER: 2<br />
166 <h4>TYPE komi32</h4>
167 BASE TYPE: I32<br />
168 LENGTH: <br />
169 MULTIPLIER: 2<br />
170
171 <p>Komi values are multiplied by 2 to make them integer in the
172 protocol. Of course, sometimes they are encoded in 16 bits, sometimes
173 in 32. Get used to this.</p>
174
175 <h4>TYPE result</h4>
176 BASE TYPE: I32<br />
177 LENGTH: <br />
178 MULTIPLIER: 2<br />
179
180 <p>The game result is also multiplied by four to give it higher
181 resolution. There are also special values for wins by time etc.</p>
182
183 <h4>TYPE score</h4>
184 BASE TYPE: I32<br />
185 LENGTH: <br />
186 MULTIPLIER: 4<br />
187
188 <p>A score value (used for displaying the score at the end of a game)
189 are multiplied by four for a change. I have not yet seen 0.25 scores,
190 please somebody tell me where they happen, or if they happen.</p>
191
192 <h4>TYPE time</h4>
193 BASE TYPE: U32<br />
194 LENGTH: <br />
195 MULTIPLIER: 1000<br />
196
197 <p>Time values are multiplied by 1000, giving them millisecond
198 accuracy.</p>
199
200 <h2>Constants, enumeration and set types used in the protocol.</h2>
201
202 <p>Baaah... not yet.</p>
203
204 <h2>Structs used in send &amp; receive messages</h2>
205
206 <h4>STRUCTURE user</h4>
207 CLASS: KGS::User<br />
208 <table border="1">
209 <tr>
210 <th>NAME</th>
211 <th>TYPE</th>
212 <th>DEFAULT</th>
213 <th>DEC-GUARD</th>
214 </tr>
215 <tr>
216 <td colspan="4">
217 </td>
218 </tr>
219 <tr>
220 <td>name</td>
221 <td>username</td>
222 <td></td>
223 <td>
224 <b></b> </td>
225 </tr>
226 <tr>
227 <td colspan="4">
228 </td>
229 </tr>
230 <tr>
231 <td>flags</td>
232 <td>U32</td>
233 <td>1</td>
234 <td>
235 <b></b> </td>
236 </tr>
237 <tr>
238 <td colspan="4">
239 </td>
240 </tr>
241 </table>
242
243 <h4>STRUCTURE rules</h4>
244 CLASS: KGS::Rules<br />
245 <table border="1">
246 <tr>
247 <th>NAME</th>
248 <th>TYPE</th>
249 <th>DEFAULT</th>
250 <th>DEC-GUARD</th>
251 </tr>
252 <tr>
253 <td colspan="4">
254 </td>
255 </tr>
256 <tr>
257 <td>ruleset</td>
258 <td>U8</td>
259 <td></td>
260 <td>
261 <b></b> </td>
262 </tr>
263 <tr>
264 <td colspan="4">
265 </td>
266 </tr>
267 <tr>
268 <td>size</td>
269 <td>U8</td>
270 <td></td>
271 <td>
272 <b></b> </td>
273 </tr>
274 <tr>
275 <td colspan="4">
276 </td>
277 </tr>
278 <tr>
279 <td>handicap</td>
280 <td>U8</td>
281 <td></td>
282 <td>
283 <b></b> </td>
284 </tr>
285 <tr>
286 <td colspan="4">
287 </td>
288 </tr>
289 <tr>
290 <td>komi</td>
291 <td>komi16</td>
292 <td></td>
293 <td>
294 <b></b> </td>
295 </tr>
296 <tr>
297 <td colspan="4">
298 </td>
299 </tr>
300 <tr>
301 <td>timesys</td>
302 <td>U8</td>
303 <td></td>
304 <td>
305 <b></b> </td>
306 </tr>
307 <tr>
308 <td colspan="4">
309 </td>
310 </tr>
311 <tr>
312 <td>time</td>
313 <td>U32</td>
314 <td></td>
315 <td>
316 <b></b> </td>
317 </tr>
318 <tr>
319 <td colspan="4">
320 </td>
321 </tr>
322 <tr>
323 <td>interval</td>
324 <td>U32</td>
325 <td></td>
326 <td>
327 <b></b> </td>
328 </tr>
329 <tr>
330 <td colspan="4">
331 byo-yomi time / canadian time
332 </td>
333 </tr>
334 <tr>
335 <td>count</td>
336 <td>U16</td>
337 <td></td>
338 <td>
339 <b></b> </td>
340 </tr>
341 <tr>
342 <td colspan="4">
343 periods / moves
344 </td>
345 </tr>
346 </table>
347
348 <h2>Structs used in send messages</h2>
349
350 <h4>MESSAGE login</h4>
351 NUMERIC TYPE (hex): 0000 SEND<table border="1">
352 <tr>
353 <th>NAME</th>
354 <th>TYPE</th>
355 <th>DEFAULT</th>
356 <th>DEC-GUARD</th>
357 </tr>
358 <tr>
359 <td colspan="4">
360 </td>
361 </tr>
362 <tr>
363 <td>ver_major</td>
364 <td>U32</td>
365 <td>2</td>
366 <td>
367 <b></b> </td>
368 </tr>
369 <tr>
370 <td colspan="4">
371 </td>
372 </tr>
373 <tr>
374 <td>ver_minor</td>
375 <td>U32</td>
376 <td>4</td>
377 <td>
378 <b></b> </td>
379 </tr>
380 <tr>
381 <td colspan="4">
382 </td>
383 </tr>
384 <tr>
385 <td>ver_micro</td>
386 <td>U32</td>
387 <td>67</td>
388 <td>
389 <b></b> </td>
390 </tr>
391 <tr>
392 <td colspan="4">
393 </td>
394 </tr>
395 <tr>
396 <td>name</td>
397 <td>username</td>
398 <td></td>
399 <td>
400 <b></b> </td>
401 </tr>
402 <tr>
403 <td colspan="4">
404 </td>
405 </tr>
406 <tr>
407 <td>password </td>
408 <td>U64</td>
409 <td>0</td>
410 <td>
411 <b></b> </td>
412 </tr>
413 <tr>
414 <td colspan="4">
415 Password is a number calculated as follows (VERY insecure, basically plaintext!):
416 password = 0; for char in characters do password ← password * 1055 + ascii_code (char);
417 </td>
418 </tr>
419 <tr>
420 <td>guest</td>
421 <td>flag</td>
422 <td>1</td>
423 <td>
424 <b></b> </td>
425 </tr>
426 <tr>
427 <td colspan="4">
428 </td>
429 </tr>
430 <tr>
431 <td>_unknown3</td>
432 <td>U16</td>
433 <td>0</td>
434 <td>
435 <b></b> </td>
436 </tr>
437 <tr>
438 <td colspan="4">
439 </td>
440 </tr>
441 <tr>
442 <td>locale</td>
443 <td>locale</td>
444 <td>"en_US"</td>
445 <td>
446 <b></b> </td>
447 </tr>
448 <tr>
449 <td colspan="4">
450 </td>
451 </tr>
452 <tr>
453 <td>clientver</td>
454 <td>DATA</td>
455 <td>"1.4.1_01:Swing app:Sun Microsystems Inc."</td>
456 <td>
457 <b></b> </td>
458 </tr>
459 <tr>
460 <td colspan="4">
461 The "default" is the java vm version, not exactly he client version. However,
462 you should always send a tetx like "Jonathan's C client bersion 0.6" or somesuch,
463 so the server can, if necessary, block broken clients or client versions.
464 </td>
465 </tr>
466 </table>
467
468 <h4>MESSAGE server_stats</h4>
469 NUMERIC TYPE (hex): 0014 SEND<table border="1">
470 <tr>
471 <th>NAME</th>
472 <th>TYPE</th>
473 <th>DEFAULT</th>
474 <th>DEC-GUARD</th>
475 </tr>
476 <tr>
477 <td colspan="4">
478 Request server statistics.
479 </td>
480 </tr>
481 </table>
482
483 <h4>MESSAGE pic_req</h4>
484 NUMERIC TYPE (hex): 0021 SEND<table border="1">
485 <tr>
486 <th>NAME</th>
487 <th>TYPE</th>
488 <th>DEFAULT</th>
489 <th>DEC-GUARD</th>
490 </tr>
491 <tr>
492 <td colspan="4">
493 Request a user picture from the server.
494 </td>
495 </tr>
496 <tr>
497 <td>name</td>
498 <td>username</td>
499 <td></td>
500 <td>
501 <b></b> </td>
502 </tr>
503 <tr>
504 <td colspan="4">
505 </td>
506 </tr>
507 </table>
508
509 <h4>MESSAGE pic_upload</h4>
510 NUMERIC TYPE (hex): 0021 SEND<table border="1">
511 <tr>
512 <th>NAME</th>
513 <th>TYPE</th>
514 <th>DEFAULT</th>
515 <th>DEC-GUARD</th>
516 </tr>
517 <tr>
518 <td colspan="4">
519 Same code as pic_req, but with an additional data section that
520 must contain a JPEG image that is &lt;=7KB. It must have 141×200 pixels.
521 </td>
522 </tr>
523 <tr>
524 <td>name</td>
525 <td>username</td>
526 <td></td>
527 <td>
528 <b></b> </td>
529 </tr>
530 <tr>
531 <td colspan="4">
532 </td>
533 </tr>
534 <tr>
535 <td>data</td>
536 <td>DATA</td>
537 <td></td>
538 <td>
539 <b></b> </td>
540 </tr>
541 <tr>
542 <td colspan="4">
543 </td>
544 </tr>
545 </table>
546
547 <h4>MESSAGE gnotice</h4>
548 NUMERIC TYPE (hex): 0100 SEND<table border="1">
549 <tr>
550 <th>NAME</th>
551 <th>TYPE</th>
552 <th>DEFAULT</th>
553 <th>DEC-GUARD</th>
554 </tr>
555 <tr>
556 <td colspan="4">
557 Send a global message. Maybe. Never tried, for obvious reasons :/
558 </td>
559 </tr>
560 <tr>
561 <td>notice</td>
562 <td>STRING</td>
563 <td></td>
564 <td>
565 <b></b> </td>
566 </tr>
567 <tr>
568 <td colspan="4">
569 </td>
570 </tr>
571 </table>
572
573 <h4>MESSAGE list_rooms</h4>
574 NUMERIC TYPE (hex): 0318 SEND<table border="1">
575 <tr>
576 <th>NAME</th>
577 <th>TYPE</th>
578 <th>DEFAULT</th>
579 <th>DEC-GUARD</th>
580 </tr>
581 <tr>
582 <td colspan="4">
583 List the rooms in a specific group/category.
584 </td>
585 </tr>
586 <tr>
587 <td>group</td>
588 <td>U8</td>
589 <td></td>
590 <td>
591 <b></b> </td>
592 </tr>
593 <tr>
594 <td colspan="4">
595 </td>
596 </tr>
597 </table>
598
599 <h4>MESSAGE new_room</h4>
600 NUMERIC TYPE (hex): 031a SEND<table border="1">
601 <tr>
602 <th>NAME</th>
603 <th>TYPE</th>
604 <th>DEFAULT</th>
605 <th>DEC-GUARD</th>
606 </tr>
607 <tr>
608 <td colspan="4">
609 Create a new room. Not verified.
610 </td>
611 </tr>
612 <tr>
613 <td>name</td>
614 <td>username</td>
615 <td></td>
616 <td>
617 <b></b> </td>
618 </tr>
619 <tr>
620 <td colspan="4">
621 </td>
622 </tr>
623 <tr>
624 <td>i1</td>
625 <td>U32</td>
626 <td>0</td>
627 <td>
628 <b></b> </td>
629 </tr>
630 <tr>
631 <td colspan="4">
632 </td>
633 </tr>
634 <tr>
635 <td>b1</td>
636 <td>U8</td>
637 <td>0</td>
638 <td>
639 <b></b> </td>
640 </tr>
641 <tr>
642 <td colspan="4">
643 </td>
644 </tr>
645 <tr>
646 <td>b2</td>
647 <td>U8</td>
648 <td>255</td>
649 <td>
650 <b></b> </td>
651 </tr>
652 <tr>
653 <td colspan="4">
654 </td>
655 </tr>
656 <tr>
657 <td>b3</td>
658 <td>U8</td>
659 <td>255</td>
660 <td>
661 <b></b> </td>
662 </tr>
663 <tr>
664 <td colspan="4">
665 </td>
666 </tr>
667 <tr>
668 <td>group</td>
669 <td>U8</td>
670 <td>1</td>
671 <td>
672 <b></b> </td>
673 </tr>
674 <tr>
675 <td colspan="4">
676 </td>
677 </tr>
678 <tr>
679 <td>name</td>
680 <td>STRING</td>
681 <td></td>
682 <td>
683 <b></b> </td>
684 </tr>
685 <tr>
686 <td colspan="4">
687 </td>
688 </tr>
689 <tr>
690 <td>description</td>
691 <td>STRING</td>
692 <td></td>
693 <td>
694 <b></b> </td>
695 </tr>
696 <tr>
697 <td colspan="4">
698 </td>
699 </tr>
700 <tr>
701 <td>flags</td>
702 <td>U8</td>
703 <td></td>
704 <td>
705 <b></b> </td>
706 </tr>
707 <tr>
708 <td colspan="4">
709 0x10 .. private room etc.. see code
710 </td>
711 </tr>
712 </table>
713
714 <h4>MESSAGE join_room</h4>
715 NUMERIC TYPE (hex): 4300 SEND<table border="1">
716 <tr>
717 <th>NAME</th>
718 <th>TYPE</th>
719 <th>DEFAULT</th>
720 <th>DEC-GUARD</th>
721 </tr>
722 <tr>
723 <td colspan="4">
724 </td>
725 </tr>
726 <tr>
727 <td>channel</td>
728 <td>U16</td>
729 <td></td>
730 <td>
731 <b></b> </td>
732 </tr>
733 <tr>
734 <td colspan="4">
735 </td>
736 </tr>
737 <tr>
738 <td>user</td>
739 <td>user</td>
740 <td></td>
741 <td>
742 <b></b> </td>
743 </tr>
744 <tr>
745 <td colspan="4">
746 </td>
747 </tr>
748 </table>
749
750 <h4>MESSAGE msg_room</h4>
751 NUMERIC TYPE (hex): 4301 SEND<table border="1">
752 <tr>
753 <th>NAME</th>
754 <th>TYPE</th>
755 <th>DEFAULT</th>
756 <th>DEC-GUARD</th>
757 </tr>
758 <tr>
759 <td colspan="4">
760 </td>
761 </tr>
762 <tr>
763 <td>channel</td>
764 <td>U16</td>
765 <td></td>
766 <td>
767 <b></b> </td>
768 </tr>
769 <tr>
770 <td colspan="4">
771 </td>
772 </tr>
773 <tr>
774 <td>name</td>
775 <td>username</td>
776 <td></td>
777 <td>
778 <b></b> </td>
779 </tr>
780 <tr>
781 <td colspan="4">
782 </td>
783 </tr>
784 <tr>
785 <td>message</td>
786 <td>STRING</td>
787 <td></td>
788 <td>
789 <b></b> </td>
790 </tr>
791 <tr>
792 <td colspan="4">
793 </td>
794 </tr>
795 </table>
796
797 <h4>MESSAGE part_room</h4>
798 NUMERIC TYPE (hex): 4302 SEND<table border="1">
799 <tr>
800 <th>NAME</th>
801 <th>TYPE</th>
802 <th>DEFAULT</th>
803 <th>DEC-GUARD</th>
804 </tr>
805 <tr>
806 <td colspan="4">
807 </td>
808 </tr>
809 <tr>
810 <td>channel</td>
811 <td>U16</td>
812 <td></td>
813 <td>
814 <b></b> </td>
815 </tr>
816 <tr>
817 <td colspan="4">
818 </td>
819 </tr>
820 <tr>
821 <td>name</td>
822 <td>username</td>
823 <td></td>
824 <td>
825 <b></b> </td>
826 </tr>
827 <tr>
828 <td colspan="4">
829 </td>
830 </tr>
831 </table>
832
833 <h4>MESSAGE new_game</h4>
834 NUMERIC TYPE (hex): 4305 SEND<table border="1">
835 <tr>
836 <th>NAME</th>
837 <th>TYPE</th>
838 <th>DEFAULT</th>
839 <th>DEC-GUARD</th>
840 </tr>
841 <tr>
842 <td colspan="4">
843 </td>
844 </tr>
845 <tr>
846 <td>channel</td>
847 <td>U16</td>
848 <td></td>
849 <td>
850 <b></b> </td>
851 </tr>
852 <tr>
853 <td colspan="4">
854 </td>
855 </tr>
856 <tr>
857 <td>id</td>
858 <td>U16</td>
859 <td></td>
860 <td>
861 <b></b> </td>
862 </tr>
863 <tr>
864 <td colspan="4">
865 </td>
866 </tr>
867 <tr>
868 <td>gametype</td>
869 <td>U32</td>
870 <td></td>
871 <td>
872 <b></b> </td>
873 </tr>
874 <tr>
875 <td colspan="4">
876 </td>
877 </tr>
878 <tr>
879 <td>rules</td>
880 <td>rules</td>
881 <td></td>
882 <td>
883 <b></b> </td>
884 </tr>
885 <tr>
886 <td colspan="4">
887 </td>
888 </tr>
889 <tr>
890 <td>notes</td>
891 <td>STRING</td>
892 <td></td>
893 <td>
894 <b></b> </td>
895 </tr>
896 <tr>
897 <td colspan="4">
898 </td>
899 </tr>
900 </table>
901
902 <h4>MESSAGE req_games</h4>
903 NUMERIC TYPE (hex): 430b SEND<table border="1">
904 <tr>
905 <th>NAME</th>
906 <th>TYPE</th>
907 <th>DEFAULT</th>
908 <th>DEC-GUARD</th>
909 </tr>
910 <tr>
911 <td colspan="4">
912 request to update room game list (send once per minute)
913 </td>
914 </tr>
915 <tr>
916 <td>channel</td>
917 <td>U16</td>
918 <td></td>
919 <td>
920 <b></b> </td>
921 </tr>
922 <tr>
923 <td colspan="4">
924 </td>
925 </tr>
926 </table>
927
928 <h4>MESSAGE req_desc</h4>
929 NUMERIC TYPE (hex): 4319 SEND<table border="1">
930 <tr>
931 <th>NAME</th>
932 <th>TYPE</th>
933 <th>DEFAULT</th>
934 <th>DEC-GUARD</th>
935 </tr>
936 <tr>
937 <td colspan="4">
938 Request room description.
939 </td>
940 </tr>
941 <tr>
942 <td>channel</td>
943 <td>U16</td>
944 <td></td>
945 <td>
946 <b></b> </td>
947 </tr>
948 <tr>
949 <td colspan="4">
950 </td>
951 </tr>
952 </table>
953
954 <h4>MESSAGE send_chal</h4>
955 NUMERIC TYPE (hex): 4400 SEND<table border="1">
956 <tr>
957 <th>NAME</th>
958 <th>TYPE</th>
959 <th>DEFAULT</th>
960 <th>DEC-GUARD</th>
961 </tr>
962 <tr>
963 <td colspan="4">
964 No idea.
965 </td>
966 </tr>
967 <tr>
968 <td>channel</td>
969 <td>U16</td>
970 <td></td>
971 <td>
972 <b></b> </td>
973 </tr>
974 <tr>
975 <td colspan="4">
976 </td>
977 </tr>
978 <tr>
979 <td>black</td>
980 <td>username</td>
981 <td></td>
982 <td>
983 <b></b> </td>
984 </tr>
985 <tr>
986 <td colspan="4">
987 </td>
988 </tr>
989 <tr>
990 <td>white</td>
991 <td>username</td>
992 <td></td>
993 <td>
994 <b></b> </td>
995 </tr>
996 <tr>
997 <td colspan="4">
998 More following... TREE or challenge.
999 </td>
1000 </tr>
1001 </table>
1002
1003 <h4>MESSAGE join_game</h4>
1004 NUMERIC TYPE (hex): 4403 SEND<table border="1">
1005 <tr>
1006 <th>NAME</th>
1007 <th>TYPE</th>
1008 <th>DEFAULT</th>
1009 <th>DEC-GUARD</th>
1010 </tr>
1011 <tr>
1012 <td colspan="4">
1013 </td>
1014 </tr>
1015 <tr>
1016 <td>channel</td>
1017 <td>U16</td>
1018 <td></td>
1019 <td>
1020 <b></b> </td>
1021 </tr>
1022 <tr>
1023 <td colspan="4">
1024 </td>
1025 </tr>
1026 <tr>
1027 <td>user</td>
1028 <td>user</td>
1029 <td></td>
1030 <td>
1031 <b></b> </td>
1032 </tr>
1033 <tr>
1034 <td colspan="4">
1035 </td>
1036 </tr>
1037 </table>
1038
1039 <h4>MESSAGE part_game</h4>
1040 NUMERIC TYPE (hex): 4404 SEND<table border="1">
1041 <tr>
1042 <th>NAME</th>
1043 <th>TYPE</th>
1044 <th>DEFAULT</th>
1045 <th>DEC-GUARD</th>
1046 </tr>
1047 <tr>
1048 <td colspan="4">
1049 </td>
1050 </tr>
1051 <tr>
1052 <td>channel</td>
1053 <td>U16</td>
1054 <td></td>
1055 <td>
1056 <b></b> </td>
1057 </tr>
1058 <tr>
1059 <td colspan="4">
1060 </td>
1061 </tr>
1062 <tr>
1063 <td>name</td>
1064 <td>username</td>
1065 <td></td>
1066 <td>
1067 <b></b> </td>
1068 </tr>
1069 <tr>
1070 <td colspan="4">
1071 </td>
1072 </tr>
1073 </table>
1074
1075 <h4>MESSAGE set_tree</h4>
1076 NUMERIC TYPE (hex): 4405 SEND<table border="1">
1077 <tr>
1078 <th>NAME</th>
1079 <th>TYPE</th>
1080 <th>DEFAULT</th>
1081 <th>DEC-GUARD</th>
1082 </tr>
1083 <tr>
1084 <td colspan="4">
1085 </td>
1086 </tr>
1087 <tr>
1088 <td>channel</td>
1089 <td>U16</td>
1090 <td></td>
1091 <td>
1092 <b></b> </td>
1093 </tr>
1094 <tr>
1095 <td colspan="4">
1096 </td>
1097 </tr>
1098 <tr>
1099 <td>tree</td>
1100 <td>TREE</td>
1101 <td></td>
1102 <td>
1103 <b></b> </td>
1104 </tr>
1105 <tr>
1106 <td colspan="4">
1107 </td>
1108 </tr>
1109 </table>
1110
1111 <h4>MESSAGE get_tree</h4>
1112 NUMERIC TYPE (hex): 4408 SEND<table border="1">
1113 <tr>
1114 <th>NAME</th>
1115 <th>TYPE</th>
1116 <th>DEFAULT</th>
1117 <th>DEC-GUARD</th>
1118 </tr>
1119 <tr>
1120 <td colspan="4">
1121 </td>
1122 </tr>
1123 <tr>
1124 <td>channel</td>
1125 <td>U16</td>
1126 <td></td>
1127 <td>
1128 <b></b> </td>
1129 </tr>
1130 <tr>
1131 <td colspan="4">
1132 </td>
1133 </tr>
1134 <tr>
1135 <td>node</td>
1136 <td>U32</td>
1137 <td></td>
1138 <td>
1139 <b></b> </td>
1140 </tr>
1141 <tr>
1142 <td colspan="4">
1143 </td>
1144 </tr>
1145 </table>
1146
1147 <h4>MESSAGE claim_win</h4>
1148 NUMERIC TYPE (hex): 440c SEND<table border="1">
1149 <tr>
1150 <th>NAME</th>
1151 <th>TYPE</th>
1152 <th>DEFAULT</th>
1153 <th>DEC-GUARD</th>
1154 </tr>
1155 <tr>
1156 <td colspan="4">
1157 </td>
1158 </tr>
1159 <tr>
1160 <td>channel</td>
1161 <td>U16</td>
1162 <td></td>
1163 <td>
1164 <b></b> </td>
1165 </tr>
1166 <tr>
1167 <td colspan="4">
1168 </td>
1169 </tr>
1170 <tr>
1171 <td>_byte</td>
1172 <td>U8 </td>
1173 <td></td>
1174 <td>
1175 <b></b> </td>
1176 </tr>
1177 <tr>
1178 <td colspan="4">
1179 Player colour maybe? Unclear.
1180 </td>
1181 </tr>
1182 </table>
1183
1184 <h4>MESSAGE add_time</h4>
1185 NUMERIC TYPE (hex): 440d SEND<table border="1">
1186 <tr>
1187 <th>NAME</th>
1188 <th>TYPE</th>
1189 <th>DEFAULT</th>
1190 <th>DEC-GUARD</th>
1191 </tr>
1192 <tr>
1193 <td colspan="4">
1194 </td>
1195 </tr>
1196 <tr>
1197 <td>channel</td>
1198 <td>U16</td>
1199 <td></td>
1200 <td>
1201 <b></b> </td>
1202 </tr>
1203 <tr>
1204 <td colspan="4">
1205 </td>
1206 </tr>
1207 <tr>
1208 <td>time</td>
1209 <td>U32</td>
1210 <td></td>
1211 <td>
1212 <b></b> </td>
1213 </tr>
1214 <tr>
1215 <td colspan="4">
1216 </td>
1217 </tr>
1218 <tr>
1219 <td>player</td>
1220 <td>U8</td>
1221 <td></td>
1222 <td>
1223 <b></b> </td>
1224 </tr>
1225 <tr>
1226 <td colspan="4">
1227 </td>
1228 </tr>
1229 </table>
1230
1231 <h4>MESSAGE grant_undo</h4>
1232 NUMERIC TYPE (hex): 440f SEND<table border="1">
1233 <tr>
1234 <th>NAME</th>
1235 <th>TYPE</th>
1236 <th>DEFAULT</th>
1237 <th>DEC-GUARD</th>
1238 </tr>
1239 <tr>
1240 <td colspan="4">
1241 </td>
1242 </tr>
1243 <tr>
1244 <td>channel</td>
1245 <td>U16</td>
1246 <td></td>
1247 <td>
1248 <b></b> </td>
1249 </tr>
1250 <tr>
1251 <td colspan="4">
1252 </td>
1253 </tr>
1254 </table>
1255
1256 <h4>MESSAGE resign_game</h4>
1257 NUMERIC TYPE (hex): 4410 SEND<table border="1">
1258 <tr>
1259 <th>NAME</th>
1260 <th>TYPE</th>
1261 <th>DEFAULT</th>
1262 <th>DEC-GUARD</th>
1263 </tr>
1264 <tr>
1265 <td colspan="4">
1266 </td>
1267 </tr>
1268 <tr>
1269 <td>channel</td>
1270 <td>U16</td>
1271 <td></td>
1272 <td>
1273 <b></b> </td>
1274 </tr>
1275 <tr>
1276 <td colspan="4">
1277 </td>
1278 </tr>
1279 <tr>
1280 <td>player</td>
1281 <td>U8</td>
1282 <td></td>
1283 <td>
1284 <b></b> </td>
1285 </tr>
1286 <tr>
1287 <td colspan="4">
1288 </td>
1289 </tr>
1290 </table>
1291
1292 <h4>MESSAGE set_teacher</h4>
1293 NUMERIC TYPE (hex): 441a SEND<table border="1">
1294 <tr>
1295 <th>NAME</th>
1296 <th>TYPE</th>
1297 <th>DEFAULT</th>
1298 <th>DEC-GUARD</th>
1299 </tr>
1300 <tr>
1301 <td colspan="4">
1302 </td>
1303 </tr>
1304 <tr>
1305 <td>channel</td>
1306 <td>U16</td>
1307 <td></td>
1308 <td>
1309 <b></b> </td>
1310 </tr>
1311 <tr>
1312 <td colspan="4">
1313 </td>
1314 </tr>
1315 <tr>
1316 <td>name</td>
1317 <td>username</td>
1318 <td></td>
1319 <td>
1320 <b></b> </td>
1321 </tr>
1322 <tr>
1323 <td colspan="4">
1324 </td>
1325 </tr>
1326 </table>
1327
1328 <h4>MESSAGE add_user</h4>
1329 NUMERIC TYPE (hex): 4422 SEND<table border="1">
1330 <tr>
1331 <th>NAME</th>
1332 <th>TYPE</th>
1333 <th>DEFAULT</th>
1334 <th>DEC-GUARD</th>
1335 </tr>
1336 <tr>
1337 <td colspan="4">
1338 </td>
1339 </tr>
1340 <tr>
1341 <td>channel</td>
1342 <td>U16</td>
1343 <td></td>
1344 <td>
1345 <b></b> </td>
1346 </tr>
1347 <tr>
1348 <td colspan="4">
1349 </td>
1350 </tr>
1351 <tr>
1352 <td>othername</td>
1353 <td>username</td>
1354 <td></td>
1355 <td>
1356 <b></b> </td>
1357 </tr>
1358 <tr>
1359 <td colspan="4">
1360 </td>
1361 </tr>
1362 <tr>
1363 <td>name</td>
1364 <td>username</td>
1365 <td></td>
1366 <td>
1367 <b></b> </td>
1368 </tr>
1369 <tr>
1370 <td colspan="4">; # gives user access to the game (to what? ;)
1371 </td>
1372 </tr>
1373 </table>
1374
1375 <h4>MESSAGE set_privacy</h4>
1376 NUMERIC TYPE (hex): 4423 SEND<table border="1">
1377 <tr>
1378 <th>NAME</th>
1379 <th>TYPE</th>
1380 <th>DEFAULT</th>
1381 <th>DEC-GUARD</th>
1382 </tr>
1383 <tr>
1384 <td colspan="4">
1385 </td>
1386 </tr>
1387 <tr>
1388 <td>channel</td>
1389 <td>U16</td>
1390 <td></td>
1391 <td>
1392 <b></b> </td>
1393 </tr>
1394 <tr>
1395 <td colspan="4">
1396 </td>
1397 </tr>
1398 <tr>
1399 <td>private</td>
1400 <td>U8</td>
1401 <td></td>
1402 <td>
1403 <b></b> </td>
1404 </tr>
1405 <tr>
1406 <td colspan="4">
1407 </td>
1408 </tr>
1409 </table>
1410
1411 <h4>MESSAGE reject_chal</h4>
1412 NUMERIC TYPE (hex): 4429 SEND<table border="1">
1413 <tr>
1414 <th>NAME</th>
1415 <th>TYPE</th>
1416 <th>DEFAULT</th>
1417 <th>DEC-GUARD</th>
1418 </tr>
1419 <tr>
1420 <td colspan="4">
1421 </td>
1422 </tr>
1423 <tr>
1424 <td>channel</td>
1425 <td>U16</td>
1426 <td></td>
1427 <td>
1428 <b></b> </td>
1429 </tr>
1430 <tr>
1431 <td colspan="4">
1432 </td>
1433 </tr>
1434 <tr>
1435 <td>name</td>
1436 <td>username</td>
1437 <td></td>
1438 <td>
1439 <b></b> </td>
1440 </tr>
1441 <tr>
1442 <td colspan="4">
1443 </td>
1444 </tr>
1445 </table>
1446
1447 <h4>MESSAGE req_result</h4>
1448 NUMERIC TYPE (hex): 4433 SEND<table border="1">
1449 <tr>
1450 <th>NAME</th>
1451 <th>TYPE</th>
1452 <th>DEFAULT</th>
1453 <th>DEC-GUARD</th>
1454 </tr>
1455 <tr>
1456 <td colspan="4">
1457 </td>
1458 </tr>
1459 <tr>
1460 <td>channel</td>
1461 <td>U16</td>
1462 <td></td>
1463 <td>
1464 <b></b> </td>
1465 </tr>
1466 <tr>
1467 <td colspan="4">
1468 </td>
1469 </tr>
1470 </table>
1471
1472 <h2>Structs mainly used in receive messages</h2>
1473
1474 <h4>STRUCTURE challenge_defaults</h4>
1475 <table border="1">
1476 <tr>
1477 <th>NAME</th>
1478 <th>TYPE</th>
1479 <th>DEFAULT</th>
1480 <th>DEC-GUARD</th>
1481 </tr>
1482 <tr>
1483 <td colspan="4">
1484 </td>
1485 </tr>
1486 <tr>
1487 <td>gametype</td>
1488 <td>U32</td>
1489 <td></td>
1490 <td>
1491 <b></b> </td>
1492 </tr>
1493 <tr>
1494 <td colspan="4">
1495 </td>
1496 </tr>
1497 <tr>
1498 <td>size</td>
1499 <td>U32</td>
1500 <td></td>
1501 <td>
1502 <b></b> </td>
1503 </tr>
1504 <tr>
1505 <td colspan="4">
1506 </td>
1507 </tr>
1508 <tr>
1509 <td>timesys</td>
1510 <td>U32</td>
1511 <td></td>
1512 <td>
1513 <b></b> </td>
1514 </tr>
1515 <tr>
1516 <td colspan="4">
1517 </td>
1518 </tr>
1519 <tr>
1520 <td>time</td>
1521 <td>U32</td>
1522 <td></td>
1523 <td>
1524 <b></b> </td>
1525 </tr>
1526 <tr>
1527 <td colspan="4">
1528 </td>
1529 </tr>
1530 <tr>
1531 <td>byo_time</td>
1532 <td>U32</td>
1533 <td></td>
1534 <td>
1535 <b></b> </td>
1536 </tr>
1537 <tr>
1538 <td colspan="4">
1539 </td>
1540 </tr>
1541 <tr>
1542 <td>byo_periods</td>
1543 <td>U32</td>
1544 <td></td>
1545 <td>
1546 <b></b> </td>
1547 </tr>
1548 <tr>
1549 <td colspan="4">
1550 </td>
1551 </tr>
1552 <tr>
1553 <td>can_time</td>
1554 <td>U32</td>
1555 <td></td>
1556 <td>
1557 <b></b> </td>
1558 </tr>
1559 <tr>
1560 <td colspan="4">
1561 </td>
1562 </tr>
1563 <tr>
1564 <td>can_stones</td>
1565 <td>U32</td>
1566 <td></td>
1567 <td>
1568 <b></b> </td>
1569 </tr>
1570 <tr>
1571 <td colspan="4">
1572 </td>
1573 </tr>
1574 </table>
1575
1576 <h4>STRUCTURE challenge</h4>
1577 CLASS: KGS::Challenge<br />
1578 <table border="1">
1579 <tr>
1580 <th>NAME</th>
1581 <th>TYPE</th>
1582 <th>DEFAULT</th>
1583 <th>DEC-GUARD</th>
1584 </tr>
1585 <tr>
1586 <td colspan="4">
1587 </td>
1588 </tr>
1589 <tr>
1590 <td>user1</td>
1591 <td>user</td>
1592 <td></td>
1593 <td>
1594 <b></b> </td>
1595 </tr>
1596 <tr>
1597 <td colspan="4">
1598 </td>
1599 </tr>
1600 <tr>
1601 <td>user2</td>
1602 <td>user</td>
1603 <td></td>
1604 <td>
1605 <b></b> </td>
1606 </tr>
1607 <tr>
1608 <td colspan="4">
1609 </td>
1610 </tr>
1611 <tr>
1612 <td>gametype</td>
1613 <td>U32</td>
1614 <td></td>
1615 <td>
1616 <b></b> </td>
1617 </tr>
1618 <tr>
1619 <td colspan="4">
1620 </td>
1621 </tr>
1622 <tr>
1623 <td>rules</td>
1624 <td>rules</td>
1625 <td></td>
1626 <td>
1627 <b></b> </td>
1628 </tr>
1629 <tr>
1630 <td colspan="4">
1631 Maybe the rules" are in TREE format. I forgot.
1632 </td>
1633 </tr>
1634 </table>
1635
1636 <h4>STRUCTURE game</h4>
1637 CLASS: KGS::Game<br />
1638 <table border="1">
1639 <tr>
1640 <th>NAME</th>
1641 <th>TYPE</th>
1642 <th>DEFAULT</th>
1643 <th>DEC-GUARD</th>
1644 </tr>
1645 <tr>
1646 <td colspan="4">
1647 </td>
1648 </tr>
1649 <tr>
1650 <td>channel</td>
1651 <td>U16</td>
1652 <td></td>
1653 <td>
1654 <b></b> </td>
1655 </tr>
1656 <tr>
1657 <td colspan="4">
1658 </td>
1659 </tr>
1660 <tr>
1661 <td>type</td>
1662 <td>U32</td>
1663 <td></td>
1664 <td>
1665 <b></b> </td>
1666 </tr>
1667 <tr>
1668 <td colspan="4">
1669 </td>
1670 </tr>
1671 <tr>
1672 <td>user1</td>
1673 <td>user</td>
1674 <td></td>
1675 <td>
1676 <b></b> </td>
1677 </tr>
1678 <tr>
1679 <td colspan="4">
1680 White
1681 </td>
1682 </tr>
1683 <tr>
1684 <td>user2</td>
1685 <td>user</td>
1686 <td></td>
1687 <td>
1688 <b></b> </td>
1689 </tr>
1690 <tr>
1691 <td colspan="4">
1692 Black
1693 </td>
1694 </tr>
1695 <tr>
1696 <td>user3</td>
1697 <td>user</td>
1698 <td></td>
1699 <td>
1700 <b></b> </td>
1701 </tr>
1702 <tr>
1703 <td colspan="4">
1704 Owner
1705 </td>
1706 </tr>
1707 <tr>
1708 <td>size</td>
1709 <td>U32</td>
1710 <td></td>
1711 <td>
1712 <b></b> </td>
1713 </tr>
1714 <tr>
1715 <td colspan="4">
1716 </td>
1717 </tr>
1718 <tr>
1719 <td>handicap</td>
1720 <td>I32</td>
1721 <td></td>
1722 <td>
1723 <b></b> </td>
1724 </tr>
1725 <tr>
1726 <td colspan="4">
1727 &lt; 0 not fully setup
1728 </td>
1729 </tr>
1730 <tr>
1731 <td>komi</td>
1732 <td>komi32</td>
1733 <td></td>
1734 <td>
1735 <b></b> </td>
1736 </tr>
1737 <tr>
1738 <td colspan="4">
1739 </td>
1740 </tr>
1741 <tr>
1742 <td>moves</td>
1743 <td>U16</td>
1744 <td></td>
1745 <td>
1746 <b></b> </td>
1747 </tr>
1748 <tr>
1749 <td colspan="4">
1750 </td>
1751 </tr>
1752 <tr>
1753 <td>flags</td>
1754 <td>U16</td>
1755 <td></td>
1756 <td>
1757 <b></b> </td>
1758 </tr>
1759 <tr>
1760 <td colspan="4">
1761 </td>
1762 </tr>
1763 <tr>
1764 <td>observers</td>
1765 <td>U32</td>
1766 <td></td>
1767 <td>
1768 <b></b> </td>
1769 </tr>
1770 <tr>
1771 <td colspan="4">
1772 </td>
1773 </tr>
1774 <tr>
1775 <td>saved</td>
1776 <td>flag</td>
1777 <td></td>
1778 <td>
1779 <b></b> </td>
1780 </tr>
1781 <tr>
1782 <td colspan="4">
1783 </td>
1784 </tr>
1785 <tr>
1786 <td>notes</td>
1787 <td>STRING</td>
1788 <td></td>
1789 <td>
1790 <b>handicap</b> &lt; 0</td>
1791 </tr>
1792 <tr>
1793 <td colspan="4">
1794 </td>
1795 </tr>
1796 </table>
1797
1798 <h4>STRUCTURE room_obs</h4>
1799 <table border="1">
1800 <tr>
1801 <th>NAME</th>
1802 <th>TYPE</th>
1803 <th>DEFAULT</th>
1804 <th>DEC-GUARD</th>
1805 </tr>
1806 <tr>
1807 <td colspan="4">
1808 </td>
1809 </tr>
1810 <tr>
1811 <td>name</td>
1812 <td>roomname</td>
1813 <td></td>
1814 <td>
1815 <b></b> </td>
1816 </tr>
1817 <tr>
1818 <td colspan="4">
1819 </td>
1820 </tr>
1821 <tr>
1822 <td>channel</td>
1823 <td>U16</td>
1824 <td></td>
1825 <td>
1826 <b></b> </td>
1827 </tr>
1828 <tr>
1829 <td colspan="4">
1830 </td>
1831 </tr>
1832 <tr>
1833 <td>flags</td>
1834 <td>U32</td>
1835 <td></td>
1836 <td>
1837 <b></b> </td>
1838 </tr>
1839 <tr>
1840 <td colspan="4">
1841 </td>
1842 </tr>
1843 <tr>
1844 <td>users</td>
1845 <td>U32</td>
1846 <td></td>
1847 <td>
1848 <b></b> </td>
1849 </tr>
1850 <tr>
1851 <td colspan="4">
1852 </td>
1853 </tr>
1854 </table>
1855
1856 <h4>STRUCTURE room</h4>
1857 CLASS: KGS::Room<br />
1858 <table border="1">
1859 <tr>
1860 <th>NAME</th>
1861 <th>TYPE</th>
1862 <th>DEFAULT</th>
1863 <th>DEC-GUARD</th>
1864 </tr>
1865 <tr>
1866 <td colspan="4">
1867 </td>
1868 </tr>
1869 <tr>
1870 <td>channel</td>
1871 <td>U16</td>
1872 <td></td>
1873 <td>
1874 <b></b> </td>
1875 </tr>
1876 <tr>
1877 <td colspan="4">
1878 </td>
1879 </tr>
1880 <tr>
1881 <td>flags</td>
1882 <td>U8</td>
1883 <td></td>
1884 <td>
1885 <b></b> </td>
1886 </tr>
1887 <tr>
1888 <td colspan="4">
1889 </td>
1890 </tr>
1891 <tr>
1892 <td>group</td>
1893 <td>U8</td>
1894 <td></td>
1895 <td>
1896 <b></b> </td>
1897 </tr>
1898 <tr>
1899 <td colspan="4">
1900 </td>
1901 </tr>
1902 <tr>
1903 <td>users</td>
1904 <td>U16</td>
1905 <td></td>
1906 <td>
1907 <b></b> </td>
1908 </tr>
1909 <tr>
1910 <td colspan="4">
1911 </td>
1912 </tr>
1913 <tr>
1914 <td>games</td>
1915 <td>U16</td>
1916 <td></td>
1917 <td>
1918 <b></b> </td>
1919 </tr>
1920 <tr>
1921 <td colspan="4">
1922 </td>
1923 </tr>
1924 <tr>
1925 <td>name</td>
1926 <td>STRING</td>
1927 <td></td>
1928 <td>
1929 <b></b> </td>
1930 </tr>
1931 <tr>
1932 <td colspan="4">
1933 </td>
1934 </tr>
1935 </table>
1936
1937 <h4>STRUCTURE score</h4>
1938 CLASS: KGS::Score<br />
1939 <table border="1">
1940 <tr>
1941 <th>NAME</th>
1942 <th>TYPE</th>
1943 <th>DEFAULT</th>
1944 <th>DEC-GUARD</th>
1945 </tr>
1946 <tr>
1947 <td colspan="4">
1948 </td>
1949 </tr>
1950 <tr>
1951 <td>score</td>
1952 <td>score</td>
1953 <td></td>
1954 <td>
1955 <b></b> </td>
1956 </tr>
1957 <tr>
1958 <td colspan="4">
1959 </td>
1960 </tr>
1961 <tr>
1962 <td>territory</td>
1963 <td>U32</td>
1964 <td></td>
1965 <td>
1966 <b></b> </td>
1967 </tr>
1968 <tr>
1969 <td colspan="4">
1970 </td>
1971 </tr>
1972 <tr>
1973 <td>captures</td>
1974 <td>U32</td>
1975 <td></td>
1976 <td>
1977 <b></b> </td>
1978 </tr>
1979 <tr>
1980 <td colspan="4">
1981 </td>
1982 </tr>
1983 <tr>
1984 <td>i3</td>
1985 <td>U32</td>
1986 <td></td>
1987 <td>
1988 <b></b> </td>
1989 </tr>
1990 <tr>
1991 <td colspan="4">
1992 </td>
1993 </tr>
1994 <tr>
1995 <td>f2</td>
1996 <td>U32</td>
1997 <td></td>
1998 <td>
1999 <b></b> </td>
2000 </tr>
2001 <tr>
2002 <td colspan="4">
2003 </td>
2004 </tr>
2005 <tr>
2006 <td>komi</td>
2007 <td>komi32</td>
2008 <td></td>
2009 <td>
2010 <b></b> </td>
2011 </tr>
2012 <tr>
2013 <td colspan="4">
2014 </td>
2015 </tr>
2016 <tr>
2017 <td>i4</td>
2018 <td>U32</td>
2019 <td></td>
2020 <td>
2021 <b></b> </td>
2022 </tr>
2023 <tr>
2024 <td colspan="4">
2025 Apparently the i3, f2, i4 are zero.
2026 </td>
2027 </tr>
2028 </table>
2029
2030 <h2>Receive messages</h2>
2031
2032 <h4>MESSAGE login</h4>
2033 NUMERIC TYPE (hex): 0001 RECV<table border="1">
2034 <tr>
2035 <th>NAME</th>
2036 <th>TYPE</th>
2037 <th>DEFAULT</th>
2038 <th>DEC-GUARD</th>
2039 </tr>
2040 <tr>
2041 <td colspan="4">
2042 </td>
2043 </tr>
2044 <tr>
2045 <td>result</td>
2046 <td>CONSTANT</td>
2047 <td>"login ok"</td>
2048 <td>
2049 <b></b> </td>
2050 </tr>
2051 <tr>
2052 <td colspan="4">
2053 </td>
2054 </tr>
2055 <tr>
2056 <td>success</td>
2057 <td>CONSTANT</td>
2058 <td>1</td>
2059 <td>
2060 <b></b> </td>
2061 </tr>
2062 <tr>
2063 <td colspan="4">
2064 </td>
2065 </tr>
2066 </table>
2067
2068 <h4>MESSAGE login</h4>
2069 NUMERIC TYPE (hex): 0002 RECV<table border="1">
2070 <tr>
2071 <th>NAME</th>
2072 <th>TYPE</th>
2073 <th>DEFAULT</th>
2074 <th>DEC-GUARD</th>
2075 </tr>
2076 <tr>
2077 <td colspan="4">
2078 </td>
2079 </tr>
2080 <tr>
2081 <td>result</td>
2082 <td>CONSTANT</td>
2083 <td>"guest login ok"</td>
2084 <td>
2085 <b></b> </td>
2086 </tr>
2087 <tr>
2088 <td colspan="4">
2089 </td>
2090 </tr>
2091 <tr>
2092 <td>success</td>
2093 <td>CONSTANT</td>
2094 <td>1</td>
2095 <td>
2096 <b></b> </td>
2097 </tr>
2098 <tr>
2099 <td colspan="4">
2100 </td>
2101 </tr>
2102 </table>
2103
2104 <h4>MESSAGE login</h4>
2105 NUMERIC TYPE (hex): 0003 RECV<table border="1">
2106 <tr>
2107 <th>NAME</th>
2108 <th>TYPE</th>
2109 <th>DEFAULT</th>
2110 <th>DEC-GUARD</th>
2111 </tr>
2112 <tr>
2113 <td colspan="4">
2114 </td>
2115 </tr>
2116 <tr>
2117 <td>result</td>
2118 <td>CONSTANT</td>
2119 <td>"login error 3"</td>
2120 <td>
2121 <b></b> </td>
2122 </tr>
2123 <tr>
2124 <td colspan="4">
2125 ** maybe more following? **
2126 </td>
2127 </tr>
2128 </table>
2129
2130 <h4>MESSAGE login</h4>
2131 NUMERIC TYPE (hex): 0004 RECV<table border="1">
2132 <tr>
2133 <th>NAME</th>
2134 <th>TYPE</th>
2135 <th>DEFAULT</th>
2136 <th>DEC-GUARD</th>
2137 </tr>
2138 <tr>
2139 <td colspan="4">
2140 </td>
2141 </tr>
2142 <tr>
2143 <td>result</td>
2144 <td>CONSTANT</td>
2145 <td>"wrong password"</td>
2146 <td>
2147 <b></b> </td>
2148 </tr>
2149 <tr>
2150 <td colspan="4">
2151 ** maybe more following? **
2152 </td>
2153 </tr>
2154 </table>
2155
2156 <h4>MESSAGE login</h4>
2157 NUMERIC TYPE (hex): 0005 RECV<table border="1">
2158 <tr>
2159 <th>NAME</th>
2160 <th>TYPE</th>
2161 <th>DEFAULT</th>
2162 <th>DEC-GUARD</th>
2163 </tr>
2164 <tr>
2165 <td colspan="4">
2166 </td>
2167 </tr>
2168 <tr>
2169 <td>result</td>
2170 <td>CONSTANT</td>
2171 <td>"user unknown"</td>
2172 <td>
2173 <b></b> </td>
2174 </tr>
2175 <tr>
2176 <td colspan="4">
2177 ** maybe more following? **
2178 </td>
2179 </tr>
2180 </table>
2181
2182 <h4>MESSAGE login</h4>
2183 NUMERIC TYPE (hex): 0006 RECV<table border="1">
2184 <tr>
2185 <th>NAME</th>
2186 <th>TYPE</th>
2187 <th>DEFAULT</th>
2188 <th>DEC-GUARD</th>
2189 </tr>
2190 <tr>
2191 <td colspan="4">
2192 </td>
2193 </tr>
2194 <tr>
2195 <td>result</td>
2196 <td>CONSTANT</td>
2197 <td>"user exists"</td>
2198 <td>
2199 <b></b> </td>
2200 </tr>
2201 <tr>
2202 <td colspan="4">
2203 ** maybe more following? **
2204 </td>
2205 </tr>
2206 </table>
2207
2208 <h4>MESSAGE login</h4>
2209 NUMERIC TYPE (hex): 0018 RECV<table border="1">
2210 <tr>
2211 <th>NAME</th>
2212 <th>TYPE</th>
2213 <th>DEFAULT</th>
2214 <th>DEC-GUARD</th>
2215 </tr>
2216 <tr>
2217 <td colspan="4">
2218 </td>
2219 </tr>
2220 <tr>
2221 <td>result</td>
2222 <td>CONSTANT</td>
2223 <td>"login error 18"</td>
2224 <td>
2225 <b></b> </td>
2226 </tr>
2227 <tr>
2228 <td colspan="4">
2229 ** maybe more following? **
2230 </td>
2231 </tr>
2232 </table>
2233
2234 <h4>MESSAGE login</h4>
2235 NUMERIC TYPE (hex): 0022 RECV<table border="1">
2236 <tr>
2237 <th>NAME</th>
2238 <th>TYPE</th>
2239 <th>DEFAULT</th>
2240 <th>DEC-GUARD</th>
2241 </tr>
2242 <tr>
2243 <td colspan="4">
2244 </td>
2245 </tr>
2246 <tr>
2247 <td colspan="4">
2248 </td>
2249 </tr>
2250 <tr>
2251 <td>result</td>
2252 <td>CONSTANT</td>
2253 <td>"user or ip blocked"</td>
2254 <td>
2255 <b></b> </td>
2256 </tr>
2257 <tr>
2258 <td colspan="4">
2259 </td>
2260 </tr>
2261 <tr>
2262 <td>reason</td>
2263 <td>STRING</td>
2264 <td></td>
2265 <td>
2266 <b></b> </td>
2267 </tr>
2268 <tr>
2269 <td colspan="4">
2270 </td>
2271 </tr>
2272 </table>
2273
2274 <h4>MESSAGE msg_chat</h4>
2275 NUMERIC TYPE (hex): 0013 RECV<table border="1">
2276 <tr>
2277 <th>NAME</th>
2278 <th>TYPE</th>
2279 <th>DEFAULT</th>
2280 <th>DEC-GUARD</th>
2281 </tr>
2282 <tr>
2283 <td colspan="4">
2284 </td>
2285 </tr>
2286 <tr>
2287 <td>user1</td>
2288 <td>username</td>
2289 <td></td>
2290 <td>
2291 <b></b> </td>
2292 </tr>
2293 <tr>
2294 <td colspan="4">
2295 </td>
2296 </tr>
2297 <tr>
2298 <td>user2</td>
2299 <td>username</td>
2300 <td></td>
2301 <td>
2302 <b></b> </td>
2303 </tr>
2304 <tr>
2305 <td colspan="4">
2306 </td>
2307 </tr>
2308 <tr>
2309 <td>message</td>
2310 <td>STRING</td>
2311 <td></td>
2312 <td>
2313 <b></b> </td>
2314 </tr>
2315 <tr>
2316 <td colspan="4">
2317 </td>
2318 </tr>
2319 </table>
2320
2321 <h4>MESSAGE stats</h4>
2322 NUMERIC TYPE (hex): 0015 RECV<table border="1">
2323 <tr>
2324 <th>NAME</th>
2325 <th>TYPE</th>
2326 <th>DEFAULT</th>
2327 <th>DEC-GUARD</th>
2328 </tr>
2329 <tr>
2330 <td colspan="4">
2331 </td>
2332 </tr>
2333 <tr>
2334 <td>ver_major</td>
2335 <td>U16</td>
2336 <td></td>
2337 <td>
2338 <b></b> </td>
2339 </tr>
2340 <tr>
2341 <td colspan="4">
2342 </td>
2343 </tr>
2344 <tr>
2345 <td>ver_minor</td>
2346 <td>U16</td>
2347 <td></td>
2348 <td>
2349 <b></b> </td>
2350 </tr>
2351 <tr>
2352 <td colspan="4">
2353 </td>
2354 </tr>
2355 <tr>
2356 <td>ver_micro</td>
2357 <td>U16</td>
2358 <td></td>
2359 <td>
2360 <b></b> </td>
2361 </tr>
2362 <tr>
2363 <td colspan="4">
2364 </td>
2365 </tr>
2366 <tr>
2367 <td>boot_time</td>
2368 <td>U64</td>
2369 <td></td>
2370 <td>
2371 <b></b> </td>
2372 </tr>
2373 <tr>
2374 <td colspan="4">
2375 </td>
2376 </tr>
2377 <tr>
2378 <td>users_cur</td>
2379 <td>U32</td>
2380 <td></td>
2381 <td>
2382 <b></b> </td>
2383 </tr>
2384 <tr>
2385 <td colspan="4">
2386 </td>
2387 </tr>
2388 <tr>
2389 <td>users_max</td>
2390 <td>U32</td>
2391 <td></td>
2392 <td>
2393 <b></b> </td>
2394 </tr>
2395 <tr>
2396 <td colspan="4">
2397 </td>
2398 </tr>
2399 <tr>
2400 <td>users_lim</td>
2401 <td>U32</td>
2402 <td></td>
2403 <td>
2404 <b></b> </td>
2405 </tr>
2406 <tr>
2407 <td colspan="4">
2408 </td>
2409 </tr>
2410 <tr>
2411 <td>accts_cur</td>
2412 <td>U32</td>
2413 <td></td>
2414 <td>
2415 <b></b> </td>
2416 </tr>
2417 <tr>
2418 <td colspan="4">
2419 </td>
2420 </tr>
2421 <tr>
2422 <td>accts_max</td>
2423 <td>U32</td>
2424 <td></td>
2425 <td>
2426 <b></b> </td>
2427 </tr>
2428 <tr>
2429 <td colspan="4">
2430 </td>
2431 </tr>
2432 <tr>
2433 <td>unknown1</td>
2434 <td>U32</td>
2435 <td></td>
2436 <td>
2437 <b></b> </td>
2438 </tr>
2439 <tr>
2440 <td colspan="4">
2441 </td>
2442 </tr>
2443 <tr>
2444 <td>work_max</td>
2445 <td>U32</td>
2446 <td></td>
2447 <td>
2448 <b></b> </td>
2449 </tr>
2450 <tr>
2451 <td colspan="4">
2452 </td>
2453 </tr>
2454 <tr>
2455 <td>rooms_cur</td>
2456 <td>U32</td>
2457 <td></td>
2458 <td>
2459 <b></b> </td>
2460 </tr>
2461 <tr>
2462 <td colspan="4">
2463 </td>
2464 </tr>
2465 <tr>
2466 <td>rooms_max</td>
2467 <td>U32</td>
2468 <td></td>
2469 <td>
2470 <b></b> </td>
2471 </tr>
2472 <tr>
2473 <td colspan="4">
2474 </td>
2475 </tr>
2476 <tr>
2477 <td>rooms_lim</td>
2478 <td>U32</td>
2479 <td></td>
2480 <td>
2481 <b></b> </td>
2482 </tr>
2483 <tr>
2484 <td colspan="4">
2485 </td>
2486 </tr>
2487 <tr>
2488 <td>games_cur</td>
2489 <td>U32</td>
2490 <td></td>
2491 <td>
2492 <b></b> </td>
2493 </tr>
2494 <tr>
2495 <td colspan="4">
2496 </td>
2497 </tr>
2498 <tr>
2499 <td>games_max</td>
2500 <td>U32</td>
2501 <td></td>
2502 <td>
2503 <b></b> </td>
2504 </tr>
2505 <tr>
2506 <td colspan="4">
2507 </td>
2508 </tr>
2509 <tr>
2510 <td>games_lim</td>
2511 <td>U32</td>
2512 <td></td>
2513 <td>
2514 <b></b> </td>
2515 </tr>
2516 <tr>
2517 <td colspan="4">
2518 </td>
2519 </tr>
2520 <tr>
2521 <td>results_cur</td>
2522 <td>U32</td>
2523 <td></td>
2524 <td>
2525 <b></b> </td>
2526 </tr>
2527 <tr>
2528 <td colspan="4">
2529 </td>
2530 </tr>
2531 <tr>
2532 <td>results_max</td>
2533 <td>U32</td>
2534 <td></td>
2535 <td>
2536 <b></b> </td>
2537 </tr>
2538 <tr>
2539 <td colspan="4">
2540 </td>
2541 </tr>
2542 <tr>
2543 <td>unknown2</td>
2544 <td>U32</td>
2545 <td></td>
2546 <td>
2547 <b></b> </td>
2548 </tr>
2549 <tr>
2550 <td colspan="4">
2551 </td>
2552 </tr>
2553 <tr>
2554 <td>params_cur</td>
2555 <td>U32</td>
2556 <td></td>
2557 <td>
2558 <b></b> </td>
2559 </tr>
2560 <tr>
2561 <td colspan="4">
2562 </td>
2563 </tr>
2564 <tr>
2565 <td>params_max</td>
2566 <td>U32</td>
2567 <td></td>
2568 <td>
2569 <b></b> </td>
2570 </tr>
2571 <tr>
2572 <td colspan="4">
2573 </td>
2574 </tr>
2575 <tr>
2576 <td>bytes_in</td>
2577 <td>U64</td>
2578 <td></td>
2579 <td>
2580 <b></b> </td>
2581 </tr>
2582 <tr>
2583 <td colspan="4">
2584 </td>
2585 </tr>
2586 <tr>
2587 <td>packets_in</td>
2588 <td>U64</td>
2589 <td></td>
2590 <td>
2591 <b></b> </td>
2592 </tr>
2593 <tr>
2594 <td colspan="4">
2595 </td>
2596 </tr>
2597 <tr>
2598 <td>bytes_out</td>
2599 <td>U64</td>
2600 <td></td>
2601 <td>
2602 <b></b> </td>
2603 </tr>
2604 <tr>
2605 <td colspan="4">
2606 </td>
2607 </tr>
2608 <tr>
2609 <td>packets_out</td>
2610 <td>U64</td>
2611 <td></td>
2612 <td>
2613 <b></b> </td>
2614 </tr>
2615 <tr>
2616 <td colspan="4">
2617 </td>
2618 </tr>
2619 </table>
2620
2621 <h4>MESSAGE idle_warn</h4>
2622 NUMERIC TYPE (hex): 0016 RECV<table border="1">
2623 <tr>
2624 <th>NAME</th>
2625 <th>TYPE</th>
2626 <th>DEFAULT</th>
2627 <th>DEC-GUARD</th>
2628 </tr>
2629 <tr>
2630 <td colspan="4">
2631 idle warning, autologout soon (10 minutes...)
2632 </td>
2633 </tr>
2634 </table>
2635
2636 <h4>MESSAGE timewarning_default</h4>
2637 NUMERIC TYPE (hex): 001b RECV<table border="1">
2638 <tr>
2639 <th>NAME</th>
2640 <th>TYPE</th>
2641 <th>DEFAULT</th>
2642 <th>DEC-GUARD</th>
2643 </tr>
2644 <tr>
2645 <td colspan="4">
2646 WILD guess
2647 </td>
2648 </tr>
2649 <tr>
2650 <td>channel</td>
2651 <td>U16</td>
2652 <td></td>
2653 <td>
2654 <b></b> </td>
2655 </tr>
2656 <tr>
2657 <td colspan="4">
2658 </td>
2659 </tr>
2660 <tr>
2661 <td>time</td>
2662 <td>U16</td>
2663 <td></td>
2664 <td>
2665 <b></b> </td>
2666 </tr>
2667 <tr>
2668 <td colspan="4">
2669 </td>
2670 </tr>
2671 </table>
2672
2673 <h4>MESSAGE idle_err</h4>
2674 NUMERIC TYPE (hex): 001c RECV<table border="1">
2675 <tr>
2676 <th>NAME</th>
2677 <th>TYPE</th>
2678 <th>DEFAULT</th>
2679 <th>DEC-GUARD</th>
2680 </tr>
2681 <tr>
2682 <td colspan="4">
2683 autologout
2684 </td>
2685 </tr>
2686 </table>
2687
2688 <h4>MESSAGE ping</h4>
2689 NUMERIC TYPE (hex): 001d RECV<table border="1">
2690 <tr>
2691 <th>NAME</th>
2692 <th>TYPE</th>
2693 <th>DEFAULT</th>
2694 <th>DEC-GUARD</th>
2695 </tr>
2696 <tr>
2697 <td colspan="4">
2698 </td>
2699 </tr>
2700 </table>
2701
2702 <h4>MESSAGE userpic</h4>
2703 NUMERIC TYPE (hex): 0021 RECV<table border="1">
2704 <tr>
2705 <th>NAME</th>
2706 <th>TYPE</th>
2707 <th>DEFAULT</th>
2708 <th>DEC-GUARD</th>
2709 </tr>
2710 <tr>
2711 <td colspan="4">
2712 </td>
2713 </tr>
2714 <tr>
2715 <td>name</td>
2716 <td>username</td>
2717 <td></td>
2718 <td>
2719 <b></b> </td>
2720 </tr>
2721 <tr>
2722 <td colspan="4">
2723 Reply to pic_req, contains an image in jpeg format.
2724 </td>
2725 </tr>
2726 <tr>
2727 <td>data</td>
2728 <td>DATA</td>
2729 <td></td>
2730 <td>
2731 <b></b> </td>
2732 </tr>
2733 <tr>
2734 <td colspan="4">
2735 </td>
2736 </tr>
2737 </table>
2738
2739 <h4>MESSAGE gnotice</h4>
2740 NUMERIC TYPE (hex): 0100 RECV<table border="1">
2741 <tr>
2742 <th>NAME</th>
2743 <th>TYPE</th>
2744 <th>DEFAULT</th>
2745 <th>DEC-GUARD</th>
2746 </tr>
2747 <tr>
2748 <td colspan="4">
2749 global notice, sent to everybody
2750 </td>
2751 </tr>
2752 <tr>
2753 <td>notice</td>
2754 <td>STRING</td>
2755 <td></td>
2756 <td>
2757 <b></b> </td>
2758 </tr>
2759 <tr>
2760 <td colspan="4">
2761 </td>
2762 </tr>
2763 </table>
2764
2765
2766 <h4>MESSAGE priv_room</h4>
2767 NUMERIC TYPE (hex): 0310 RECV<table border="1">
2768 <tr>
2769 <th>NAME</th>
2770 <th>TYPE</th>
2771 <th>DEFAULT</th>
2772 <th>DEC-GUARD</th>
2773 </tr>
2774 <tr>
2775 <td colspan="4">
2776 "permission denied" when joining a room
2777 </td>
2778 </tr>
2779 <tr>
2780 <td>name</td>
2781 <td>STRING</td>
2782 <td></td>
2783 <td>
2784 <b></b> </td>
2785 </tr>
2786 <tr>
2787 <td colspan="4">
2788 </td>
2789 </tr>
2790 </table>
2791
2792 <h4>MESSAGE upd_rooms</h4>
2793 NUMERIC TYPE (hex): 0318 RECV<table border="1">
2794 <tr>
2795 <th>NAME</th>
2796 <th>TYPE</th>
2797 <th>DEFAULT</th>
2798 <th>DEC-GUARD</th>
2799 </tr>
2800 <tr>
2801 <td colspan="4">
2802 </td>
2803 </tr>
2804 <tr>
2805 <td>rooms</td>
2806 <td>room</td>
2807 <td></td>
2808 <td>
2809 <b></b> </td>
2810 </tr>
2811 <tr>
2812 <td colspan="4">
2813 </td>
2814 </tr>
2815 </table>
2816
2817 <h4>MESSAGE upd_game2</h4>
2818 NUMERIC TYPE (hex): 041c RECV<table border="1">
2819 <tr>
2820 <th>NAME</th>
2821 <th>TYPE</th>
2822 <th>DEFAULT</th>
2823 <th>DEC-GUARD</th>
2824 </tr>
2825 <tr>
2826 <td colspan="4">
2827 </td>
2828 </tr>
2829 <tr>
2830 <td>channel_junk</td>
2831 <td>U16</td>
2832 <td></td>
2833 <td>
2834 <b></b> </td>
2835 </tr>
2836 <tr>
2837 <td colspan="4">
2838 </td>
2839 </tr>
2840 <tr>
2841 <td>game</td>
2842 <td>game</td>
2843 <td></td>
2844 <td>
2845 <b></b> </td>
2846 </tr>
2847 <tr>
2848 <td colspan="4">
2849 </td>
2850 </tr>
2851 </table>
2852
2853 <h4>MESSAGE upd_user</h4>
2854 NUMERIC TYPE (hex): 0202 RECV<table border="1">
2855 <tr>
2856 <th>NAME</th>
2857 <th>TYPE</th>
2858 <th>DEFAULT</th>
2859 <th>DEC-GUARD</th>
2860 </tr>
2861 <tr>
2862 <td colspan="4">
2863 # loc 0" type="chat(?) loc 1 =&gt; gameinfo?, loc 2 =&gt; game result (more data)
2864 </td>
2865 </tr>
2866 <tr>
2867 <td>location</td>
2868 <td>U32</td>
2869 <td></td>
2870 <td>
2871 <b></b> </td>
2872 </tr>
2873 <tr>
2874 <td colspan="4">
2875 </td>
2876 </tr>
2877 <tr>
2878 <td>user</td>
2879 <td>user</td>
2880 <td></td>
2881 <td>
2882 <b></b> </td>
2883 </tr>
2884 <tr>
2885 <td colspan="4">
2886 </td>
2887 </tr>
2888 <tr>
2889 <td>lotsofinfo</td>
2890 <td>DATA</td>
2891 <td></td>
2892 <td>
2893 <b>location</b> == 2</td>
2894 </tr>
2895 <tr>
2896 <td colspan="4">
2897 </td>
2898 </tr>
2899 </table>
2900
2901 <h3>Room messages</h3>
2902
2903 <p>Not all room messages are for rooms only, and rooms need to parse
2904 not only these messages. Orthogonality, what for?</p>
2905
2906 <h4>MESSAGE join_room</h4>
2907 NUMERIC TYPE (hex): 4300 RECV<table border="1">
2908 <tr>
2909 <th>NAME</th>
2910 <th>TYPE</th>
2911 <th>DEFAULT</th>
2912 <th>DEC-GUARD</th>
2913 </tr>
2914 <tr>
2915 <td colspan="4">
2916 </td>
2917 </tr>
2918 <tr>
2919 <td>channel</td>
2920 <td>U16</td>
2921 <td></td>
2922 <td>
2923 <b></b> </td>
2924 </tr>
2925 <tr>
2926 <td colspan="4">
2927 </td>
2928 </tr>
2929 <tr>
2930 <td>users</td>
2931 <td>user</td>
2932 <td></td>
2933 <td>
2934 <b></b> </td>
2935 </tr>
2936 <tr>
2937 <td colspan="4">
2938 </td>
2939 </tr>
2940 </table>
2941
2942 <h4>MESSAGE msg_room</h4>
2943 NUMERIC TYPE (hex): 4301 RECV<table border="1">
2944 <tr>
2945 <th>NAME</th>
2946 <th>TYPE</th>
2947 <th>DEFAULT</th>
2948 <th>DEC-GUARD</th>
2949 </tr>
2950 <tr>
2951 <td colspan="4">
2952 </td>
2953 </tr>
2954 <tr>
2955 <td>channel</td>
2956 <td>U16</td>
2957 <td></td>
2958 <td>
2959 <b></b> </td>
2960 </tr>
2961 <tr>
2962 <td colspan="4">
2963 </td>
2964 </tr>
2965 <tr>
2966 <td>name</td>
2967 <td>username</td>
2968 <td></td>
2969 <td>
2970 <b></b> </td>
2971 </tr>
2972 <tr>
2973 <td colspan="4">
2974 </td>
2975 </tr>
2976 <tr>
2977 <td>message</td>
2978 <td>STRING</td>
2979 <td></td>
2980 <td>
2981 <b></b> </td>
2982 </tr>
2983 <tr>
2984 <td colspan="4">
2985 </td>
2986 </tr>
2987 </table>
2988
2989 <h4>MESSAGE part_room</h4>
2990 NUMERIC TYPE (hex): 4302 RECV<table border="1">
2991 <tr>
2992 <th>NAME</th>
2993 <th>TYPE</th>
2994 <th>DEFAULT</th>
2995 <th>DEC-GUARD</th>
2996 </tr>
2997 <tr>
2998 <td colspan="4">
2999 </td>
3000 </tr>
3001 <tr>
3002 <td>channel</td>
3003 <td>U16</td>
3004 <td></td>
3005 <td>
3006 <b></b> </td>
3007 </tr>
3008 <tr>
3009 <td colspan="4">
3010 </td>
3011 </tr>
3012 <tr>
3013 <td>user</td>
3014 <td>user</td>
3015 <td></td>
3016 <td>
3017 <b></b> </td>
3018 </tr>
3019 <tr>
3020 <td colspan="4">
3021 </td>
3022 </tr>
3023 </table>
3024
3025 <h4>MESSAGE del_room</h4>
3026 NUMERIC TYPE (hex): 4303 RECV<table border="1">
3027 <tr>
3028 <th>NAME</th>
3029 <th>TYPE</th>
3030 <th>DEFAULT</th>
3031 <th>DEC-GUARD</th>
3032 </tr>
3033 <tr>
3034 <td colspan="4">
3035 </td>
3036 </tr>
3037 <tr>
3038 <td>channel</td>
3039 <td>U16</td>
3040 <td></td>
3041 <td>
3042 <b></b> </td>
3043 </tr>
3044 <tr>
3045 <td colspan="4">
3046
3047 </td>
3048 </tr>
3049 </table>
3050
3051 <h4>MESSAGE upd_games</h4>
3052 NUMERIC TYPE (hex): 4304 RECV<table border="1">
3053 <tr>
3054 <th>NAME</th>
3055 <th>TYPE</th>
3056 <th>DEFAULT</th>
3057 <th>DEC-GUARD</th>
3058 </tr>
3059 <tr>
3060 <td colspan="4">
3061 </td>
3062 </tr>
3063 <tr>
3064 <td>channel</td>
3065 <td>U16</td>
3066 <td></td>
3067 <td>
3068 <b></b> </td>
3069 </tr>
3070 <tr>
3071 <td colspan="4">
3072 </td>
3073 </tr>
3074 <tr>
3075 <td>games</td>
3076 <td>game</td>
3077 <td></td>
3078 <td>
3079 <b></b> </td>
3080 </tr>
3081 <tr>
3082 <td colspan="4">
3083 </td>
3084 </tr>
3085 </table>
3086
3087 <h4>MESSAGE desc_room</h4>
3088 NUMERIC TYPE (hex): 4319 RECV<table border="1">
3089 <tr>
3090 <th>NAME</th>
3091 <th>TYPE</th>
3092 <th>DEFAULT</th>
3093 <th>DEC-GUARD</th>
3094 </tr>
3095 <tr>
3096 <td colspan="4">
3097 </td>
3098 </tr>
3099 <tr>
3100 <td>channel</td>
3101 <td>U16</td>
3102 <td></td>
3103 <td>
3104 <b></b> </td>
3105 </tr>
3106 <tr>
3107 <td colspan="4">
3108 </td>
3109 </tr>
3110 <tr>
3111 <td>owner</td>
3112 <td>username</td>
3113 <td></td>
3114 <td>
3115 <b></b> </td>
3116 </tr>
3117 <tr>
3118 <td colspan="4">
3119 </td>
3120 </tr>
3121 <tr>
3122 <td>description</td>
3123 <td>STRING</td>
3124 <td></td>
3125 <td>
3126 <b></b> </td>
3127 </tr>
3128 <tr>
3129 <td colspan="4">
3130 </td>
3131 </tr>
3132 </table>
3133
3134
3135 <h4>MESSAGE chal_defaults</h4>
3136 NUMERIC TYPE (hex): 0411 RECV<table border="1">
3137 <tr>
3138 <th>NAME</th>
3139 <th>TYPE</th>
3140 <th>DEFAULT</th>
3141 <th>DEC-GUARD</th>
3142 </tr>
3143 <tr>
3144 <td colspan="4">
3145 </td>
3146 </tr>
3147 <tr>
3148 <td>channel</td>
3149 <td>U16</td>
3150 <td></td>
3151 <td>
3152 <b></b> </td>
3153 </tr>
3154 <tr>
3155 <td colspan="4">
3156 </td>
3157 </tr>
3158 <tr>
3159 <td>defaults</td>
3160 <td>challenge_defaults</td>
3161 <td></td>
3162 <td>
3163 <b></b> </td>
3164 </tr>
3165 <tr>
3166 <td colspan="4">
3167 </td>
3168 </tr>
3169 </table>
3170
3171 <h3>Game messages</h3>
3172
3173 <h4>MESSAGE upd_chal</h4>
3174 NUMERIC TYPE (hex): 4400 RECV<table border="1">
3175 <tr>
3176 <th>NAME</th>
3177 <th>TYPE</th>
3178 <th>DEFAULT</th>
3179 <th>DEC-GUARD</th>
3180 </tr>
3181 <tr>
3182 <td colspan="4">
3183 Unclear.
3184 </td>
3185 </tr>
3186 <tr>
3187 <td>channel</td>
3188 <td>U16</td>
3189 <td></td>
3190 <td>
3191 <b></b> </td>
3192 </tr>
3193 <tr>
3194 <td colspan="4">
3195 </td>
3196 </tr>
3197 <tr>
3198 <td>challenge</td>
3199 <td>challenge</td>
3200 <td></td>
3201 <td>
3202 <b></b> </td>
3203 </tr>
3204 <tr>
3205 <td colspan="4">
3206 </td>
3207 </tr>
3208 </table>
3209
3210 <h4>MESSAGE upd_game</h4>
3211 NUMERIC TYPE (hex): 4401 RECV<table border="1">
3212 <tr>
3213 <th>NAME</th>
3214 <th>TYPE</th>
3215 <th>DEFAULT</th>
3216 <th>DEC-GUARD</th>
3217 </tr>
3218 <tr>
3219 <td colspan="4">
3220 </td>
3221 </tr>
3222 <tr>
3223 <td>channel</td>
3224 <td>U16</td>
3225 <td></td>
3226 <td>
3227 <b></b> </td>
3228 </tr>
3229 <tr>
3230 <td colspan="4">
3231 </td>
3232 </tr>
3233 <tr>
3234 <td>game</td>
3235 <td>game</td>
3236 <td></td>
3237 <td>
3238 <b></b> </td>
3239 </tr>
3240 <tr>
3241 <td colspan="4">
3242 </td>
3243 </tr>
3244 </table>
3245
3246 <h4>MESSAGE del_game</h4>
3247 NUMERIC TYPE (hex): 4402 RECV<table border="1">
3248 <tr>
3249 <th>NAME</th>
3250 <th>TYPE</th>
3251 <th>DEFAULT</th>
3252 <th>DEC-GUARD</th>
3253 </tr>
3254 <tr>
3255 <td colspan="4">
3256 </td>
3257 </tr>
3258 <tr>
3259 <td>channel</td>
3260 <td>U16</td>
3261 <td></td>
3262 <td>
3263 <b></b> </td>
3264 </tr>
3265 <tr>
3266 <td colspan="4">
3267 </td>
3268 </tr>
3269 </table>
3270
3271 <h4>MESSAGE upd_observers</h4>
3272 NUMERIC TYPE (hex): 4403 RECV<table border="1">
3273 <tr>
3274 <th>NAME</th>
3275 <th>TYPE</th>
3276 <th>DEFAULT</th>
3277 <th>DEC-GUARD</th>
3278 </tr>
3279 <tr>
3280 <td colspan="4">
3281 </td>
3282 </tr>
3283 <tr>
3284 <td>channel</td>
3285 <td>U16</td>
3286 <td></td>
3287 <td>
3288 <b></b> </td>
3289 </tr>
3290 <tr>
3291 <td colspan="4">
3292 </td>
3293 </tr>
3294 <tr>
3295 <td>users</td>
3296 <td>user</td>
3297 <td></td>
3298 <td>
3299 <b></b> </td>
3300 </tr>
3301 <tr>
3302 <td colspan="4">
3303 </td>
3304 </tr>
3305 </table>
3306
3307 <h4>MESSAGE del_observer</h4>
3308 NUMERIC TYPE (hex): 4404 RECV<table border="1">
3309 <tr>
3310 <th>NAME</th>
3311 <th>TYPE</th>
3312 <th>DEFAULT</th>
3313 <th>DEC-GUARD</th>
3314 </tr>
3315 <tr>
3316 <td colspan="4">
3317 </td>
3318 </tr>
3319 <tr>
3320 <td>channel</td>
3321 <td>U16</td>
3322 <td></td>
3323 <td>
3324 <b></b> </td>
3325 </tr>
3326 <tr>
3327 <td colspan="4">
3328 </td>
3329 </tr>
3330 <tr>
3331 <td>name</td>
3332 <td>username</td>
3333 <td></td>
3334 <td>
3335 <b></b> </td>
3336 </tr>
3337 <tr>
3338 <td colspan="4">
3339 </td>
3340 </tr>
3341 </table>
3342
3343 <h4>MESSAGE set_tree</h4>
3344 NUMERIC TYPE (hex): 4405 RECV<table border="1">
3345 <tr>
3346 <th>NAME</th>
3347 <th>TYPE</th>
3348 <th>DEFAULT</th>
3349 <th>DEC-GUARD</th>
3350 </tr>
3351 <tr>
3352 <td colspan="4">
3353 </td>
3354 </tr>
3355 <tr>
3356 <td>channel</td>
3357 <td>U16</td>
3358 <td></td>
3359 <td>
3360 <b></b> </td>
3361 </tr>
3362 <tr>
3363 <td colspan="4">
3364 </td>
3365 </tr>
3366 <tr>
3367 <td>tree</td>
3368 <td>TREE</td>
3369 <td></td>
3370 <td>
3371 <b></b> </td>
3372 </tr>
3373 <tr>
3374 <td colspan="4">
3375 </td>
3376 </tr>
3377 </table>
3378
3379 <h4>MESSAGE upd_tree</h4>
3380 NUMERIC TYPE (hex): 4406 RECV<table border="1">
3381 <tr>
3382 <th>NAME</th>
3383 <th>TYPE</th>
3384 <th>DEFAULT</th>
3385 <th>DEC-GUARD</th>
3386 </tr>
3387 <tr>
3388 <td colspan="4">
3389 </td>
3390 </tr>
3391 <tr>
3392 <td>channel</td>
3393 <td>U16</td>
3394 <td></td>
3395 <td>
3396 <b></b> </td>
3397 </tr>
3398 <tr>
3399 <td colspan="4">
3400 </td>
3401 </tr>
3402 <tr>
3403 <td>tree</td>
3404 <td>TREE</td>
3405 <td></td>
3406 <td>
3407 <b></b> </td>
3408 </tr>
3409 <tr>
3410 <td colspan="4">
3411 </td>
3412 </tr>
3413 </table>
3414
3415 <h4>MESSAGE set_node</h4>
3416 NUMERIC TYPE (hex): 4407 RECV<table border="1">
3417 <tr>
3418 <th>NAME</th>
3419 <th>TYPE</th>
3420 <th>DEFAULT</th>
3421 <th>DEC-GUARD</th>
3422 </tr>
3423 <tr>
3424 <td colspan="4">
3425 </td>
3426 </tr>
3427 <tr>
3428 <td>channel</td>
3429 <td>U16</td>
3430 <td></td>
3431 <td>
3432 <b></b> </td>
3433 </tr>
3434 <tr>
3435 <td colspan="4">
3436 </td>
3437 </tr>
3438 <tr>
3439 <td>node</td>
3440 <td>U32</td>
3441 <td></td>
3442 <td>
3443 <b></b> </td>
3444 </tr>
3445 <tr>
3446 <td colspan="4">
3447 </td>
3448 </tr>
3449 </table>
3450
3451 <h4>MESSAGE superko</h4>
3452 NUMERIC TYPE (hex): 4409 RECV<table border="1">
3453 <tr>
3454 <th>NAME</th>
3455 <th>TYPE</th>
3456 <th>DEFAULT</th>
3457 <th>DEC-GUARD</th>
3458 </tr>
3459 <tr>
3460 <td colspan="4">
3461 Superko-warning.
3462 </td>
3463 </tr>
3464 <tr>
3465 <td>channel</td>
3466 <td>U16</td>
3467 <td></td>
3468 <td>
3469 <b></b> </td>
3470 </tr>
3471 <tr>
3472 <td colspan="4">
3473 </td>
3474 </tr>
3475 </table>
3476
3477 <h4>MESSAGE final_result</h4>
3478 NUMERIC TYPE (hex): 440b RECV<table border="1">
3479 <tr>
3480 <th>NAME</th>
3481 <th>TYPE</th>
3482 <th>DEFAULT</th>
3483 <th>DEC-GUARD</th>
3484 </tr>
3485 <tr>
3486 <td colspan="4">
3487 </td>
3488 </tr>
3489 <tr>
3490 <td>channel</td>
3491 <td>U16</td>
3492 <td></td>
3493 <td>
3494 <b></b> </td>
3495 </tr>
3496 <tr>
3497 <td colspan="4">
3498 </td>
3499 </tr>
3500 <tr>
3501 <td>blackscore</td>
3502 <td>score</td>
3503 <td></td>
3504 <td>
3505 <b></b> </td>
3506 </tr>
3507 <tr>
3508 <td colspan="4">
3509 </td>
3510 </tr>
3511 <tr>
3512 <td>whitescore</td>
3513 <td>score</td>
3514 <td></td>
3515 <td>
3516 <b></b> </td>
3517 </tr>
3518 <tr>
3519 <td colspan="4">
3520 </td>
3521 </tr>
3522 </table>
3523
3524 <h4>MESSAGE req_undo</h4>
3525 NUMERIC TYPE (hex): 440e RECV<table border="1">
3526 <tr>
3527 <th>NAME</th>
3528 <th>TYPE</th>
3529 <th>DEFAULT</th>
3530 <th>DEC-GUARD</th>
3531 </tr>
3532 <tr>
3533 <td colspan="4">
3534 </td>
3535 </tr>
3536 <tr>
3537 <td>channel</td>
3538 <td>U16</td>
3539 <td></td>
3540 <td>
3541 <b></b> </td>
3542 </tr>
3543 <tr>
3544 <td colspan="4">
3545
3546 </td>
3547 </tr>
3548 </table>
3549
3550 <h4>MESSAGE resign_game</h4>
3551 NUMERIC TYPE (hex): 4410 RECV<table border="1">
3552 <tr>
3553 <th>NAME</th>
3554 <th>TYPE</th>
3555 <th>DEFAULT</th>
3556 <th>DEC-GUARD</th>
3557 </tr>
3558 <tr>
3559 <td colspan="4">
3560 </td>
3561 </tr>
3562 <tr>
3563 <td>channel</td>
3564 <td>U16</td>
3565 <td></td>
3566 <td>
3567 <b></b> </td>
3568 </tr>
3569 <tr>
3570 <td colspan="4">
3571 </td>
3572 </tr>
3573 <tr>
3574 <td>player</td>
3575 <td>U8</td>
3576 <td></td>
3577 <td>
3578 <b></b> </td>
3579 </tr>
3580 <tr>
3581 <td colspan="4">
3582 </td>
3583 </tr>
3584 </table>
3585
3586 <h4>MESSAGE set_teacher</h4>
3587 NUMERIC TYPE (hex): 441a RECV<table border="1">
3588 <tr>
3589 <th>NAME</th>
3590 <th>TYPE</th>
3591 <th>DEFAULT</th>
3592 <th>DEC-GUARD</th>
3593 </tr>
3594 <tr>
3595 <td colspan="4">
3596 </td>
3597 </tr>
3598 <tr>
3599 <td>channel</td>
3600 <td>U16</td>
3601 <td></td>
3602 <td>
3603 <b></b> </td>
3604 </tr>
3605 <tr>
3606 <td colspan="4">
3607 </td>
3608 </tr>
3609 <tr>
3610 <td>name</td>
3611 <td>username</td>
3612 <td></td>
3613 <td>
3614 <b></b> </td>
3615 </tr>
3616 <tr>
3617 <td colspan="4">
3618 </td>
3619 </tr>
3620 </table>
3621
3622 <h4>MESSAGE owner_left</h4>
3623 NUMERIC TYPE (hex): 441d RECV<table border="1">
3624 <tr>
3625 <th>NAME</th>
3626 <th>TYPE</th>
3627 <th>DEFAULT</th>
3628 <th>DEC-GUARD</th>
3629 </tr>
3630 <tr>
3631 <td colspan="4">
3632 Unclear.
3633 </td>
3634 </tr>
3635 <tr>
3636 <td>channel</td>
3637 <td>U16</td>
3638 <td></td>
3639 <td>
3640 <b></b> </td>
3641 </tr>
3642 <tr>
3643 <td colspan="4">
3644 </td>
3645 </tr>
3646 </table>
3647
3648 <h4>MESSAGE teacher_left</h4>
3649 NUMERIC TYPE (hex): 441e RECV<table border="1">
3650 <tr>
3651 <th>NAME</th>
3652 <th>TYPE</th>
3653 <th>DEFAULT</th>
3654 <th>DEC-GUARD</th>
3655 </tr>
3656 <tr>
3657 <td colspan="4">
3658 Unclear.
3659 </td>
3660 </tr>
3661 <tr>
3662 <td>channel</td>
3663 <td>U16</td>
3664 <td></td>
3665 <td>
3666 <b></b> </td>
3667 </tr>
3668 <tr>
3669 <td colspan="4">
3670 </td>
3671 </tr>
3672 </table>
3673
3674 <h4>MESSAGE unknown4422</h4>
3675 NUMERIC TYPE (hex): 4422 RECV<table border="1">
3676 <tr>
3677 <th>NAME</th>
3678 <th>TYPE</th>
3679 <th>DEFAULT</th>
3680 <th>DEC-GUARD</th>
3681 </tr>
3682 <tr>
3683 <td colspan="4">
3684 change teacher? something to do with editing?
3685 </td>
3686 </tr>
3687 <tr>
3688 <td>channel</td>
3689 <td>U16</td>
3690 <td></td>
3691 <td>
3692 <b></b> </td>
3693 </tr>
3694 <tr>
3695 <td colspan="4">
3696 </td>
3697 </tr>
3698 <tr>
3699 <td>name1</td>
3700 <td>username</td>
3701 <td></td>
3702 <td>
3703 <b></b> </td>
3704 </tr>
3705 <tr>
3706 <td colspan="4">
3707 </td>
3708 </tr>
3709 <tr>
3710 <td>name2</td>
3711 <td>username</td>
3712 <td></td>
3713 <td>
3714 <b></b> </td>
3715 </tr>
3716 <tr>
3717 <td colspan="4">
3718 </td>
3719 </tr>
3720 </table>
3721
3722 <h4>MESSAGE req_result</h4>
3723 NUMERIC TYPE (hex): 4433 RECV<table border="1">
3724 <tr>
3725 <th>NAME</th>
3726 <th>TYPE</th>
3727 <th>DEFAULT</th>
3728 <th>DEC-GUARD</th>
3729 </tr>
3730 <tr>
3731 <td colspan="4">
3732 Unclear.
3733 </td>
3734 </tr>
3735 <tr>
3736 <td>channel</td>
3737 <td>U16</td>
3738 <td></td>
3739 <td>
3740 <b></b> </td>
3741 </tr>
3742 <tr>
3743 <td colspan="4">
3744 # # recv_result(?)
3745 </td>
3746 </tr>
3747 </table>
3748
3749 <h4>MESSAGE unknown4434</h4>
3750 NUMERIC TYPE (hex): 4434 RECV<table border="1">
3751 <tr>
3752 <th>NAME</th>
3753 <th>TYPE</th>
3754 <th>DEFAULT</th>
3755 <th>DEC-GUARD</th>
3756 </tr>
3757 <tr>
3758 <td colspan="4">
3759 </td>
3760 </tr>
3761 <tr>
3762 <td>channel</td>
3763 <td>U16</td>
3764 <td></td>
3765 <td>
3766 <b></b> </td>
3767 </tr>
3768 <tr>
3769 <td colspan="4">
3770 </td>
3771 </tr>
3772 <tr>
3773 <td>b1</td>
3774 <td>U8</td>
3775 <td></td>
3776 <td>
3777 <b></b> </td>
3778 </tr>
3779 <tr>
3780 <td colspan="4">
3781 ?? !demonstration game??
3782 </td>
3783 </tr>
3784 </table>
3785
3786 </body>
3787 </html>