Chess engine with terminal user interface, UCI support and NNUE evaluation function.
In 1999, I came across the source code of a chess program (now available at https://www.ioccc.org/years.html#1992_vern) and became interested in how a computer could play chess. More than 25 years have passed since then, and many new things have appeared, including NNUE.
((768 input x 512 hidden) x 2 perspectives) x 1 output
Input layer: 2 colors x 6 pieces x 64 squares = 768
Hidden layer (ReLU): 512 hidden x 2 perspectives = 1024
Output layer: 1
Net file size: 4 bytes (magic) + 8 bytes (hash) + ((768 x 512) input weights + 512 input biases + (512 x 2) output weights + 1 output bias) x 4 bytes (float) = 1579024 bytes
Quantization precision (input): 64
Quantization precision (output): 512
CCRL Blitz (23.08.2025)
| Version | Net | ELO |
|---|---|---|
| 3.0 NNUE2 | Net 001, Epoch 040, Hash 0x71eb63511cb1 | 3251 |
| 3.0.15 NNUE2 | Net 070, Epoch 120, Hash 0x755b16a94877 | 3265 |
| 3.0.17 NNUE2 | Net 110, Epoch 022, Hash 0x6e5001eb7720 | 3266 |
| 4.0.0 NNUE2 | Net 159, Epoch 077, Hash 0x3ba7af1fe396 | 3295 |
| 4.1.0 NNUE2 | Net 183, Epoch 111, Hash 0x7342fb032855 | 3342 |
CCRL 40/15 (22.08.2025)
| Version | Net | ELO |
|---|---|---|
| 3.0 NNUE2 | Net 001, Epoch 040, Hash 0x71eb63511cb1 | 3214 |
| 3.0.12 NNUE2 | Net 001, Epoch 040, Hash 0x71eb63511cb1 | 3211 |
| 3.0.15 NNUE2 | Net 070, Epoch 120, Hash 0x755b16a94877 | 3225 |
| 3.0.15 NNUE2 (4 CPU) | Net 070, Epoch 120, Hash 0x755b16a94877 | 3305 |
| 3.0.17 NNUE2 | Net 110, Epoch 022, Hash 0x6e5001eb7720 | 3209 |
| 3.0.18 NNUE2 | Net 122, Epoch 081, Hash 0x7cf57d4dc994 | 3230 |
| 3.0.19 NNUE2 | Net 122, Epoch 081, Hash 0x7cf57d4dc994 | 3263 |
| 4.0.1 NNUE2 | Net 159, Epoch 077, Hash 0x3ba7af1fe396 | 3238 |
| 4.0.2 NNUE2 | Net 159, Epoch 077, Hash 0x3ba7af1fe396 | 3256 |
| 4.1.0 NNUE2 | Net 183, Epoch 111, Hash 0x7342fb032855 | 3293 |
- https://www.ioccc.org/years.html#1992_vern
- http://www.tckerrigan.com/Chess/TSCP/
- https://github.com/vancezuo/parallel-chess
- https://github.com/fogleman/MisterQueen
- https://github.com/kz04px/Baislicka
- https://github.com/lucasart/Demolito
- https://github.com/mAarnos/Hakkapeliitta
- https://github.com/milostatarevic/xiphos
- https://github.com/ed-apostol/InvictusChess
- https://github.com/official-stockfish/Stockfish
- https://github.com/nodchip/Stockfish
- https://github.com/syzygy1/Cfish
- https://github.com/AndyGrant/Ethereal
- https://github.com/glinscott/Garbochess-JS
- https://github.com/jhonnold/berserk
- https://github.com/amanjpro/zahak
- https://github.com/Aryan1508/Bit-Genie
- https://www.chessprogramming.org/Main_Page
- http://wbec-ridderkerk.nl/html/UCIProtocol.html
- https://en.wikipedia.org/wiki/Algebraic_notation_(chess)
- https://en.wikipedia.org/wiki/Linear_congruential_generator
- https://en.wikipedia.org/wiki/Kahan_summation_algorithm
- https://en.wikipedia.org/wiki/Stochastic_gradient_descent
- https://ruder.io/optimizing-gradient-descent/
- https://phoxis.org/2013/05/04/generating-random-numbers-from-normal-distribution-in-c/
- https://manualzz.com/doc/6937632/toga-log-user-manual
- https://arxiv.org/abs/1412.6980
- https://arxiv.org/abs/1509.01549
- https://arxiv.org/abs/1609.04747
- https://arxiv.org/abs/1704.08863
- https://arxiv.org/abs/1711.05101
- https://arxiv.org/abs/1712.01815
- https://arxiv.org/abs/1904.09237




