A basic chess bot written as a fun / learning / hobby project in C++. Still in development, expect many bugs!
Note
This bot does not have time control support; it will run indefinitely. To play it, you should manually set a max search depth.
Current perft score (i5-11400H @ 4.5GHz):
- starting position (depth 7): 3195901860 nodes, 4250 ms, 751976908 nps
- kiwipete position (depth 7): 374190009323 nodes, 274811 ms, 1361626751 nps
Requires g++ compiler. Some parts (i.e memory) may only work on linux.
git clone https://github.com/thegogy/atom
cd atom
make release
This will automatically download the NNUE files and compile the bot.
This is UCI compatible. You can use any UCI-compatible interface to play it, such as en-croissant or cutechess.
This bot uses weather-factory for tuning. In order to tune the bot, use the following steps:
# Install weather factory
git clone https://github.com/jnlt3/weather-factory tuning
# Make tuner dir
mkdir tuning/tuner
You should also install fastchess and place the binary in the tuner
dir.
# Build engine for tuning
make clean
make tune
cp atom tuning/tuner/engine
# Run tuning
cd tuning
# Put tunables in config.json
./tuner/engine tunables > config.json
# Run tuning
python main.py
Move generation takes a lot of inspiration from VincentBab's Belette, as well as Daniel inführ's Gigantua, as well as many techniques from the Chess Programming Wiki.
perft_massive from Elcabesa's engine, Vajolet.
NNUE from Stockfish. For more information, see the NNUE readme in this repo.
[ ] Tune parameters [ ] Time management [ ] EGTB pruning [ ] Testing for search