… | |
… | |
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.58 $</h1> |
26 | <h1>$Revision: 1.59 $</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 |
… | |
… | |
473 | <member name="channel" type="U16"/> |
473 | <member name="channel" type="U16"/> |
474 | <member name="name" type="username"/> |
474 | <member name="name" type="username"/> |
475 | </message> |
475 | </message> |
476 | |
476 | |
477 | <message type="4305" name="new_game" src="client"> |
477 | <message type="4305" name="new_game" src="client"> |
478 | <p>Unclear. Start a new game. |
478 | <p>Create a new game.</p> |
479 | <p>Clone: 00000: 20202020 20202020 20202020 20203238 28 |
|
|
480 | 00010: 9d000543 0d000000 00000000 00130201 ...C............ |
|
|
481 | 00020: 0000ffff ffffffff ffffffff 00000000 ..ÿÿÿÿÿÿÿÿÿÿ....</p> |
|
|
482 | </p> |
|
|
483 | |
479 | |
484 | <member name="channel" type="U16"/> |
480 | <member name="channel" type="U16"/> |
485 | <p>The room where to start the new game</p> |
481 | <p>The room where to start the new game</p> |
486 | <member name="cid" type="clientid"/> |
482 | <member name="cid" type="clientid"/> |
487 | <member name="type" type="U8"/> |
483 | <member name="type" type="U8"/> |
… | |
… | |
525 | <message type="4319" name="req_desc" src="client"> |
521 | <message type="4319" name="req_desc" src="client"> |
526 | Request room description. |
522 | Request room description. |
527 | <member name="channel" type="U16"/> |
523 | <member name="channel" type="U16"/> |
528 | </message> |
524 | </message> |
529 | |
525 | |
530 | <message type="4400" name="send_challenge" src="client"> |
526 | <message type="4400" name="challenge" src="client"> |
531 | Unclear. |
527 | <p>Used to send challenges to existing games.</p> |
|
|
528 | <member name="channel" type="U16"/> |
532 | <member name="channel" type="U16"/> |
529 | <member name="challenge" type="challenge"/> |
533 | <member name="black" type="username"/> |
|
|
534 | <member name="white" type="username"/> |
|
|
535 | More following... TREE or challenge. |
|
|
536 | </message> |
530 | </message> |
537 | |
531 | |
538 | <message type="4403" name="join_game" src="client"> |
532 | <message type="4403" name="join_game" src="client"> |
539 | Join a game. See join_room. |
533 | Join a game. See join_room. |
540 | <member name="channel" type="U16"/> |
534 | <member name="channel" type="U16"/> |
… | |
… | |
583 | <member name="channel" type="U16"/> |
577 | <member name="channel" type="U16"/> |
584 | <member name="time" type="U32"/> |
578 | <member name="time" type="U32"/> |
585 | <member name="player" type="U8"/> |
579 | <member name="player" type="U8"/> |
586 | </message> |
580 | </message> |
587 | |
581 | |
|
|
582 | <message type="440e" name="req_undo" src="client"> |
|
|
583 | <member name="channel" type="U16"/> |
|
|
584 | </message> |
|
|
585 | |
588 | <message type="440f" name="grant_undo" src="client"> |
586 | <message type="440f" name="grant_undo" src="client"> |
589 | Can be send after a req_undo message was received to grant the undo. |
587 | Can be send after a req_undo message was received to grant the undo. |
590 | <member name="channel" type="U16"/> |
588 | <member name="channel" type="U16"/> |
591 | </message> |
589 | </message> |
592 | |
590 | |
… | |
… | |
653 | |
651 | |
654 | <h2>Structs mainly used in messages send by the server</h2> |
652 | <h2>Structs mainly used in messages send by the server</h2> |
655 | |
653 | |
656 | <struct name="challenge_defaults"> |
654 | <struct name="challenge_defaults"> |
657 | Send soon after log-in to set the defaults for game challenges. |
655 | Send soon after log-in to set the defaults for game challenges. |
658 | <member name="gametype" type="U16"/> |
656 | <member name="type" type="U8"/> |
|
|
657 | <member name="ruleset" type="U8"/> |
|
|
658 | <p>The ruleset member is a pure guess, please verify. it could also be after size for example.</p> |
659 | <member name="size" type="U32"/> |
659 | <member name="size" type="U32"/> |
660 | <member name="timesys" type="U32"/> |
660 | <member name="timesys" type="U32"/> |
661 | <member name="time" type="U32"/> |
661 | <member name="time" type="U32"/> |
662 | <member name="byo_time" type="U32"/> |
662 | <member name="byo_time" type="U32"/> |
663 | <member name="byo_periods" type="U32"/> |
663 | <member name="byo_periods" type="U32"/> |
… | |
… | |
669 | <struct name="challenge" class="KGS::Challenge"> |
669 | <struct name="challenge" class="KGS::Challenge"> |
670 | A challenge. |
670 | A challenge. |
671 | |
671 | |
672 | <member name="user1" type="user"/> |
672 | <member name="user1" type="user"/> |
673 | <member name="user2" type="user"/> |
673 | <member name="user2" type="user"/> |
674 | <member name="gametype" type="U32"/> |
674 | <member name="type" type="U8"/> |
|
|
675 | <member name="id" type="U8"/> |
|
|
676 | <p>Possibly an id. No idea. Better echo this from the cchallenge request.</p> |
675 | <member name="rules" type="rules"/> |
677 | <member name="rules" type="rules"/> |
676 | </struct> |
678 | </struct> |
677 | |
679 | |
678 | <struct name="game" class="KGS::Game"> |
680 | <struct name="game" class="KGS::Game"> |
679 | Basic information about a game. Used in rooms for the gamelist and |
681 | Basic information about a game. Used in rooms for the gamelist and |
… | |
… | |
1045 | <member name="channel" type="U16"/> |
1047 | <member name="channel" type="U16"/> |
1046 | <p> |
1048 | <p> |
1047 | The room this game is associated with. |
1049 | The room this game is associated with. |
1048 | </p> |
1050 | </p> |
1049 | <member name="game" type="game"/> |
1051 | <member name="game" type="game"/> |
|
|
1052 | <p>The game. The "moves" member contains a small number. Probably garbage.</p> |
1050 | </message> |
1053 | </message> |
1051 | |
1054 | |
1052 | <h3>Room messages</h3> |
1055 | <h3>Room messages</h3> |
1053 | |
1056 | |
1054 | <p>Not all room messages are for rooms only, and rooms need to parse |
1057 | <p>Not all room messages are for rooms only, and rooms need to parse |
… | |
… | |
1085 | <member name="description" type="STRING"/> |
1088 | <member name="description" type="STRING"/> |
1086 | </message> |
1089 | </message> |
1087 | |
1090 | |
1088 | <h3>Game messages</h3> |
1091 | <h3>Game messages</h3> |
1089 | |
1092 | |
1090 | <message type="4400" name="upd_challenge" src="server"> |
1093 | <message type="4400" name="challenge" src="server"> |
1091 | Unclear. |
1094 | Unclear. |
1092 | <member name="channel" type="U16"/> |
1095 | <member name="channel" type="U16"/> |
1093 | <member name="challenge" type="challenge"/> |
1096 | <member name="challenge" type="challenge"/> |
1094 | </message> |
1097 | </message> |
1095 | |
1098 | |
… | |
… | |
1133 | <member name="whitescore" type="scorevalues"/> |
1136 | <member name="whitescore" type="scorevalues"/> |
1134 | </message> |
1137 | </message> |
1135 | |
1138 | |
1136 | <message type="440e" name="req_undo" src="server"> |
1139 | <message type="440e" name="req_undo" src="server"> |
1137 | <member name="channel" type="U16"/> |
1140 | <member name="channel" type="U16"/> |
1138 | |
|
|
1139 | </message> |
1141 | </message> |
1140 | |
1142 | |
1141 | <message type="4410" name="resign_game" src="server"> |
1143 | <message type="4410" name="resign_game" src="server"> |
1142 | <member name="channel" type="U16"/> |
1144 | <member name="channel" type="U16"/> |
1143 | <member name="player" type="U8"/> |
1145 | <member name="player" type="U8"/> |