Releases
0.e
Basic program setup:
Rewrote Exacto from scratch using the bitboard game representation
"Magic bitboard" move generation for sliding pieces
I generated my own magics, but quite poorly: 14 bits for rooks, 11 bits for bishops
Legal (as opposed to pseudolegal + check detection) move generation
Search algorithms, pruning and heuristics:
The main search algorithms are PVS/alpha-beta with alpha-beta quiescence searches at the leaves
Selective reductions of the search tree:
Adaptive null move forward pruning
Late move reductions
Pruning via transposition table
Futility pruning (frontier and pre-frontier nodes)
Razoring (pre-pre-frontier nodes)
Delta pruning (in the quiescence search)
Selective extensions of the search tree:
Check extensions
Recapture extensions
Passed pawn extensions
Move ordering:
Hash table suggestions
Internal iterative deepening
Static exchange evaluation and MVV/LVA
Piece value tables for positional gain estimation
Killer move heuristic
All moves are insertion sorted (no lazy move generation, yet)
Positional evaluation (tapered, lazy):
Dedicated hash table for pawn structure evaluation. Knowledge of:
Pawn chains
Isolated pawns
Backward pawns
Doubled pawns
Passed pawns
Elementary detection of good/bad bishops, and preference for bishop pairs
Bishop/knight differentiation.
Rook placement:
Preference for open files
Preference for being on open files aiming at weak squares
Preference for 7th rank
Preference to develop, castle, etc.
King safety:
Attackers/defenders detection
Enemy attacks on squares near king (preprocessor option, off by default)
"Two move" attacks (preprocessor option, off by default)
Pawn fortress / castling destination
File strength around king
Attacker to defender ratio (preprocessor option, off by default)
Pieces desire to be "aimed at the enemy king"
Undefended minor piece penalty
Gameplay:
Opening book (hand made, overview)
Dynamic time management (conservative, but much less conservative than 0.d)
Iterative deepening
You can’t perform that action at this time.