Crafty 3.x Version History
- 3.8
- hashing strategy modified. Crafty now stores search value or bound,
*and* positional evaluation in the transposition table. this avoids about
10-15% of the "long" evaluations during the middlegame, and avoids >75%
of them in endgames.
- 3.7
- endgame strategy added. two specifics: KBN vs K has a piece/sq table
that will drive the losing king to the correct corner. for positions with no
pawns, scoring is altered to drive the losing king to the edge and corner
for mating purposes.
- 3.6
- search extensions cleaned up to avoid excessive extensions which
produced some wild variations, but which was also slowing things down
excessively.
- 3.5
- 50-move rule implemented. a count of moves since the last pawn move or
capture is kept as part of the position[] structure. it is updated by
MakeMove(). when this number reaches 100 (which in plies is 50 moves)
RepetitionCheck() will return the draw score immediately, just as though the
position was a repetition draw.
- 3.4
- "threat extensions" added. simply, this is a null-move search used to
determine if a move is good only because it is a horizon effect type move.
we do a null move search after a move fails high anywhere in the tree. the
window is normally lowered by 1.5 pawns, the idea being that if the
fail-high move happens in a position that fails "really low" with a null
move, then this move might be a horizon move. to test this, re-search this
move with the depth increased by one.
- 3.3
- additional king-safety work. Crafty now uses the king-safety evaluation
routines to compare king safety for both sides. if one side is "in distress"
pieces are attracted to that king in "big hurry" to either attack or
defend.
- 3.2
- null-move restored to depth-1. depth-2 proved unsafe as Crafty was
overlooking tactical moves, particularly against itself, which lost several
"won" games.
- 3.1
- significantly modified king safety again, to better detect and react to
king-side attacks. Crafty now uses the recursive null-move search to depth-2
instead of depth-1, which results in slightly improved speed.
- 3.0
- the 3.* series of versions will primarily be performance enhancements.
the first version (3.0) has a highly modified version of MakeMove() that
tries to do no unnecessary work. it is about 25% faster than old version of
MakeMove() which makes Crafty roughly 10% faster. also calls to Mask() have
been replaced by constants (which are replaced by calls to Mask() on the
Crays for speed) to eliminate function calls.
Lim Unlimited / 24 Jul 1996