- Computer move generation
- minimax (negamax), alpha-beta pruning & iterative deepening
- Multithreaded search (Lazy SMP) on platforms supporting C11 threads
- Move ordering based on captures and a stored principal variation
- Polyglot BIN format opening book support
- Transposition table optimisations
- Chess GUI implemented using Raylib and Raygui
- Local player-vs-player and player-vs-computer modes
- Game loading and saving in FEN (Forsyth–Edwards Notation)
- All chess rules are supported except the 50 move rule, repetition and promotion to non-queen pieces
- Supports Linux, Windows, macOS, FreeBSD, probably anything Raylib supports
Binaries are available for Linux and Windows.
Required dependencies to build are CMake, a C11 compiler and the build dependencies of Raylib.
Build steps on Linux:
git clone https://github.com/camc/chess
cd chess
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release
# Run: ./build/chess