LimUnltd . . . Top Up . . . First Prev Next Last . . . Help

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.

LimUnltd . . . Top Up . . . First Prev Next Last . . . Help

Lim Unlimited / 24 Jul 1996