LimUnltd . . . Top Up . . . First Prev . . . Help

Crafty 1.x Version History

1.18
added the famous Cray Blitz "square of the king" passed pawn evaluation routine. this will evaluate positions where one side has passed pawns and the other side has no pieces, to see if the pawn can outrun the defending king and promote. note that this is rediculously fast because it only requires one And() to declare that a pawn can't be caught!

1.17
added "development" evaluation routine to encourage development and castling before starting on any tactical "sorties." also repaired many "bugs" in evaluation routines.

1.16
significant adjustments to evaluation weights to bring positional scores down to below a pawn for "normal" positions. some small "tweaks" to king safety as well to keep the king safer.

1.15
added edit so that positions can be altered (and so ICS games can be resumed after they are adjourned). also added a "force" command to force the program to play a different move than the search selected. search timing allocation slightly altered to improve ICS performance.

1.14
added the piece/square tables to the program to move static scoring to the root of the tree since it never changes (things like centralization of pieces, etc.) also some minor tuning of numbers to bring positional score "swings" down some.

1.13
added time-control logic to the program. it now monitors how much time both it and its opponent uses when thinking about a move to make. when pondering, it only times itself from the point that a move is actually entered.

1.12
added ICS (Internet Chess Server) support for X-Board support so that Crafty can play on ICS in an automated manner. added new commands to be compatible with X-Board. Crafty also has a new command-line interface that allows options to be entered on the command-line directly, ie: "crafty alarm=off verbose=2" will start the program, set the move alarm off, and set verbose to 2. this allows an "alias" to easily customize the program.

1.11
additional evaluation knowledge plus log_file so that program saves a record of the game statistics for later analysis. added the "annotate" command to make the program analyze a game or part of a game for testing/debugging.

1.10
added king safety + hashing (as done in the old Cray Blitz). nothing novel other than the use of bit-masks to speed up some of the tests.

1.9
added an opening book with flags to control which moves are selected for play. the book maintenance code is stubbed directly into the program, so that no additional executables are needed.

1.8
added pondering for both PC and UNIX-based machines. also other improvements include the old Cray Blitz algorithm that takes the P.V. returned by the tree search, and "extends" it by looking up positions in the transposition table, which improves move ordering significantly. repetitions are now handled correctly.

1.7
replaced the old "killer" move ordering heuristic with the newer "history" ordering heuristic. this version uses the 12-bit key formed by <from><to> to index into the history table.

1.6
piece scoring added, although it is not yet complete. also, the search now uses the familiar zero-width window search for all but the first move at the root, in order to reduce the size of the tree to a nearly optimal size. this means that a move that is only one point better than the first move will "fail high" and have to be re-searched a second time to get the true value. if the new best move is significantly better, it may have to be searched a third time to increase the window enough to return the score.

1.5
pawn scoring added. this required three additions to the code: (1) InitializePawnMasks() which produces the necessary masks to let us efficiently detect isolated, backward, passed, etc. pawns; (2) a pawn hash table to store recently computed pawn scores so it won't be too expensive to do complex analysis; (3) Evaluate() now evaluates pawns if the current pawn position is not in the pawn hash table.

1.4
modified the transposition table to use three tables, one for 64 bits of white entry, one for 64 bits of black entry, and one with the remaining 32 bits of white and black entry combined into one 64 bit word. eliminated the "bit fields" since they seemed to be erratic on most compilers and made portability nearly impossible.

1.3
added the transposition table support. this also includes the code in Iterate() necessary to propagate the principal variation from one iteration to the next to improve move ordering.

1.2
added the classic null-move search. the program searches the sub-tree below the null move (typically) one play shallower than

1.1
added the minimal window search. at each ply in the tree, the first branch is searched with the normal alpha/beta window, while remaining nodes are searched with value/value+1 which was returned from searching the first branch. If such a search returns the upper bound, this position is once again searched with the normal window.

1.0
first version of the bit-board program to play a legitimate game even though significant features are missing: transposition table, sophisticated scoring, etc.

LimUnltd . . . Top Up . . . First Prev . . . Help

Lim Unlimited / 24 Jul 1996