Timmoth / Sapling

A strong dotnet UCI Chess engine - My leaf nodes are growing
https://iblunder.com
Apache License 2.0
39 stars 2 forks source link
chess chess-engine csharp dotnet nnue uci

A strong dotnet UCI Chess engine - My leaf nodes are growing

Play it here -> https://iblunder.com/

Or challenge it on Lichess -> https://lichess.org/@/sapling-bot

Rating pool Version ELO
CCRL 40/15 1.1.2 3378
Lichess Bullet 1.2.2 2890
Lichess Blitz 1.2.2 2786
Lichess Rapid 1.2.2 2797
Lichess Chess960 1.2.2 2209
Tournament Version Result
CCRL 112th Amateur Series Division 5 1.1.8 drawed 3rd place
Blitz Tournament 3'+2" (48th Edition) 1.2.0 Division 4 6th place
FRC Tournament (35th Edition) 1.2.2 TBD

Releases

You can browse all windows, linux or mac releases here

Latest Release v1.2.2 13/10/2024

Requirements

Running from source

cd ./scripts

// Windows
./build_windows_avx256.bat
./build_windows_avx512.bat

// Linux
./build_linux_avx256.sh
./build_linux_avx512.sh

// Osx
./build_osx_avx256.sh
./build_osx_avx512.sh

Commands

Features

General - Bitboards - NNUE (768 -> 1024)x2 -> 8 - Horizontal mirroring - Output buckets x8 - Transposition table - Lazy SMP - Pondering
Search - Negamax - Quiescence - Alpha-Beta pruning - Iterative Deepening - Asperation windows - Null move pruning - Late Move Pruning - Futility Pruning - Razoring - Principal Variation Search - Check extensions - Internal Iterative Reduction - Late Move Reductions - Cuckoo filter repetition detection
Move generation / ordering - Pseudo-legal movegen - Static exchange evaluation - Killer move heuristic - Counter move heuristic - History heuristic with malus - Incremental sorting - Magic bitboards - PEXT bitboards

SPRT

After any changes to the engine a SPRT test must be ran to ensure that the changes have a positive effect.

There is a script sprt.bat which contains the command to run a cutechess-cli SPRT test. Ensure that you've configured CuteChess to point to both dev and base engines before hand, and also update the opening book + endgame table base to point to one on your system.

NNUE

I'm in the process of training a (768x8->1024)x2-8 network starting from random weights using self play data generation and bullet trainer. Expect the engine to get much stronger as I improve the network. Check here to see the sequence of networks starting from scratch and the training logs.

Resources: