A UCI chess engine.
This is a command-line chess playing program, designed to be used with a chess GUI.
We are currently using a handcrafted evaluation, and our search function is still in its early days. The engine's ELO is approximately 1700-1800.
- Board representation and move generation is in
libchess/ - Evaluation and search is in
libbenbot/ ben-bot/is the actual engine executable
See each subdirectory's readme for details.
Building or using ben-bot, libbenbot or libchess requires CMake and C++23.
All dependencies are fetched via FetchContent, so everything should "just work" out of the box.
CMake presets are provided for IDE integration, but are not mandatory. Using the presets will enable some default warnings (defined in config/Warnings.cmake).
Notes on building:
- Using
clangrequires-stdlib=libc++, without this flagclangcan't findstd::expected(this is added automatically by theclangconfigure preset) - If using
gcc, at least version 14 is required
Our automated CI & releases include the following builds:
| OS | Compiler | Notes |
|---|---|---|
| Ubuntu | Clang | Also built with ASAN & UBSAN |
| Ubuntu | GCC | Collects test coverage information |
| Windows | Clang | |
| Windows | MSVC | |
| MacOS | Clang | Builds universal binary |
BENBOT_DOCS: controls whether docs are built (defaults to off unless this is the top-level project)BENBOT_TESTS: controls whether tests are built (defaults to off unless this is the top-level project)
Special thanks to the following open source chess projects, which have provided guidance and inspiration (in no particular order):