A UCI chess engine written in C++11. Drofa uses AB-search and combines hand-crafted evaluation (HCE) with supplementary NN, that uses King and Pawn (KPNN) positions as inputs (264 -> 16 -> 2).
This approach resulted in an engine of moderate strength.
Drofa started as fork of the Shallow Blue chess engine. My initial intention was to take weak, but stable and working chess engine and try to improve it, learning c++ along the way.
During my Drofa experiments huge chunk of knowlenge were received from:
- VICE chess engine and tutorials.
- Chessprogramming WIKI great place for all chessprogramming-related knowledge.
- Weiss chess engine, with clean and understandable implementations of complex features. Drofa use Weiss 1.0 LMP base reduction formulas. Althouth Adagrad tuning implementation is not copy-pasted from Weiss, Drofa implementation closesy follows Weiss logic and can be considered a c++ rewrite of it.
- Several open source engines, mostly Ethereal and Stockfish
Special thanks to:
- Terje Kirstihagen (Weiss author)
- Andrew Grant. AdaGrad paper and Ethereal chess engine are great sources of knowledge; Ethereal tuning dataset was a great help in tuning. As well as allowing me on main OpenBench instance
- Kim Kahre, Finn Eggers and Eugenio Bruno (Koivisto team) for allowing Drofa on Koi OpenBench instance and motivating me to work on the engine
- Jay Honnold (Berserk author) for helping me with NN stuff
- OpenBench community for helping me with motivation, in finding bugs, teaching me (even if unknowingly) good programming practices and interesting discussions
Drofa 1.0.0 2088
Drofa 1.3.1 2424
Drofa 2.0.0 2488
Drofa 2.0.0 2488
Drofa 3.0.0 2922
Drofa 3.1.0 3009
Drofa 3.2.0 3101
Drofa 3.3.0 3188
Drofa 4.0.0 ~3250 - etimated based on 3.3.22 results
Since version 3.3.23 Drofa supports FRC and DFRC, with a CCRL elo of 3244
With Drofa 4.0.0 many features was added on top of the Shallow Blue, adding up to more than 1000 elo.
Almost-full changelog with SPRT results and ELO estimations for most of the features can be found in Changelogs
folder.
Drofa 3.0.0 supports following UCI commands:
- BookPath
- OwnBook
- Threads (1 to 172),
- Hash (16 to 65536)
These options can be set from your chess GUI or the UCI interface as follows:
setoption name OwnBook value true
setoption name BookPath value /path/to/book.bin
During developement, many concepts found in GPL-3 engines were used. Thus, as of 4.0.0, Drofa also will be licensed as GPL-3.
2017 - 2019 © Rhys Rustad-Elliott (original Shallow Blue creator)
2020 - 2023 © Litov Alexander