Zugblitz is a UCI-compatible chess engine written in C (because it's simple enough to fit in my brain).
I started this project after watching Rey Enigma’s video about the match between Deep Blue and Garry Kasparov. Even though I barely understood what was happening due to my limited chess knowledge at the time, I became curious about how modern chess engines like Stockfish work, and how it’s possible to build something that can outperform a human at such an intellectually demanding game.
Along the way I learned a lot, and after countless hours debugging perft, I can confidently say that I no longer miss en passant captures.
Requirements:
- Make
- C11-compatible compiler (clang is hardcoded in the makefile)
make CC=gcc MODE=releaseThis will build a release-optimized binary for your specific platform.
Warning
debug mode doesn't work with MinGW due to sanitizers.
- Full move generation: en passant, castling, promotions
- Search algorithms: Alpha-Beta, PVS, quiescence search, null-move pruning
- Move ordering heuristics: killer moves, history heuristics
- Evaluation: incremental midgame/endgame evaluation with PSQTs tuned via Texel’s method
- Optimizations: transposition tables, Zobrist hashing, LTO for release builds
This project is licensed under the MIT License. See the LICENSE file for details.