Rev 110 | Details | Compare with Previous | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 110 | pmbaty | 1 | command synopsis |
| 2 | |||
| 3 | !command....................... passes command to a shell. |
||
| 4 | adaptive NPS a b c d........... enables adaptive hash mode. |
||
| 5 | alarm on|off................... turns audible alarm on/off. |
||
| 6 | analyze........................ analyze a game in progress. |
||
| 7 | annotate....................... annotate game |
||
| 8 | autotune....................... SMP search tuning (help autotune for details) |
||
| 9 | batch on|off................... on disables async I/O for batch file usage |
||
| 10 | bench.......................... runs performance benchmark. |
||
| 11 | black.......................... sets black to move. |
||
| 12 | book........................... controls book |
||
| 13 | cache=n........................ sets tablebase cache size. |
||
| 14 | clock.......................... displays/adjusts chess clock times. |
||
| 15 | display........................ displays chess board. |
||
| 16 | display [n].................... sets display options |
||
| 17 | draw accept|decline............ decline always declines. |
||
| 18 | draw offer|nooffer............. nooffer never offers a draw. |
||
| 19 | draw dynamic <0|1>............. enables/disables dynamic draw scores. |
||
| 20 | echo........................... echos output to display. |
||
| 21 | edit........................... edit board position. |
||
| 22 | egtb........................... enables endgame database probes. |
||
| 23 | egtbd.......................... set min remaining depth to allow probes. |
||
| 24 | epdhelp........................ info about EPD facility. |
||
| 25 | end............................ terminates program. |
||
| 26 | evaluation..................... adjust evaluation terms. |
||
| 27 | exit........................... restores STDIN to keyboard. |
||
| 28 | force move..................... forces specific move. |
||
| 29 | hash n......................... sets transposition table size. |
||
| 30 | (n bytes, nK bytes or nM bytes). |
||
| 31 | hashp n........................ sets pawn hash table size. |
||
| 32 | history........................ display game moves. |
||
| 33 | import filename................ imports learning data (.lrn files). |
||
| 34 | info........................... displays program settings. |
||
| 35 | input filename................. sets STDIN to filename, reverts back on exit. |
||
| 36 | kibitz n....................... sets kibitz mode n on ICS. |
||
| 37 | learn n|clear.................. enables/disables learning (100 = default). |
||
| 38 | clear clears all learned information |
||
| 39 | level moves time inc........... sets ICS time controls. |
||
| 40 | linelength n................... sets line length to n. A really large value |
||
| 41 | will produce 1 line PVs, making parsing easier |
||
| 42 | list........................... update/display GM/IM/computer lists. |
||
| 154 | pmbaty | 43 | lmp base scale................. LMP pruning move counts |
| 44 | lmr min max bias moves scale... LMR reduction matrix generator |
||
| 110 | pmbaty | 45 | load file title................ load a position from problem file, starting |
| 46 | with line containing title, ending on exit. |
||
| 47 | log on|off..................... turn logging on/off. |
||
| 48 | mode normal|tournament......... toggles tournament mode. |
||
| 49 | move........................... initiates search (same as go). |
||
| 50 | name........................... sets opponent's name. |
||
| 51 | new............................ initialize and start new game. |
||
| 52 | null m n....................... null move R = M + depth / n. |
||
| 53 | noise n........................ no status until n nodes searched. |
||
| 54 | operator seconds............... sets operator time per move. |
||
| 55 | output long|short.............. sets move display format to long or SAN |
||
| 56 | perf........................... times the move generator/make_move. |
||
| 57 | perft.......................... tests the move generator/make_move. |
||
| 58 | personality save|load fn....... saves/loads a personality file. |
||
| 59 | pgn option value............... set PGN header information. |
||
| 60 | phash n........................ sets path hash table size. |
||
| 61 | ponder on|off.................. toggle pondering off/on. |
||
| 62 | ponder move.................... ponder "move" as predicted move. |
||
| 63 | rating a b..................... sets Crafty rating to a, opponent to b |
||
| 64 | (affects draw score/contempt) |
||
| 65 | read [filename]................ read moves in (from [filename] if given.) |
||
| 66 | reada [filename]............... read moves in (from [filename]]) and append. |
||
| 67 | (appends to current game history.) |
||
| 68 | reset n........................ reset game to move n. |
||
| 69 | resign......................... ends current game recording Crafty as winner. |
||
| 70 | resign m n..................... set resign threshold to m pawns. |
||
| 71 | n = # of moves before resigning. |
||
| 72 | savegame [filename]............ saves game in PGN format (to filename). |
||
| 73 | savepos [filename]............. saves position in FEN string (to filename). |
||
| 74 | score.......................... print evaluation of position. |
||
| 75 | screen [filename] margin....... screen a file of EPD positions by searching them |
||
| 76 | and culling positions with score outside the |
||
| 77 | window {-margin, margin} (use st=n to set time) |
||
| 78 | sd n........................... sets absolute search depth. |
||
| 79 | search move.................... search specified move only. |
||
| 80 | selective min max.............. set null move depths. |
||
| 81 | setboard FEN................... sets board position to FEN position. |
||
| 82 | settc.......................... set time controls. |
||
| 83 | show book...................... toggle book statistics. |
||
| 84 | skill n........................ set skill level to n |
||
| 85 | smp............................ sets SMP parameters (help smp for details) |
||
| 86 | sn n........................... sets absolute search node limit. |
||
| 87 | speech on|off.................. enables (disables) audio output. |
||
| 88 | st n........................... sets absolute search time. |
||
| 89 | swindle on|off................. enables/disables swindle mode. |
||
| 90 | tags........................... list PGN header tags. |
||
| 91 | test file [N].................. test a suite of problems. |
||
| 92 | time........................... time controls. |
||
| 93 | timebook....................... out of book time adjustment |
||
| 94 | trace n........................ display search tree below depth n. |
||
| 95 | usage percentage............... adjusts Crafty's time usage up or down. |
||
| 96 | whisper n...................... sets ICS whisper mode n. |
||
| 97 | white.......................... sets white to move. |
||
| 98 | wild n......................... sets ICS wild position (7 for now). |
||
| 99 | xboard......................... sets xboard compatibility mode. |
||
| 100 | |||
| 101 | Type "help command" to see more detailed help information, if it is |
||
| 102 | available. Note that help is not available for all possible commands. |
||
| 103 | <end> |
||
| 104 | |||
| 105 | <analyze> |
||
| 106 | The analyze command puts Crafty into a mode where it will search forever |
||
| 107 | in the current position. When a move is entered, crafty will make that |
||
| 108 | move, switch sides, and again compute, printing analysis as it searches. |
||
| 109 | You can back up a move by entering "back" or you can back up several |
||
| 110 | moves by entering "back n". Note that n is the number of moves, counting |
||
| 111 | each player's move as one (ie n plies, not n full moves). |
||
| 112 | <end> |
||
| 113 | |||
| 114 | <annotate> |
||
| 115 | annotate[h|t] filename side moves margin time [n] |
||
| 116 | |||
| 117 | Filename is the input file with game moves, while the output will be |
||
| 118 | written to filename.can. The input file is PGN-compatible with one |
||
| 119 | addition, the ability to request that alternative moves also be |
||
| 120 | analyzed at any point. To do this at the point where you have |
||
| 121 | alternative moves, simply include them in braces {move1, move2}, |
||
| 122 | and Crafty will then search them also. |
||
| 123 | |||
| 124 | Side can be b/w/bw to indicate whether to annotate only the white |
||
| 125 | side (w), the black side (b) or both (bw). Side can also be the |
||
| 126 | players name, where Crafty will then use the players name and the |
||
| 127 | PGN tags to discover which you want the annotation done for. |
||
| 128 | |||
| 129 | Moves indicates which moves to annotate. A single value says start |
||
| 130 | at the indicated move and go through the entire game. A range (20-30) |
||
| 131 | annotates the given range only. |
||
| 132 | |||
| 133 | Margin is the difference between the search value for the move played |
||
| 134 | in the game, and the best move crafty found, before a comment is |
||
| 135 | generated (pawn=1.0). |
||
| 136 | |||
| 137 | Time is the time limit per move in seconds. |
||
| 138 | |||
| 139 | If the optional "n" is appended, this produces N best moves/scores/PV's, |
||
| 140 | rather than just the very best move. It won't display any move that |
||
| 141 | is worse than the actual game move played, but you can use -N to force |
||
| 142 | Crafty to produce N PV's regardless of how bad they get. |
||
| 143 | |||
| 144 | Using 'annotateh' produces an HTML file with bitmapped board displays |
||
| 145 | where analysis was displayed. |
||
| 146 | |||
| 147 | Using "annotatet" will cause the output to be written in a LaTex (.tex) |
||
| 148 | format. |
||
| 149 | <end> |
||
| 150 | |||
| 151 | <autotune> |
||
| 152 | The autotune command can be used to configure various SMP search parameters |
||
| 153 | for your specific hardware and target time limit. Note that before you run |
||
| 154 | this command, you MUST set the max number of threads you want to use (most |
||
| 155 | likely the number of physical processor cores on your machine.) Crafty |
||
| 156 | actually runs a parallel search over a small set of positions repeatedly, and |
||
| 157 | to properly tune things, it needs to use the max configuration you will ever |
||
| 158 | want to use. If you forget, autotune will refuse to run. The command is: |
||
| 159 | |||
| 160 | autotune <time> <accuracy> |
||
| 161 | |||
| 162 | The <time> argument tunes the parallel search stuff for this time limit. The |
||
| 163 | only real place where this might be useful is for very fast vs very slow time |
||
| 164 | limits, since a fast search probably needs to be a bit more aggressive if it |
||
| 165 | is going to have any hope of using multiple threads. Once you get to a time |
||
| 166 | limit of 30 - 60 seconds, going further wont help at all and can GREATLY |
||
| 167 | increase the run-time of the automatic tuning code. |
||
| 168 | |||
| 169 | <accuracy> is simply a number that tells Crafty how many times to run a test |
||
| 170 | for a specific tuning option. It will run this many tests and then use the |
||
| 171 | average of the run times for the timing value. Four (4) provides pretty |
||
| 172 | good accuracy, anything less than four often runs afoul of SMP non-determinism |
||
| 173 | and it can make wrong decisions. 8-16 are better but these will take some time |
||
| 174 | to run so be prepared. Crafty will give you an estimate of the expected run- |
||
| 175 | time once it calibrates the benchmark to the time limit you specified. |
||
| 176 | |||
| 177 | Once AutoTune() finishes, it will append the necessary commands to the .craftyrc |
||
| 178 | file to set the optimal values for each option. If you run this multiple times, |
||
| 179 | you will accumulate cruft at the bottom of the .craftyrc file. Since the last |
||
| 180 | commands override the earlier ones, it will work, but if you do run it more than |
||
| 181 | once you might consider an edit to clean it up. |
||
| 182 | |||
| 183 | This can burn some time so it is an ideal command to run overnight where you can |
||
| 184 | crank up accuracy and get pretty optimal settings. |
||
| 185 | |||
| 186 | Note: This is more effective for larger numbers of threads/cores. On a machine |
||
| 187 | with 8 or fewer cores, the default values are probably as good as anything. But |
||
| 188 | as the number of cores climbs, autotune can find better settings depending on |
||
| 189 | the hardware. |
||
| 190 | <end> |
||
| 191 | |||
| 192 | <book> |
||
| 193 | You can use the following commands to customize how the program uses |
||
| 194 | the opening book(book.bin and books.bin). Typically, book.bin contains |
||
| 195 | a large opening database made from GM games. Books.bin is a short, |
||
| 196 | customized book that contains selected lines that are well-suited to |
||
| 197 | Crafty's style of play. The flags can further refine how this small |
||
| 198 | book file is used to encourage/avoid specific lines. |
||
| 199 | |||
| 200 | binfile create filename [maxply] [mp] [wpc] |
||
| 201 | |||
| 202 | This command creates a new book by first removing the old binary file. |
||
| 203 | it then will parse filename and add the moves to the binary book |
||
| 204 | filename given as binfile. |
||
| 205 | |||
| 206 | maxply is the max length of book moves stored from any single PGN |
||
| 207 | game in the input file. |
||
| 208 | |||
| 209 | mp means a particular move must appear in at least that many games |
||
| 210 | to be stored in the book file. |
||
| 211 | |||
| 212 | wpc is the relative winning percentage. 50 means exclude any book move |
||
| 213 | that doesn't have at least 50% as many wins as losses. |
||
| 214 | |||
| 215 | book mask accept chars |
||
| 216 | |||
| 217 | Sets the accept mask to the flag characters in chars (see flags below.) |
||
| 218 | Any flags set in this mask will include either (a) moves with the flag |
||
| 219 | set, or (b) moves with no flags set. |
||
| 220 | |||
| 221 | book mask reject chars |
||
| 222 | |||
| 223 | Sets the reject mask to the flag characters in chars (see flags below.) |
||
| 224 | Any flags set in this mask will reject any moves with the flag set (in |
||
| 225 | the opening book.) |
||
| 226 | |||
| 227 | book off turns the book completely off. |
||
| 228 | |||
| 229 | book random 0|1 disables/enables randomness. Book random 0 takes the set |
||
| 230 | of book moves and searches them for about 1/10th of the normal search time |
||
| 231 | and lets the search choose which move to play. Any move not in the book |
||
| 232 | file will not be considered or played. |
||
| 233 | |||
| 234 | bookw weight v |
||
| 235 | |||
| 236 | Sets weight for book ordering. (Weights are freq (frequency), eval |
||
| 237 | (evaluation) and learn (learned scores). |
||
| 238 | |||
| 239 | book width n |
||
| 240 | |||
| 241 | Specifies how many moves from the sorted set of book moves are to be |
||
| 242 | considered. 1 produces the best move from the set, but provides little |
||
| 243 | randomness. 99 includes all moves in the book move set. |
||
| 244 | |||
| 245 | Flags are one (or more) members of the following set of characters: {?? ? |
||
| 246 | = ! !! 0 1 2 3 4 5 6 7 8 9 A B C D E F} Normally, ?? means never play, ? |
||
| 247 | means rarely play, = means drawish opening, ! means good move, !! means |
||
| 248 | always play, and 0-F are user flags that a user can add to any move in the |
||
| 249 | book, and by setting the right mask (above) can force the program to either |
||
| 250 | always play the move or never play the move. The special character * means |
||
| 251 | all flags and is probably dangerous to use. Flags are added to a move by |
||
| 252 | entering the move and a / or \ followed by the flags. / means add the flags |
||
| 253 | to the move preserving other flags already there while \ means replace any |
||
| 254 | flags with those following the \. |
||
| 255 | |||
| 256 | The format of the book text (raw data) is as follows: |
||
| 257 | |||
| 258 | [title information] (required) |
||
| 259 | 1. e4 e5 2. Nf3 Nc6 3. ... (a sequence of moves) |
||
| 260 | [title information for next line] (required) |
||
| 261 | 1. e4 e6 ... |
||
| 262 | end (optional) |
||
| 263 | <end> |
||
| 264 | |||
| 265 | <clock> |
||
| 266 | clock crafty-time [opponent-time] |
||
| 267 | |||
| 268 | clock is primarily intended to be used in a computer chess tournament |
||
| 269 | where the games are played on a real chess board using a real chess |
||
| 270 | clock, rather than through some automatic interface that manages the |
||
| 271 | time automatically. |
||
| 272 | |||
| 273 | crafty-time is the amount of time left on Crafty's clock, expressed in |
||
| 274 | minutes, or in hh:mm format. Crafty will convert this to its internal |
||
| 275 | representation correctly. |
||
| 276 | |||
| 277 | opponent-time is the amount of time left on the opponent's clock, |
||
| 278 | expressed in the same way. This is option and is not required as |
||
| 279 | Crafty does not use this information during the game although it |
||
| 280 | does keep up with it. |
||
| 281 | |||
| 282 | After entering this command, you should probably type "clock" to be |
||
| 283 | sure things look correct. |
||
| 284 | |||
| 285 | Note that the "operator" command sets a time per move overhead for the |
||
| 286 | operator, and that this affects the actual time used as expected. IE in |
||
| 287 | the above clock setting, assuming the operator has allowed 10 seconds per |
||
| 288 | move, crafty will "hide" 35 * 10 seconds and not use it for searching, which |
||
| 289 | gives the operator time to actually make the moves and press the real clock |
||
| 290 | button. It is CRITICAL that the clock command be used from time to time to |
||
| 291 | keep Crafty's internal clock in sync with the real clock. If you use the |
||
| 292 | operator command, the clock value should match the real chess clock exactly, |
||
| 293 | if you choose to not use the operator time and fudge the chess clock time |
||
| 294 | yourself, that will work as well, but it is more prone to errors. |
||
| 295 | <end> |
||
| 296 | |||
| 297 | |||
| 298 | <display> |
||
| 299 | display moveinfo -> display move time/results/etc. |
||
| 300 | display pv -> display principal variation. |
||
| 301 | display fail -> display fail high / low moves. |
||
| 302 | display stats -> display search statistics. |
||
| 303 | display moves -> display root moves as they are searched. |
||
| 304 | display info -> display general information messages. |
||
| 305 | display ply1 -> display ply-1 move list/sorting info. |
||
| 306 | display movelist -> display move list after each iteration. |
||
| 307 | |||
| 308 | For the above options, they can be preceded by a "no" to disable them, or |
||
| 309 | omit the "no" to enable them. "display all" will show all current display |
||
| 310 | settings |
||
| 311 | <end> |
||
| 312 | |||
| 313 | <draw> |
||
| 314 | draw offer|nooffer determines whether Crafty will automatically offer |
||
| 315 | draws when it believes that result is appropriate. |
||
| 316 | |||
| 317 | draw accept|decline determines whether Crafty will automatically accept |
||
| 318 | draw offers when they are made, or if it will automatically decline them |
||
| 319 | no matter what the current score is. |
||
| 320 | |||
| 321 | draw dynamic 1|0 enables(disables) dynamic draw score computation based on |
||
| 322 | the rating difference between Crafty and the opponent (usually obtained by |
||
| 323 | the "rating" command from xboard. If set to 0, this is disabled and the |
||
| 324 | default draw score (aka contempt factor) is set to zero (0). |
||
| 325 | <end> |
||
| 326 | |||
| 327 | <lists> |
||
| 328 | list name +name -name ... |
||
| 329 | |||
| 330 | The lists are as follows: |
||
| 331 | |||
| 332 | AK Auto-Kibitz list. If crafty plays any opponent named in this list |
||
| 333 | while playing on a chess server, it will kibitz the usual analysis as |
||
| 334 | the game is played. Not advised for human opponents as they do not |
||
| 335 | like the "noise". |
||
| 336 | |||
| 337 | B Blocker list. If you notice a player repeatedly trying to block the |
||
| 338 | position to get easy draws, put his name in this list. Players in this |
||
| 339 | list get special "anti-human" scoring turned up louder than usual to |
||
| 340 | combat this strategy. |
||
| 341 | |||
| 342 | C Computer list. This is not needed on ICC as xboard/winboard both |
||
| 343 | tell crafty it is playing a computer opponent. However, if your GUI |
||
| 344 | does not do this, you can put the name of the computer opponents you |
||
| 345 | frequently play in this list and if the GUI sends the "name" command |
||
| 346 | properly, crafty will figure out that it is playing a computer. |
||
| 347 | |||
| 348 | GM/IM lists are obvious. This identifies players that are strong |
||
| 349 | enough that Crafty should resign or offer draws sooner than normal, |
||
| 350 | rather than hoping for a blunder in lost or drawn positions. |
||
| 351 | |||
| 352 | SP Special Player list. Names in this list can be used to specify |
||
| 353 | a unique opening book (to replace books.bin, not book.bin) for this |
||
| 354 | particular opponent, as well as specifying a personality file to use |
||
| 355 | rather than the default crafty.cpf. The format of this particular |
||
| 356 | list is: |
||
| 357 | |||
| 358 | list SP +name [book=filename] [personality=filename] |
||
| 359 | |||
| 360 | <end> |
||
| 361 | |||
| 154 | pmbaty | 362 | <lmp> |
| 363 | |||
| 364 | lmp base scale |
||
| 365 | |||
| 366 | This commands tunes the LMP move count thresholds. The array it produces |
||
| 367 | is indexed by depth, and defines the number of moves at that remaining |
||
| 368 | depth that must be searched before late move pruning can kick in. |
||
| 369 | |||
| 370 | The basic formula looks like this: |
||
| 371 | |||
| 372 | moves = base + depth ^ scale |
||
| 373 | |||
| 374 | Bigger valuse for base and scale make LMP more conservative, smaller values |
||
| 375 | make it more aggressive and risky. |
||
| 376 | |||
| 110 | pmbaty | 377 | <lmr> |
| 378 | |||
| 379 | lmr min max dscale mscale scale |
||
| 380 | |||
| 381 | This command tunes the LMR reduction matrix. The values are used to |
||
| 382 | set the reduction matrix, which is indexed by depth remaining and moves |
||
| 383 | searched so far at this ply. This is an array of 32 rows, 64 columns, |
||
| 384 | where the rows correspond to remaining depth and the columns correspond |
||
| 385 | to total moves searched so far at this ply. |
||
| 386 | |||
| 387 | The basic calculation looks like this: |
||
| 388 | |||
| 389 | r[depth][moves] = (log(depth) * dscale + log(moves) * mscale) / scale |
||
| 390 | |||
| 391 | Increasing dscale makes the reduction amount favor depth more, increasing |
||
| 392 | mscale makes the reduction amount favor moves searched more. The "scale" |
||
| 393 | value is used to limit the speed at which the reductions grow. |
||
| 394 | |||
| 395 | Note that NO reduction can be less than min nor greater than max, from |
||
| 396 | the lmr command. When you use this command, it will display a compressed |
||
| 397 | version of the 32x64 array like this: |
||
| 398 | |||
| 399 | |||
| 400 | |||
| 401 | LMR reductions[depth][moves] |
||
| 402 | ----------------------moves searched----------------- |
||
| 403 | | 2 6 10 14 18 22 26 30 34 38 42 46 50 54 58 62 |
||
| 404 | | 3: 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 |
||
| 405 | | 5: 1 1 2 2 2 2 2 2 3 3 3 3 3 3 3 3 |
||
| 406 | d 7: 1 1 2 2 2 3 3 3 3 3 3 3 3 3 4 4 |
||
| 407 | e 9: 1 1 2 2 3 3 3 3 3 3 4 4 4 4 4 4 |
||
| 408 | p 11: 1 2 2 3 3 3 3 3 4 4 4 4 4 4 4 4 |
||
| 409 | t 13: 1 2 2 3 3 3 4 4 4 4 4 4 4 4 4 5 |
||
| 410 | h 15: 1 2 2 3 3 3 4 4 4 4 4 4 5 5 5 5 |
||
| 411 | 17: 1 2 3 3 3 4 4 4 4 4 4 5 5 5 5 5 |
||
| 412 | l 19: 1 2 3 3 3 4 4 4 4 4 5 5 5 5 5 5 |
||
| 413 | e 21: 1 2 3 3 4 4 4 4 4 5 5 5 5 5 5 5 |
||
| 414 | f 23: 1 2 3 3 4 4 4 4 5 5 5 5 5 5 5 5 |
||
| 415 | t 25: 1 2 3 3 4 4 4 5 5 5 5 5 5 5 5 6 |
||
| 416 | | 27: 1 2 3 3 4 4 4 5 5 5 5 5 5 6 6 6 |
||
| 417 | | 29: 1 2 3 4 4 4 4 5 5 5 5 5 5 6 6 6 |
||
| 418 | | 31: 1 2 3 4 4 4 5 5 5 5 5 5 6 6 6 6 |
||
| 419 | |||
| 420 | Notice that the depth (# of rows) only displays every other row to make |
||
| 421 | the display fit on a normal screen. The moves searched show every fourth |
||
| 422 | value since there are 2x as many columns as rows. However, even though |
||
| 423 | you don't see the missing rows/columns, the values are there. |
||
| 424 | <end> |
||
| 425 | |||
| 426 | <mode> |
||
| 427 | |||
| 428 | This command influences how the book is used. |
||
| 429 | |||
| 430 | mode normal is the default. |
||
| 431 | |||
| 432 | mode tournament tells crafty to behave differently while in book. |
||
| 433 | Specifically, when it is pondering, it generates all of the opponent |
||
| 434 | moves and looks them up in the opening book. If it finds a book |
||
| 435 | reply, it eliminates that opponent move from the list. It then does |
||
| 436 | a 1/10th normal time search for the opponent, but ONLY considers those |
||
| 437 | moves it did not have a book reply for. It then takes the result of |
||
| 438 | that search and ponders that move, so that hopefully if the opponent |
||
| 439 | plays a move not in our book, we will already be thinking. |
||
| 440 | |||
| 441 | The more useful place, however, is where we play a book move that takes |
||
| 442 | the opponent out of book, and he spends a significant amount of time |
||
| 443 | thinking and plays a pretty obvious move. Since we ponder the best move |
||
| 444 | of his that we don't have a book move for, we have a good chance of |
||
| 445 | pondering the right move and saving time on our clock. |
||
| 446 | <end> |
||
| 447 | |||
| 448 | <mode> |
||
| 449 | null <min> <divisor> |
||
| 450 | |||
| 451 | This command allows you to customize the null-move search parameters. The |
||
| 452 | formula Crafty uses is as follows: |
||
| 453 | |||
| 454 | R = <min> + depth / <divisor> |
||
| 455 | |||
| 456 | The default values are 3 and 10. When remaining depth is < 10, the R value |
||
| 457 | is 3. If remaining depth is > 10 and < 19, R=4, and so forth. Smaller |
||
| 458 | divisor values make R ramp up quicker and the null-move pruning will become |
||
| 459 | more aggressive. Overall depth will increase pretty quickly, but this can |
||
| 460 | also hide certain types of tactics as well, so going too far turns out to |
||
| 461 | be dangerous. |
||
| 462 | <end> |
||
| 463 | |||
| 464 | <personality> |
||
| 465 | personality load|save filename <or> personality n v |
||
| 466 | |||
| 467 | perspath path-to-personality-directory |
||
| 468 | |||
| 469 | Crafty "personality" files (.cpf files) contain information that |
||
| 470 | affects three components of Crafty. |
||
| 471 | |||
| 472 | You can use the "selective" command to adjust the null-move R (min |
||
| 473 | and max) values. The default values are 2 and 3, and reducing them |
||
| 474 | will reduce Crafty's playing strength to some fairly significant |
||
| 475 | degree. |
||
| 476 | |||
| 477 | You can use the "extension" command to adjust the search extension |
||
| 478 | values. Reducing these will "dumb down" the search and make crafty |
||
| 479 | tactically (but not positionally) weaker. They can be set all the |
||
| 480 | way down to 0.00 if you choose. |
||
| 481 | |||
| 482 | You can use the evaluation command to adjust some global evaluation |
||
| 483 | weights (ie turn down total pawn scoring, or king safety, etc.) or |
||
| 484 | you can use this command to adjust individual scoring values, from |
||
| 485 | the value of pieces, to specific scoring terms for each piece such |
||
| 486 | as the value of a doubled pawn or whatever. |
||
| 487 | |||
| 488 | Once you find settings you like, you can use "personality save |
||
| 489 | filename" to save all of the above settings in one file. Later you |
||
| 490 | can use "personality load filename" to restore those settings prior |
||
| 491 | to playing a game. |
||
| 492 | |||
| 493 | One final note is that you can save to the specific file "crafty.cpf" |
||
| 494 | and your settings will become the _default_ each time you start |
||
| 495 | Crafty, until you either remove the file, load another personality, |
||
| 496 | or save a new default personality. |
||
| 497 | |||
| 498 | You can have as many different personality files as you want, and to |
||
| 499 | keep them from getting jumbled up, you can put them in a separate |
||
| 500 | directory and add the "perspath" to your .craftyrc/crafty.rc file to |
||
| 501 | point Crafty to the directory where the personality files belong. |
||
| 502 | |||
| 503 | personality item# value [value ... value] |
||
| 504 | |||
| 505 | The personality command allows you to change specific evaluation |
||
| 506 | or search numbers when you want. The first thing you should do is |
||
| 507 | type "personality list" to show all the possible values. The format |
||
| 508 | looks like this when displayed: |
||
| 509 | |||
| 510 | White(1): personality list |
||
| 511 | |||
| 512 | |||
| 513 | ================================================== |
||
| 514 | = search options = |
||
| 515 | ================================================== |
||
| 516 | 1 check extension 1 |
||
| 517 | 2 null-move reduction 3 |
||
| 518 | 3 null-move adaptive divisor 10 |
||
| 519 | 4 LMR min distance to frontier 1 |
||
| 520 | 5 LMR min reduction 1 |
||
| 521 | 6 LMR max reduction 7 |
||
| 522 | 7 LMR formula depth bias 2.00 |
||
| 523 | 8 LMR formula moves searched bias 1.00 |
||
| 524 | 9 LMR scale factor 2.65 |
||
| 525 | ================================================== |
||
| 526 | = search options (continued) = |
||
| 527 | ================================================== |
||
| 528 | 11 prune depth 6 |
||
| 529 | 12 prune margin [remain_depth] |
||
| 530 | |||
| 531 | ================================================== |
||
| 532 | = raw piece values = |
||
| 533 | ================================================== |
||
| 534 | 21 pawn value -100 (mg) 100 (eg) |
||
| 535 | 22 knight value -325 (mg) 325 (eg) |
||
| 536 | 23 bishop value -325 (mg) 325 (eg) |
||
| 537 | 24 rook value -500 (mg) 500 (eg) |
||
| 538 | 25 queen value -1050 (mg) 1050 (eg) |
||
| 539 | ================================================== |
||
| 540 | = miscellaneous scoring values = |
||
| 541 | ================================================== |
||
| 542 | 31 wtm bonus 5 (mg) 8 (eg) |
||
| 543 | 32 draw score 1 |
||
| 544 | ... etc |
||
| 545 | |||
| 546 | The first number is the personality term ID #. To change the |
||
| 547 | value of a pawn from the default 100 to 50, you would type |
||
| 548 | the following command: |
||
| 549 | |||
| 550 | pers 21 50 50 |
||
| 551 | |||
| 552 | |||
| 553 | And now pawns are worth 1/2 of what they were prior to the |
||
| 554 | command. Note that unless you specifically save the setting |
||
| 555 | with the "personality save" command, once you exit Crafty |
||
| 556 | the pawn value will return to 100 the next time you start it |
||
| 557 | up. You can, of course, put such commands in the .craftyrc/ |
||
| 558 | crafty.rc file, but it is simpler to use the personality |
||
| 559 | command instead (type "help personality" for more information). |
||
| 560 | |||
| 561 | Note that some evaluation terms have a list of numbers as they |
||
| 562 | are indexed by something. When you change one of these terms, |
||
| 563 | you must give _exactly_ the correct number of values, or the |
||
| 564 | command will produce an error without changing anything. |
||
| 565 | |||
| 566 | Some of the values are 8 X 8 matrices of values, where the |
||
| 567 | values correspond to the chess board as viewed with square |
||
| 568 | a1 on the bottom left. You must type the values in in order |
||
| 569 | as they appear on the screen. Crafty will shift things as |
||
| 570 | needed. IE for a piece/square table for knights, the first |
||
| 571 | value displayed is for a8, so the first value you enter must |
||
| 572 | also be for a8. Many of these matrices have black/white |
||
| 573 | counter-parts. You enter the white values, Crafty will |
||
| 574 | mirror those to reflect the _same_ values but from the black |
||
| 575 | side of the board. This will be done automatically. |
||
| 576 | |||
| 577 | Non 8 X 8 matrices are just dumped in order from element zero |
||
| 578 | to N. You enter those the same way. IE the way it prints them |
||
| 579 | out is the way you enter them, reading from top-to-bottom, and |
||
| 580 | left-to-right. |
||
| 581 | |||
| 582 | If you come up with an interesting personality, feel free to make |
||
| 583 | it available to everyone, and if it is particularly attractive, it |
||
| 584 | can become part of the "distributed" crafty personalities once this |
||
| 585 | has been released. |
||
| 586 | <end> |
||
| 587 | |||
| 588 | <settc> |
||
| 589 | settc moves crafty-time opponent-time |
||
| 590 | |||
| 591 | settc is primarily intended to be used in a computer chess tournament |
||
| 592 | where the games are played on a real chess board using a real chess |
||
| 593 | clock, rather than through some automatic interface that manages the |
||
| 594 | time automatically. |
||
| 595 | |||
| 596 | moves is the number of moves left to the next time control from Crafty's |
||
| 597 | perspective. IE if the time control is 60 moves in 120 minutes (a normal |
||
| 598 | time control for the WCCC) and crafty has actually made 25 moves in the |
||
| 599 | current game, then the correct "moves" value would be 35, as there are |
||
| 600 | exactly 35 moves to be made before the next time control is reached. |
||
| 601 | |||
| 602 | crafty-time is the amount of time left on Crafty's clock, expressed in |
||
| 603 | minutes, or in hh:mm format. Crafty will convert this to its internal |
||
| 604 | representation correctly. |
||
| 605 | |||
| 606 | opponent-time is the amount of time left on the opponent's clock, |
||
| 607 | expressed in the same way. |
||
| 608 | |||
| 609 | After entering this command, you should probably type "clock" to be |
||
| 610 | sure things look correct. |
||
| 611 | |||
| 612 | Note that the "operator" command sets a time per move overhead for the |
||
| 613 | operator, and that this affects the actual time used as expected. IE in |
||
| 614 | the above clock setting, assuming the operator has allowed 10 seconds per |
||
| 615 | move, crafty will "hide" 35 * 10 seconds and not use it for searching, which |
||
| 616 | gives the operator time to actually make the moves and press the real clock |
||
| 617 | button. It is CRITICAL that the clock command be used from time to time to |
||
| 618 | keep Crafty's internal clock in sync with the real clock. If you use the |
||
| 619 | operator command, the settc value should match the real chess clock exactly, |
||
| 620 | if you choose to not use the operator time and fudge the chess clock time |
||
| 621 | yourself, that will work as well, but it is more prone to errors. |
||
| 622 | <end> |
||
| 623 | |||
| 624 | <smp> |
||
| 625 | smp commands are used to control the SMP search. |
||
| 626 | |||
| 154 | pmbaty | 627 | smpaffinity <n> <p> is used to enable or disable processor affinity. "-1" |
| 110 | pmbaty | 628 | disables affinity and lets threads run on any available core. If you use an |
| 629 | integer <n> then thread zero will bind itself to cpu <n> and each additional |
||
| 630 | thread will bind to the next higher cpu number. This is useful if you try to |
||
| 631 | run two copies of crafty on the same machine, now you can cause one to bind |
||
| 632 | to the first <n> cores, and the second to the last <n> cores. For the first |
||
| 633 | instance of Crafty, you would use smpaffinity=0, and for the second |
||
| 634 | smpaffinity=8, assuming you are running 8 threads per copy on a 16 cpu machine. |
||
| 635 | If you get this wrong, you can have more than one thread on the same cpu which |
||
| 636 | will significantly impact performance. |
||
| 637 | |||
| 154 | pmbaty | 638 | The second parameter is used to help Crafty identify physical vs logical cores. |
| 639 | On a typical 20 core intel machine, processors 0 - 19 are on physical cores, |
||
| 640 | then 20-39 map back to those same physical cores, but different logical |
||
| 641 | (hyperthreaded) processors. "1" is the correct value for this system. For an |
||
| 642 | IBM Power 8 machine with dual 10-core chips, processors 0 through 7 are on |
||
| 643 | physical core 0, then 8 through 15 are on physical core 1, etc. A value of "8" |
||
| 644 | will map threads to physical cores correctly as each thread is spaced on the |
||
| 645 | current processor core + 8, which is correct. |
||
| 646 | |||
| 110 | pmbaty | 647 | smpmt <n> sets the total number of allowable threads for the search. The |
| 648 | default is one (1) as Crafty does not assume it should use all available |
||
| 649 | resources. For optimal performance this should be set to the number of |
||
| 650 | physical cores your machine has, which does NOT include hyperthreaded cores. |
||
| 651 | |||
| 652 | smpgroup <n> sets the maximum number of threads at any single split point to |
||
| 653 | <n>, with the exception of split points fairly close to the root where ALL |
||
| 654 | threads are allowed to split together ignoring this limit. Note that this is |
||
| 655 | ignored in the first 1/2 of the tree (the nodes closer to the root). There |
||
| 656 | it is actually good to split and get all active threads involved. |
||
| 657 | |||
| 658 | smpmin <n> avoids splitting when remaining depth < n. This is used to balance |
||
| 659 | splitting overhead cost against the speed gain the parallel search produces. |
||
| 660 | The default is currently 5 (which could change with future generations of |
||
| 661 | Intel hardware) but values between 4 and 8 will work. Larger values allow |
||
| 662 | somewhat fewer splits, which reduces overhead, but it also increases the |
||
| 663 | percentage of the time where a thread is waiting on work. |
||
| 664 | |||
| 665 | smpnuma <n> enables (a) or disables (0) NUMA mode. This defaults to zero, |
||
| 666 | which is best for most users. If you have a multiple-socket machine, or one |
||
| 667 | that is NUMA even though it only has one socket, you should enable this. This |
||
| 668 | will cause Crafty to split the hash tables across all NUMA nodes to prevent |
||
| 669 | the formation of "hot spots" that would cause unnecessary conflicts. |
||
| 670 | |||
| 671 | smproot <n> enables (1) or disables (0) splitting the tree at the root. This |
||
| 672 | defaults to 1 which produces the best performance by a signficiant margin. |
||
| 673 | But it can be disabled if you are playing with code changes. |
||
| 674 | |||
| 675 | smpnice <1/0> enables or disables the "nice facility". With smpnice=1, at the |
||
| 676 | end of a search (non-pondering) the extra threads will terminate rather than sit |
||
| 677 | in a busy spin loop burning cpu cycles. smpnice=0 is slightly more efficient |
||
| 678 | but will result in 100% of the machine being used whether the search is running |
||
| 679 | or waiting on input. |
||
| 680 | |||
| 681 | smpnodes <n> sets the number of NUMA nodes on your hardware. This is used to |
||
| 682 | try to split with threads on the same node when practical, to improve memory |
||
| 683 | access time. |
||
| 684 | |||
| 685 | smpgsd sets the minimum depth required to allow a gratuitous split. A |
||
| 686 | gratuitous split is a split done when no threads are idle, and is a sort of |
||
| 687 | preemptive attempt to have work ready for processors as they become idle. If |
||
| 688 | this value is set too small, overhead will climb, if it is set too large, then |
||
| 689 | gratuitous splits will be rare and thread wait time will climb. |
||
| 690 | |||
| 691 | smpgsl sets the maximum number of gratuitous splits allowed per thread. There |
||
| 692 | is little point in having many split points that are not really being used, it |
||
| 693 | adds to overhead without any real benefit. If you are running on 32 cores, |
||
| 694 | then setting this beyond 4 will really be massive overkill since any of the 32 |
||
| 695 | threads will be able to spontaneously split up to N times each, for a total of |
||
| 696 | 32 * N gratuitous splits. That's probably excessive. |
||
| 697 | <end> |
||
| 698 | |||
| 699 | <test> |
||
| 700 | test filename [N] [unsolved_file] |
||
| 701 | |||
| 702 | Test is used to run a suite of test positions in a batch run. filename is |
||
| 703 | the name of the file in crafty test format. [N] is an optional parameter |
||
| 704 | that is used to shorten the test time. If crafty likes the solution move |
||
| 705 | for [N] consecutive iterations, it will stop searching that position and |
||
| 706 | consider it correct. This makes a Win At Chess 60 second run take just a few |
||
| 707 | minutes, for example. |
||
| 708 | |||
| 709 | The "crafty format" requires three lines per position. The first line must |
||
| 710 | be a "title" line and is used to identify each position. The second line is |
||
| 711 | a "setboard" command to set the position. The third line is a line that |
||
| 712 | begins with "solution", and then is followed by one or more solution moves. |
||
| 713 | If a position is correct only if a particular move or moves is *not* played, |
||
| 714 | enter the move followed by a "?", as in Nf3?, which means that this position |
||
| 715 | will be counted as correct only if Nf3 is not played. |
||
| 716 | |||
| 717 | Note that this command may refer to a normal EPD test file as well and |
||
| 718 | Crafty will run that test in the same way, but Crafty will notice it is an |
||
| 719 | EPD test file rather than a "crafty" test file and handle it appropriately. |
||
| 720 | |||
| 721 | A new option to this command is of the form "test filename <margin>" where |
||
| 722 | <margin> is greater than 10 (which means it will not be an early exit counter.) |
||
| 723 | In this case, Crafty takes that value as a score margin. It will read in the |
||
| 724 | FEN/EPD records silently, do a search, and if the absolute value of the final |
||
| 725 | score is less than <margin>, the FEN/EPD is written to a new file, |
||
| 726 | "filename.screened". I use this to create an opening position file for |
||
| 727 | cluster testing where I can create a set of positions using the -DPOSITIONS |
||
| 728 | compile option, and then test the resulting "openings.epd" file that creates |
||
| 729 | to cull those that are too unbalanced so that the same side wins no matter |
||
| 730 | what the skill level. |
||
| 731 | |||
| 732 | The [unsolved_file] parameter is optional. If specified, any position that is |
||
| 733 | not solved is written to this file so that you can extract "hard" positions and |
||
| 734 | use just those for testing later to save time. At one second per move on a |
||
| 735 | slow machine, the WAC test positions (300) will produce maybe 15 unsolved |
||
| 736 | positions. On good hardware, it might miss five or less. At 5 seconds per |
||
| 737 | move, it will usually miss maybe 2-3. At 60 seconds per move, it will |
||
| 738 | generally only miss #230 which appears to have no solution after much computer |
||
| 739 | analysis (the supposed winning move also draws). |
||
| 740 | <end> |
||
| 741 | |||
| 742 | <time> |
||
| 743 | Time controls whether the program uses CPU time or wall-clock time for |
||
| 744 | timing. For tournament play, it is safer to use wall-clock timing, for |
||
| 745 | testing it may be more consistent to use CPU timing if the machine is |
||
| 746 | used for other things concurrently with the tests being run. (Note that |
||
| 747 | this is not recommended when using a multiprocessor machine, CPU time in |
||
| 748 | a parallel search increases at N times the normal time rate where N is the |
||
| 749 | number of processors being used). |
||
| 750 | |||
| 751 | Time is also used to set the basic search timing controls. The general |
||
| 752 | form of the command is as follows: |
||
| 753 | |||
| 754 | time nmoves/ntime/[nmoves/ntime]/[increment] |
||
| 755 | |||
| 756 | nmoves/ntime represents a traditional first time control when nmoves is |
||
| 757 | an integer representing the number of moves and ntime is the total time |
||
| 758 | allowed for these moves. The [optional] nmoves/ntime is a traditional |
||
| 759 | secondary time control. Increment is a feature related to ICS play and |
||
| 760 | emulates the Fischer clock where increment is added to the time left |
||
| 761 | after each move is made. |
||
| 762 | |||
| 763 | As an alternative, nmoves can be "sd" which represents a sudden death |
||
| 764 | time control of the remainder of the game played in ntime. The optional |
||
| 765 | secondary time control can be a sudden-death time control, as in the |
||
| 766 | following example: |
||
| 767 | |||
| 768 | time 60/30/sd/30 |
||
| 769 | |||
| 770 | This sets 60 moves in 30 minutes, then game in 30 additional minutes. |
||
| 771 | An increment can be added if desired. |
||
| 772 | <end> |
||
| 773 | |||
| 774 | <timebook> |
||
| 775 | This command is used to adjust the time crafty uses for the first few |
||
| 776 | moves out of book. The first few non-book moves are often critical, |
||
| 777 | but the usual search time limit will be somewhat short since Crafty |
||
| 778 | wants to average the time left over the moves remaining until the |
||
| 779 | next time control. This command allows the user to influence how the |
||
| 780 | time is allocated on the first few moves out of book. |
||
| 781 | |||
| 782 | timebook <factor> <moves> |
||
| 783 | |||
| 784 | factor is a number expressed as a percentage, and specifies how much |
||
| 785 | extra time (in terms of the normal target time) to use. For example, |
||
| 786 | a value of 100 says use 100% extra time, which essentially doubles |
||
| 787 | the target time limit. A value of 50 says use 50% extra time, or |
||
| 788 | 1.5X the normal target time. This applies to the first move out of |
||
| 789 | book. |
||
| 790 | |||
| 791 | moves indicates the number of moves this extra time will be used. The |
||
| 792 | extra time is uniformly "decayed" over those moves. For example a value |
||
| 793 | of 10 says use the "factor" extra time on the first non-book move, then |
||
| 794 | 9/10 of that extra time on the next move, 8/10 on the next move, until |
||
| 795 | after 10 moves out of book, where this is turned off. |
||
| 796 | |||
| 797 | timebook 100 10 therefore says use 200% of the normal time target for |
||
| 798 | the first move out of book, 190% for the next move out of book, until |
||
| 799 | it drops back to 100% where it will stick for the remainder of the |
||
| 800 | game after the first ten non-book move searches have been completed. |
||
| 801 | <end> |
||
| 802 | |||
| 803 | <tournament> |
||
| 804 | playing in a manually-operated tournament |
||
| 805 | |||
| 806 | 1. Starting Crafty. This is the easiest part of the whole process. |
||
| 807 | All that's needed is to simply type the command "crafty". |
||
| 808 | |||
| 809 | 2. display. This command displays the chess board using the standard |
||
| 810 | chess server style#1 board display. |
||
| 811 | |||
| 812 | This is most often used to confirm that the board has been set to the |
||
| 813 | proper position in the event that you can't continue an old game and |
||
| 814 | have to set up the position from scratch (explained later). Note that |
||
| 815 | white is always at the bottom, regardless of whether Crafty is playing |
||
| 816 | black or white. |
||
| 817 | |||
| 818 | 3. read. This command is used to read in a list of moves and make them |
||
| 819 | on the game board prior to using crafty to play that game. There are |
||
| 820 | two ways this can be used: (a) read. This will prompt you for a |
||
| 821 | white move, a black move, over and over until you type "exit" to terminate |
||
| 822 | read mode. The side to move will be set according to the number of moves |
||
| 823 | entered, so that the next move will be for the correct side. (b) read file. |
||
| 824 | This command reads, but the input comes from "file" rather than from the |
||
| 825 | keyboard. Note that superfluous text is ignored, as is line numbers, times, |
||
| 826 | etc. This will read in a PGN game and cull everything but the moves. |
||
| 827 | |||
| 828 | 4. setboard. This command is used to set up a specific board position |
||
| 829 | when it's impossible to restart a game using the "crafty c" command, and |
||
| 830 | too many moves have been made, making the read command an unattractive |
||
| 831 | alternative. This command parses a FEN-like position description (a |
||
| 832 | Forsythe-like notation) and sets the current board to that position. |
||
| 833 | |||
| 834 | The notation uses a string of alpha characters to represent the chess |
||
| 835 | position. In this notation, uppercase K Q R B N P represents a white |
||
| 836 | piece, lowercase k q r b n p represents a black piece. for empty |
||
| 837 | squares, you can use numbers 1-8 to indicate consecutive empty squares. |
||
| 838 | A "/" must terminate each rank after defining at most 8 square on that |
||
| 839 | rank, and the ranks are entered in descending order 8..1. In this |
||
| 840 | notation, then, the first square you enter is a8, then b8, .., h8, |
||
| 841 | followed by a "/", then back to a7 and repeating. After all 8 ranks |
||
| 842 | are entered, you need to indicate whether or not one side can castle |
||
| 843 | kingside or queenside by inserting at least one space character, followed |
||
| 844 | by a K (white can castle kingside) Q (white can castle queenside) k (black |
||
| 845 | can castle kingside) or Q (black can castle queenside). After this, add |
||
| 846 | one more space, followed by the square of a pawn that just moved two ranks |
||
| 847 | and is subject to an en passant capture. Note that if there is no |
||
| 848 | en passant capture possible, you do not enter this field. |
||
| 849 | |||
| 850 | For the above board position (display command), here's the setboard |
||
| 851 | command to set that position up: |
||
| 852 | |||
| 853 | setboard r2q1knr/pp2bppp/4b3/1BPp4/6PP/2N1P3/PP3P2/2RQK1NR/ K |
||
| 854 | |||
| 855 | Note that after entering the last piece on a rank, a number for the |
||
| 856 | remaining empty squares is *not* needed, so this could be shortened |
||
| 857 | to: |
||
| 858 | |||
| 859 | setboard r2q1knr/pp2bppp/4b/1BPp/6PP/2N1P/PP3P/2RQK1NR/ K |
||
| 860 | |||
| 861 | One unfortunate effect of this command is that you have just lost the |
||
| 862 | ability to detect repetitions of prior positions in the game, which can |
||
| 863 | be a critical issue. It is _always_ better to use the read command to |
||
| 864 | re-enter the moves if the hardware crashes. If you accidentally type |
||
| 865 | ^C and terminate Crafty, you can type "crafty c" and it will continue |
||
| 866 | the last game, although you will need to set the time control information, |
||
| 867 | and anything else that is not in the .craftyrc file. |
||
| 868 | |||
| 869 | 5. reset <n>. This command is used to back the game up if a different |
||
| 870 | move is to be tried, or if an incorrect move was entered by mistake. It |
||
| 871 | depends on the current side to move, and the command "reset 13" will back |
||
| 872 | the game up to move 13, where the current side on move is still on move, |
||
| 873 | and Crafty will be positioned to read in move 13 for that side. Note |
||
| 874 | that this affects the game, but not the clock or time or level, so that if |
||
| 875 | you back up more than a move or two, you also need to adjust the clock. |
||
| 876 | |||
| 877 | If you want to first change the side to move, use the "white" or "black" |
||
| 878 | command to set the side to move, then use the reset command to back up |
||
| 879 | to the move for that side. |
||
| 880 | |||
| 881 | 6. time. This command is used to set the time control. There are |
||
| 882 | several ways to use it, depending on the type of time control desired. |
||
| 883 | (a) time sd/n sets the game to sudden-death in n minutes. such as |
||
| 884 | game/10, game/30. time sd/30 would set game in 30 time control. |
||
| 885 | (b) time moves/time smoves/stime sets the game to "moves" in "time" |
||
| 886 | minutes, then "smoves" in "stime" minutes. A common setting is |
||
| 887 | time 40/120/20/60 for 40 moves in 2 hours, then 20 moves in one hour. |
||
| 888 | (c) time moves/time/sd/sdtime sets a standard first time control, |
||
| 889 | followed by a sudden death time control. For example time 60/60/sd/30 |
||
| 890 | is 60 moves in 60 minutes followed by game in 30 minutes. (d) for any |
||
| 891 | of these, an optional 5th parameter can be added, which is the famous |
||
| 892 | "Fischer clock" increment that is added to each players time remaining |
||
| 893 | after he makes a move. The increment is given in seconds rather than |
||
| 894 | minutes. Note that the default should be right unless the tournament |
||
| 895 | modifies the T/C after the tournament starts for some reason. |
||
| 896 | |||
| 897 | 7. settc. This command is used to correct time-control info after a |
||
| 898 | restart. it will prompt you for how much time is left on both Crafty's |
||
| 899 | and the opponent's clock, and for how many more moves until crafty makes |
||
| 900 | the next time control. Again, usually not needed, but there for serious |
||
| 901 | circumstances. After restarting, type "clock" to display this info and |
||
| 902 | if it's wrong in any way, this settc command is the quickest way to fix |
||
| 903 | it up. |
||
| 904 | |||
| 905 | 8. clock. This command is used to adjust the internal clock time as it |
||
| 906 | drifts away from the real chess clock as a game progresses. The format |
||
| 907 | is simply "clock mins" to adjust Crafty's clock. Or "clock cmins omins" |
||
| 908 | to adjust both Crafty's time and Crafty's internal time that the opponent |
||
| 909 | has left. Since the current version doesn't really need the opponent's |
||
| 910 | clock time, it can be ignored with no side-effects. |
||
| 911 | |||
| 912 | Common problems and how to solve them: |
||
| 913 | |||
| 914 | 1. Is crafty searching or pondering? I was not watching the screen, |
||
| 915 | and the window size is small enough that all I see is analysis scrolling |
||
| 916 | up the screen. This is easy. Look at the bottom line on the screen, and |
||
| 917 | you will see a line that keeps changing, showing the depth, time used so |
||
| 918 | far, how many moves have been searched and the PV. Look at the third |
||
| 919 | column what shows something like 12/30, which says that at the current |
||
| 920 | depth crafty has already searched 12 of the 30 legal moves at the root. |
||
| 921 | You will notice that there is an extra character after the 30, either a |
||
| 922 | "*" or "?". If an "*" is showing, Crafty is thinking about its move. If |
||
| 923 | a "?" is showing, crafty is pondering and thinks it is the opponent's move. |
||
| 924 | |||
| 925 | If it shows a "?" but you know it is Crafty's move, you simply missed it. |
||
| 926 | Scroll back up using whatever scroll mechanism your text window uses, to |
||
| 927 | find the move Crafty made. Hopefully this won't happen often, but on the |
||
| 928 | occasional "emergency" men's room break, anything can happen. Just remember |
||
| 929 | that "?" means I am pondering and it is my opponent's move, "*" means I |
||
| 930 | am searching and it is my move. |
||
| 931 | |||
| 932 | 2. I entered the wrong move, how do I fix this? You are playing in a |
||
| 933 | game and at move 37, you enter Rfe1 rather than Rae1. To correct this, |
||
| 934 | you have to do a couple of things. First, Crafty is now searching, and |
||
| 935 | if you try to reset the position, it won't accept this command. To stop |
||
| 936 | the search, type ? (followed by a <RETURN> of course) to tell Crafty to |
||
| 937 | "move now". Once it displays the move it would play in response to the |
||
| 938 | incorrect move, it will start its "ponder search" but now the reset |
||
| 939 | command will work. Simply type "r 37" to back up to move 37, then type |
||
| 940 | Rae1 and Crafty will continue as though nothing happened. Pay attention |
||
| 941 | to the clock time after it moves and adjust if necessary (if you lost any |
||
| 942 | time while correcting an incorrect move.) |
||
| 943 | |||
| 944 | Note: You can also use the "remove" command, which will unmake the last |
||
| 945 | move by each side. Crafty has to be pondering or waiting on input for |
||
| 946 | this to work, just like the reset command, so if *you* typed the wrong |
||
| 947 | move, type "?" to make it move, then "remove" which backs up one move |
||
| 948 | for each side, followed by the opponent's move. If the opponent makes |
||
| 949 | the wrong move on the board, and you enter it, do this same thing. Note, |
||
| 950 | if the opponent screws up, you should notice whether or not crafty had |
||
| 951 | predicted the right move. If it had, you should probably call the TD |
||
| 952 | over, back the game up one move with the remove command, then use the |
||
| 953 | "ponder xxx" command to tell crafty to ponder "xxx" (the move it was |
||
| 954 | pondering before the wrong move was made by the opponent) and then it |
||
| 955 | should be allowed to "sit" until the same amount of time elapses before |
||
| 956 | you enter the correct move. The idea is that if the opponent screws up, |
||
| 957 | it should not wipe out any searching crafty did while waiting. |
||
| 958 | |||
| 959 | 3. The machine dies (power failure maybe). How do I recover? First, you |
||
| 960 | can stop the clock for such failures, so do that *first*. Then, reboot the |
||
| 961 | machine and start crafty by typing "crafty c". Next, type the "history" |
||
| 962 | command and carefully check the last move it displays against the score |
||
| 963 | sheet you are maintaining by hand. If they are the same, you are ready to |
||
| 964 | enter a move and continue. If there are moves missing, use the "reada" |
||
| 965 | command to re-enter these moves and append them to the moves already |
||
| 966 | present. |
||
| 967 | |||
| 968 | If the continue option won't work due to a corrupted history file, you have |
||
| 969 | two choices. The best choice is to restart crafty without the "c" option, |
||
| 970 | and then use the "read" command and enter the moves by hand so that if you |
||
| 971 | screw up later, the "reset" command will work correctly to let you back up. |
||
| 972 | If you are 100 moves into a game, this might not be practical. In this |
||
| 973 | case, use the "setboard" command to enter the position. Be careful to |
||
| 974 | check the position after entry using the display command, and be careful |
||
| 975 | to not enter the wrong move since you can't use the "reset" command to |
||
| 976 | back up after using the setboard command. |
||
| 977 | |||
| 978 | After either of the above problems, you need to set the proper time |
||
| 979 | control (if this is in your .craftyrc this is not needed) and then you |
||
| 980 | need to adjust the clock to show the proper amount of time remaining. |
||
| 981 | The command to display the clock is "clock". To adjust the clock |
||
| 982 | use the command form "clock c-time o-time" where c-time is Crafty's |
||
| 983 | time remaining, and o-time is the opponent's time remaining. These |
||
| 984 | can be entered as simply the number of minutes left, or in the hh:mm |
||
| 985 | format if preferred. "clock 60 50" sets Crafty's clock to 60 minutes |
||
| 986 | left, opponent's clock to 50 minutes left. "clock 1:15 45" sets |
||
| 987 | Crafty's clock to 75 minutes remaining, opponent's clock to 45. |
||
| 988 | Crafty pays attention to how much time the opponent has used, |
||
| 989 | so be sure and get them both correct. You should subtract 5 minutes |
||
| 990 | from the actual time left on the clock to give yourself a cushion. Of |
||
| 991 | course, you should *never* enter "0" time left, or even worse, a negative |
||
| 992 | number, because Crafty will go south for the Winter if you do. :) |
||
| 993 | |||
| 994 | Note that there is a "settc" command that simplifies getting the time |
||
| 995 | control right after a restart... It's explained above. |
||
| 996 | <end> |