ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/kgsueme/doc/protocol.html
(Generate patch)

Comparing kgsueme/doc/protocol.html (file contents):
Revision 1.59 by pcg, Sat May 29 06:38:26 2004 UTC vs.
Revision 1.60 by pcg, Sun May 30 02:22:01 2004 UTC

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.59 $</h1> 25<h1>$Revision: 1.60 $</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
237 <p>Password is a number calculated as follows (VERY insecure, basically 237 <p>Password is a number calculated as follows (VERY insecure, basically
238 plaintext!): <code>password = 0; for char in characters do password ← 238 plaintext!): <code>password = 0; for char in characters do password ←
239 password * 1055 + ascii_code (char)</code> 239 password * 1055 + ascii_code (char)</code>
240 </p> 240 </p>
241 241
242 <h4>TYPE clientid</h4> 242 <h4>TYPE CLIENTID16</h4>
243 BASE TYPE U16, LENGTH , MULTIPLIER 1<br /> 243 BASE TYPE U16, LENGTH , MULTIPLIER 1<br />
244 <h4>TYPE CLIENTID8</h4>
245 BASE TYPE U8, LENGTH , MULTIPLIER 1<br />
244 246
245 <p>An id chosen by the client, usually starting at one, to identify 247 <p>An id chosen by the client, usually starting at one, to identify
246 some handshakes initiated by the client, such as new games or memos.</p> 248 some handshakes initiated by the client, such as new games or memos.</p>
247 249
248<h2>Enumeration and set types used in the protocol.</h2> 250<h2>Enumeration and set types used in the protocol.</h2>
1332 1334
1333 <h4> 1335 <h4>
1334 <a name="C001d"></a>ORIGIN: CLIENT; 1336 <a name="C001d"></a>ORIGIN: CLIENT;
1335 MESSAGE: ping</h4> 1337 MESSAGE: ping</h4>
1336 NUMERIC TYPE (hex): 001d<p> 1338 NUMERIC TYPE (hex): 001d<p>
1337 <p>Wild guess, I send it in <a href="#S0016">idle_warn(0016)</a>.</p> 1339 <p>No idea. Not used anymore?</p>
1338 </p> 1340 </p>
1339 <table border="1" width="100%"> 1341 <table border="1" width="100%">
1340 <tr> 1342 <tr>
1341 <th width="10%">NAME</th> 1343 <th width="10%">NAME</th>
1342 <th width="8%">TYPE</th> 1344 <th width="8%">TYPE</th>
1474   1476  
1475 </td> 1477 </td>
1476 </tr> 1478 </tr>
1477 <tr> 1479 <tr>
1478 <td>cid</td> 1480 <td>cid</td>
1479 <td>clientid</td> 1481 <td>CLIENTID16</td>
1480 <td> </td> 1482 <td> </td>
1481 <td> 1483 <td>
1482 1484
1483   1485  
1484 </td> 1486 </td>
2015   2017  
2016 </td> 2018 </td>
2017 </tr> 2019 </tr>
2018 <tr> 2020 <tr>
2019 <td>cid</td> 2021 <td>cid</td>
2020 <td>clientid</td> 2022 <td>CLIENTID16</td>
2021 <td> </td>
2022 <td> 2023 <td> </td>
2023
2024  
2025 </td> 2024 <td>
2025
2026  
2026 <td> 2027 </td>
2027 <b></b>
2028  
2029 </td> 2028 <td>
2029 <b></b>
2030  
2030 </tr> 2031 </td>
2031 <tr> 2032 </tr>
2033 <tr>
2032 <td>type</td> 2034 <td>gametype</td>
2033 <td>U8</td> 2035 <td>U8</td>
2034 <td> </td> 2036 <td> </td>
2035 <td> 2037 <td>
2036 2038
2037   2039  
2242 <b></b> 2244 <b></b>
2243   2245  
2244 </td> 2246 </td>
2245 </tr> 2247 </tr>
2246 <tr> 2248 <tr>
2249 <td>black</td>
2250 <td>user</td>
2251 <td> </td>
2252 <td>
2253
2254  
2255 </td>
2256 <td>
2257 <b></b>
2258  
2259 </td>
2260 </tr>
2261 <tr>
2247 <td>challenge</td> 2262 <td>white</td>
2263 <td>user</td>
2264 <td> </td>
2265 <td>
2266
2267  
2268 </td>
2269 <td>
2270 <b></b>
2271  
2272 </td>
2273 </tr>
2274 <tr>
2275 <td>gametype</td>
2276 <td>U8</td>
2277 <td> </td>
2278 <td>
2279
2280  
2281 </td>
2282 <td>
2283 <b></b>
2284  
2285 </td>
2286 </tr>
2287 <tr>
2288 <td>cid</td>
2289 <td>CLIENTID8</td>
2290 <td> </td>
2291 <td>
2292
2293  
2294 </td>
2295 <td>
2296 <b></b>
2297  
2298 </td>
2299 </tr>
2300 <tr>
2248 <td>challenge</td> 2301 <td>rules</td>
2302 <td>rules</td>
2249 <td> </td> 2303 <td> </td>
2250 <td> 2304 <td>
2251 2305
2252   2306  
2253 </td> 2307 </td>
2387 2441
2388 <h4> 2442 <h4>
2389 <a name="C4406"></a>ORIGIN: CLIENT; 2443 <a name="C4406"></a>ORIGIN: CLIENT;
2390 MESSAGE: upd_tree</h4> 2444 MESSAGE: upd_tree</h4>
2391 NUMERIC TYPE (hex): 4406<p> 2445 NUMERIC TYPE (hex): 4406<p>
2392 Upload a partial game tree to the server. This is used to send moves 2446 <p>Upload a partial game tree to the server. This is used to send moves
2393 and even in-game comments to the server. For the comments, the 2447 and even in-game comments to the server. For the comments, the
2394 server prepends the username and rank. 2448 server prepends the username and rank.</p>
2395
2396 </p> 2449 </p>
2397 <table border="1" width="100%"> 2450 <table border="1" width="100%">
2398 <tr> 2451 <tr>
2399 <th width="10%">NAME</th> 2452 <th width="10%">NAME</th>
2400 <th width="8%">TYPE</th> 2453 <th width="8%">TYPE</th>
2401 <th width="4%">VALUE</th> 2454 <th width="4%">VALUE</th>
2419 <td>tree</td> 2472 <td>tree</td>
2420 <td>TREE</td> 2473 <td>TREE</td>
2421 <td> </td> 2474 <td> </td>
2422 <td> 2475 <td>
2423 2476
2477  
2478 </td>
2479 <td>
2480 <b></b>
2481  
2482 </td>
2483 </tr>
2484 </table>
2485
2486 <h4>
2487 <a name="C4407"></a>ORIGIN: CLIENT;
2488 MESSAGE: mark_dead</h4>
2489 NUMERIC TYPE (hex): 4407<p>
2490 <p>Marks stones ad dead (or alive?) by the client. Details unclear</p>
2491 </p>
2492 <table border="1" width="100%">
2493 <tr>
2494 <th width="10%">NAME</th>
2495 <th width="8%">TYPE</th>
2496 <th width="4%">VALUE</th>
2497 <th>DESCRIPTION</th>
2498 <th width="10%">GUARD</th>
2499 </tr>
2500 <tr>
2501 <td>channel</td>
2502 <td>U16</td>
2503 <td> </td>
2504 <td>
2505
2506  
2507 </td>
2508 <td>
2509 <b></b>
2510  
2511 </td>
2512 </tr>
2513 <tr>
2514 <td>x</td>
2515 <td>U8</td>
2516 <td> </td>
2517 <td>
2518
2519  
2520 </td>
2521 <td>
2522 <b></b>
2523  
2524 </td>
2525 </tr>
2526 <tr>
2527 <td>y</td>
2528 <td>U8</td>
2529 <td> </td>
2530 <td>
2531
2532  
2533 </td>
2534 <td>
2535 <b></b>
2536  
2537 </td>
2538 </tr>
2539 <tr>
2540 <td>dead</td>
2541 <td>flag</td>
2542 <td> </td>
2543 <td>
2544
2424   2545  
2425 </td> 2546 </td>
2426 <td> 2547 <td>
2427 <b></b> 2548 <b></b>
2428   2549  
2810 </td> 2931 </td>
2811 </tr> 2932 </tr>
2812 </table> 2933 </table>
2813 2934
2814 <h4> 2935 <h4>
2936 <a name="C4427"></a>ORIGIN: CLIENT;
2937 MESSAGE: move</h4>
2938 NUMERIC TYPE (hex): 4427<p>
2939 <p>Only during playing, moves.</p>
2940 </p>
2941 <table border="1" width="100%">
2942 <tr>
2943 <th width="10%">NAME</th>
2944 <th width="8%">TYPE</th>
2945 <th width="4%">VALUE</th>
2946 <th>DESCRIPTION</th>
2947 <th width="10%">GUARD</th>
2948 </tr>
2949 <tr>
2950 <td>channel</td>
2951 <td>U16</td>
2952 <td> </td>
2953 <td>
2954
2955  
2956 </td>
2957 <td>
2958 <b></b>
2959  
2960 </td>
2961 </tr>
2962 <tr>
2963 <td>x</td>
2964 <td>U8</td>
2965 <td> </td>
2966 <td>
2967
2968  
2969 </td>
2970 <td>
2971 <b></b>
2972  
2973 </td>
2974 </tr>
2975 <tr>
2976 <td>y</td>
2977 <td>U8</td>
2978 <td> </td>
2979 <td>
2980
2981  
2982 </td>
2983 <td>
2984 <b></b>
2985  
2986 </td>
2987 </tr>
2988 </table>
2989
2990 <h4>
2815 <a name="C4429"></a>ORIGIN: CLIENT; 2991 <a name="C4429"></a>ORIGIN: CLIENT;
2816 MESSAGE: reject_challenge</h4> 2992 MESSAGE: reject_challenge</h4>
2817 NUMERIC TYPE (hex): 4429<p> 2993 NUMERIC TYPE (hex): 4429<p>
2818 Reject a challenge from a given user. Not checked. 2994 Reject a challenge from a given user. Not checked.
2819 2995
2840 </td> 3016 </td>
2841 </tr> 3017 </tr>
2842 <tr> 3018 <tr>
2843 <td>name</td> 3019 <td>name</td>
2844 <td>username</td> 3020 <td>username</td>
3021 <td> </td>
3022 <td>
3023
3024  
3025 </td>
3026 <td>
3027 <b></b>
3028  
3029 </td>
3030 </tr>
3031 <tr>
3032 <td>gametype</td>
3033 <td>U8</td>
3034 <td> </td>
3035 <td>
3036
3037  
3038 </td>
3039 <td>
3040 <b></b>
3041  
3042 </td>
3043 </tr>
3044 <tr>
3045 <td>cid</td>
3046 <td>CLIENTID8</td>
3047 <td> </td>
3048 <td>
3049
3050  
3051 </td>
3052 <td>
3053 <b></b>
3054  
3055 </td>
3056 </tr>
3057 <tr>
3058 <td>rules</td>
3059 <td>rules</td>
2845 <td> </td> 3060 <td> </td>
2846 <td> 3061 <td>
2847 3062
2848   3063  
2849 </td> 3064 </td>
3025 <th width="4%">VALUE</th> 3240 <th width="4%">VALUE</th>
3026 <th>DESCRIPTION</th> 3241 <th>DESCRIPTION</th>
3027 <th width="10%">GUARD</th> 3242 <th width="10%">GUARD</th>
3028 </tr> 3243 </tr>
3029 <tr> 3244 <tr>
3030 <td>type</td> 3245 <td>gametype</td>
3031 <td>U8</td> 3246 <td>U8</td>
3032 <td> </td> 3247 <td> </td>
3033 <td> 3248 <td>
3034 3249
3035   3250  
3144 </td> 3359 </td>
3145 </tr> 3360 </tr>
3146 <tr> 3361 <tr>
3147 <td>notes</td> 3362 <td>notes</td>
3148 <td>STRING</td> 3363 <td>STRING</td>
3149 <td> </td>
3150 <td>
3151
3152  
3153 </td>
3154 <td>
3155 <b></b>
3156  
3157 </td>
3158 </tr>
3159 </table>
3160
3161 <h4>STRUCTURE challenge</h4>
3162 CLASS: KGS::Challenge<br />
3163 <p>
3164 A challenge.
3165
3166 </p>
3167 <table border="1" width="100%">
3168 <tr>
3169 <th width="10%">NAME</th>
3170 <th width="8%">TYPE</th>
3171 <th width="4%">VALUE</th>
3172 <th>DESCRIPTION</th>
3173 <th width="10%">GUARD</th>
3174 </tr>
3175 <tr>
3176 <td>user1</td>
3177 <td>user</td>
3178 <td> </td>
3179 <td>
3180
3181  
3182 </td>
3183 <td>
3184 <b></b>
3185  
3186 </td>
3187 </tr>
3188 <tr>
3189 <td>user2</td>
3190 <td>user</td>
3191 <td> </td>
3192 <td>
3193
3194  
3195 </td>
3196 <td>
3197 <b></b>
3198  
3199 </td>
3200 </tr>
3201 <tr>
3202 <td>type</td>
3203 <td>U8</td>
3204 <td> </td>
3205 <td>
3206
3207  
3208 </td>
3209 <td>
3210 <b></b>
3211  
3212 </td>
3213 </tr>
3214 <tr>
3215 <td>id</td>
3216 <td>U8</td>
3217 <td> </td>
3218 <td>
3219
3220  
3221 </td>
3222 <td>
3223 <b></b>
3224  
3225 </td>
3226 </tr>
3227 <tr>
3228 <td>rules</td>
3229 <td>rules</td>
3230 <td> </td> 3364 <td> </td>
3231 <td> 3365 <td>
3232 3366
3233   3367  
3234 </td> 3368 </td>
3280 <b></b> 3414 <b></b>
3281   3415  
3282 </td> 3416 </td>
3283 </tr> 3417 </tr>
3284 <tr> 3418 <tr>
3285 <td>user1</td> 3419 <td>black</td>
3286 <td>user</td> 3420 <td>user</td>
3287 <td> </td> 3421 <td> </td>
3288 <td> 3422 <td>
3289 White 3423 White
3290 3424
3294 <b></b> 3428 <b></b>
3295   3429  
3296 </td> 3430 </td>
3297 </tr> 3431 </tr>
3298 <tr> 3432 <tr>
3299 <td>user2</td> 3433 <td>white</td>
3300 <td>user</td> 3434 <td>user</td>
3301 <td> </td> 3435 <td> </td>
3302 <td> 3436 <td>
3303 Black 3437 Black
3304 3438
3308 <b></b> 3442 <b></b>
3309   3443  
3310 </td> 3444 </td>
3311 </tr> 3445 </tr>
3312 <tr> 3446 <tr>
3313 <td>user3</td> 3447 <td>owner</td>
3314 <td>user</td> 3448 <td>user</td>
3315 <td> </td> 3449 <td> </td>
3316 <td> 3450 <td>
3317 Owner 3451 Owner
3318 3452
3737 <b></b> 3871 <b></b>
3738   3872  
3739 </td> 3873 </td>
3740 </tr> 3874 </tr>
3741 <tr> 3875 <tr>
3742 <td>user1</td> 3876 <td>black</td>
3743 <td>user</td> 3877 <td>user</td>
3744 <td> </td> 3878 <td> </td>
3745 <td> 3879 <td>
3746 White, flags contain low 8 bits of revision (bits 16-23). 3880 White, flags contain low 8 bits of revision (bits 16-23).
3747 3881
3751 <b></b> 3885 <b></b>
3752   3886  
3753 </td> 3887 </td>
3754 </tr> 3888 </tr>
3755 <tr> 3889 <tr>
3756 <td>user2</td> 3890 <td>white</td>
3757 <td>user</td> 3891 <td>user</td>
3758 <td> </td> 3892 <td> </td>
3759 <td> 3893 <td>
3760 Black, flags contain high 8 bits of revision (bits 16-23). 3894 Black, flags contain high 8 bits of revision (bits 16-23).
3761 3895
3765 <b></b> 3899 <b></b>
3766   3900  
3767 </td> 3901 </td>
3768 </tr> 3902 </tr>
3769 <tr> 3903 <tr>
3770 <td>user3</td> 3904 <td>owner</td>
3771 <td>user</td> 3905 <td>user</td>
3772 <td> </td> 3906 <td> </td>
3773 <td> 3907 <td>
3774 3908
3775 3909
4754 NUMERIC TYPE (hex): 0016 4888 NUMERIC TYPE (hex): 0016
4755 (possibly in response to 4889 (possibly in response to
4756 <a href="#C0016">idle_reset(0016)</a> 4890 <a href="#C0016">idle_reset(0016)</a>
4757 ) 4891 )
4758 <p> 4892 <p>
4759 idle warning, autologout soon (10 minutes...) 4893 <p>idle warning, autologout soon (10 minutes...). Responding with <a href="#S001d">ping(001d)</a> usually helps.</p>
4760 </p> 4894 </p>
4761 <table border="1" width="100%"> 4895 <table border="1" width="100%">
4762 <tr> 4896 <tr>
4763 <th width="10%">NAME</th> 4897 <th width="10%">NAME</th>
4764 <th width="8%">TYPE</th> 4898 <th width="8%">TYPE</th>
4765 <th width="4%">VALUE</th> 4899 <th width="4%">VALUE</th>
5109   5243  
5110 </td> 5244 </td>
5111 </tr> 5245 </tr>
5112 <tr> 5246 <tr>
5113 <td>cid</td> 5247 <td>cid</td>
5114 <td>clientid</td> 5248 <td>CLIENTID16</td>
5115 <td> </td> 5249 <td> </td>
5116 <td> 5250 <td>
5117 5251
5118   5252  
5119 </td> 5253 </td>
5177   5311  
5178 </td> 5312 </td>
5179 </tr> 5313 </tr>
5180 <tr> 5314 <tr>
5181 <td>cid</td> 5315 <td>cid</td>
5182 <td>clientid</td> 5316 <td>CLIENTID16</td>
5183 <td> </td> 5317 <td> </td>
5184 <td> 5318 <td>
5185 5319
5186   5320  
5187 </td> 5321 </td>
5245   5379  
5246 </td> 5380 </td>
5247 </tr> 5381 </tr>
5248 <tr> 5382 <tr>
5249 <td>cid</td> 5383 <td>cid</td>
5250 <td>clientid</td> 5384 <td>CLIENTID16</td>
5251 <td> </td> 5385 <td> </td>
5252 <td> 5386 <td>
5253 5387
5254   5388  
5255 </td> 5389 </td>
5313   5447  
5314 </td> 5448 </td>
5315 </tr> 5449 </tr>
5316 <tr> 5450 <tr>
5317 <td>cid</td> 5451 <td>cid</td>
5318 <td>clientid</td> 5452 <td>CLIENTID16</td>
5319 <td> </td> 5453 <td> </td>
5320 <td> 5454 <td>
5321 5455
5322   5456  
5323 </td> 5457 </td>
5435   5569  
5436 </td> 5570 </td>
5437 </tr> 5571 </tr>
5438 <tr> 5572 <tr>
5439 <td>cid</td> 5573 <td>cid</td>
5440 <td>clientid</td> 5574 <td>CLIENTID16</td>
5441 <td> </td> 5575 <td> </td>
5442 <td> 5576 <td>
5443 5577
5444   5578  
5445 </td> 5579 </td>
6314 <b></b> 6448 <b></b>
6315   6449  
6316 </td> 6450 </td>
6317 </tr> 6451 </tr>
6318 <tr> 6452 <tr>
6319 <td>challenge</td> 6453 <td>black</td>
6320 <td>challenge</td>
6321 <td> </td> 6454 <td>user</td>
6455 <td> </td>
6456 <td>
6457
6458  
6322 <td> 6459 </td>
6323 6460 <td>
6461 <b></b>
6462  
6463 </td>
6464 </tr>
6465 <tr>
6466 <td>white</td>
6467 <td>user</td>
6468 <td> </td>
6469 <td>
6470
6471  
6472 </td>
6473 <td>
6474 <b></b>
6475  
6476 </td>
6477 </tr>
6478 <tr>
6479 <td>gametype</td>
6480 <td>U8</td>
6481 <td> </td>
6482 <td>
6483
6484  
6485 </td>
6486 <td>
6487 <b></b>
6488  
6489 </td>
6490 </tr>
6491 <tr>
6492 <td>cid</td>
6493 <td>CLIENTID8</td>
6494 <td> </td>
6495 <td>
6496
6497  
6498 </td>
6499 <td>
6500 <b></b>
6501  
6502 </td>
6503 </tr>
6504 <tr>
6505 <td>rules</td>
6506 <td>rules</td>
6507 <td> </td>
6508 <td>
6509
6510  
6511 </td>
6512 <td>
6513 <b></b>
6514  
6515 </td>
6516 </tr>
6517 <tr>
6518 <td>notes</td>
6519 <td>STRING</td>
6520 <td> </td>
6521 <td>
6522
6324   6523  
6325 </td> 6524 </td>
6326 <td> 6525 <td>
6327 <b></b> 6526 <b></b>
6328   6527  
7036 <h4> 7235 <h4>
7037 <a name="S4429"></a>ORIGIN: SERVER; 7236 <a name="S4429"></a>ORIGIN: SERVER;
7038 MESSAGE: reject_challenge</h4> 7237 MESSAGE: reject_challenge</h4>
7039 NUMERIC TYPE (hex): 4429<p> 7238 NUMERIC TYPE (hex): 4429<p>
7040 Reject a challenge by a given user. Not checked. 7239 Reject a challenge by a given user. Not checked.
7041
7042 </p> 7240 </p>
7043 <table border="1" width="100%"> 7241 <table border="1" width="100%">
7044 <tr> 7242 <tr>
7045 <th width="10%">NAME</th> 7243 <th width="10%">NAME</th>
7046 <th width="8%">TYPE</th> 7244 <th width="8%">TYPE</th>
7062 </td> 7260 </td>
7063 </tr> 7261 </tr>
7064 <tr> 7262 <tr>
7065 <td>name</td> 7263 <td>name</td>
7066 <td>username</td> 7264 <td>username</td>
7265 <td> </td>
7266 <td>
7267
7268  
7269 </td>
7270 <td>
7271 <b></b>
7272  
7273 </td>
7274 </tr>
7275 <tr>
7276 <td>gametype</td>
7277 <td>U8</td>
7278 <td> </td>
7279 <td>
7280
7281  
7282 </td>
7283 <td>
7284 <b></b>
7285  
7286 </td>
7287 </tr>
7288 <tr>
7289 <td>cid</td>
7290 <td>CLIENTID8</td>
7291 <td> </td>
7292 <td>
7293
7294  
7295 </td>
7296 <td>
7297 <b></b>
7298  
7299 </td>
7300 </tr>
7301 <tr>
7302 <td>rules</td>
7303 <td>rules</td>
7067 <td> </td> 7304 <td> </td>
7068 <td> 7305 <td>
7069 7306
7070   7307  
7071 </td> 7308 </td>
7105   7342  
7106 </td> 7343 </td>
7107 </tr> 7344 </tr>
7108 <tr> 7345 <tr>
7109 <td>cid</td> 7346 <td>cid</td>
7110 <td>clientid</td> 7347 <td>CLIENTID16</td>
7111 <td> </td> 7348 <td> </td>
7112 <td> 7349 <td>
7113 7350
7114   7351  
7115 </td> 7352 </td>

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines