(Not Deep Blue)
A UCI Chess engine written in C++11.
Features:
- Bitboard board representation and move generation
- Zobrist hashing / Transposition Table
- Piece square tables for evaluation
- Iterative deepening Minimax Search with Alpha-Beta Pruning and Move Ordering
- Quiescence search with MVV/LVA move ordering
make
You can build with debugging symbols and no optimizations using:
make debug
If you have Mingw-w64 installed, you can cross compile for Windows on Linux with:
./build_windows.sh
Catch unit tests are located in the test
directory.
To build and run the unit tests, use:
make test
Shallow Blue's code is extensively documented with Doxygen. To generate HTML documentation use:
doxygen
These commands can be useful for debugging.
perft <depth>
- Prints the perft value for each move on the current board to the specified depth
printboard
- Pretty prints the current state of the game board
printmoves
- Prints all legal moves for the currently active player
- General
- Avoid draws by repetition / 50 move rule
- Opening book support
- Magic bitboards
- Unmake move function
- Opening book support
- Evaluation
- King safety
- Pawn structure
- Search
- Switch search algorithm to Principal Variation Search
- Use a capture-only move generator for quiescence search
- UCI
- Support more of the UCI protocol
- Support timers (wtime / btime)
stop
commandgo infinite
- Support more of the UCI protocol
MIT © Rhys Rustad-Elliott