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.
Lim Unlimited / 24 Jul 1996