Hello everyone,
I would like to introduce Dolphin, a UCI chess engine I have been writing in C#. Version 2.1 is now available with full source code and ready-to-run Windows builds.
- Author: Nguyen Viet Huy (Vietnam)
- Language: C# (.NET), single project, no external dependencies
- Protocol: UCI
- License: MIT
- Source: https://github.com/aiagentvn/dolphin
- Download: https://github.com/aiagentvn/dolphin/re ... tag/v2.1.0
- Dolphin-2.1.0-windows-x64.zip - self-contained, includes its own .NET runtime, nothing to install. Recommended for testers.
- Dolphin-2.1.0-windows-x64-requires-dotnet.zip - small package for machines that already have .NET 5.0 or newer.
Engine overview
- Bitboards with magic bitboards, fully legal move generation (perft checked against a reference engine on 20 tricky positions)
- PVS with iterative deepening and aspiration windows; null move, reverse futility, razoring, futility, LMP, ProbCut, LMR, singular extensions, IIR, SEE
- Move ordering with hash move, killers, history, countermove and continuation history
- Lazy SMP, time management for all common time controls (including moves-to-go), pondering
- NNUE: 768 inputs -> 384 hidden neurons per perspective (SCReLU) -> 8 output buckets, incrementally updated, AVX2 fast path
- UCI options: Hash, Threads, Move Overhead, Ponder, Clear Hash, UseNNUE, EvalFile
All code is my own. The network was trained from scratch with the trainer built into the engine (the "datagen" and "train" commands), using only positions from Dolphin's own self-play games: about 44 million positions from five generations, starting from a hand-written evaluation. No code or networks from other engines were used. Stockfish was only used as an external tool (reference perft numbers and a sparring partner).
Testing before release
cutechess-cli 1.5.1, the release packages as downloaded, Intel i7-11800H, opponent Dolphin 2.0:
- 10+0.1, 1 thread: 1000 games, +352 -215 =433, +47.9 +/- 16.2 Elo
- 40 moves / 30 s: 300 games, +105 -45 =150
- 2 min + 1 s: 40 games, +14 -5 =21
- 4 threads + 1 GB hash: 20 games, and 100 games with the engine restarted for every game
Known limitations
- No built-in opening book (use the GUI's book)
- No Syzygy tablebase support yet
- Windows x64 builds only; a 64-bit CPU is required
- In one game of the release candidate, cutechess reported a PV line that continued one move past a checkmate (display only). 2.1 contains a fix attempt; please let me know if you still see PV warnings.
Thank you,
Nguyen Viet Huy
