Repository navigation
Dolphin 2.4
Dolphin 2.4 adds Syzygy endgame tablebase support. The search and the network are the same as in 2.3. Without tablebases it plays exactly like 2.3 (same bench count).
What's new
- Syzygy tablebases. Set the UCI option
SyzygyPathto the folder with the.rtbw/.rtbzfiles. Use;between several folders on Windows. The engine then:- plays root moves that keep the theoretical result: winning moves that make progress toward a zeroing move, drawing moves, or the longest defence;
- uses win/draw/loss results inside the search after captures and pawn moves;
- shows
tbhitsin itsinfolines.
SyzygyProbeDepth(default 1): probe in the search only at this depth or more.- Probing uses Fathom (MIT). It is included as
fathom.dllin both packages and as source innative/. If the DLL is missing, Dolphin plays normally without tablebases. - Engine name now reports
Dolphin 2.4 NNUE.benchstays at 1717319.
Download
| File | Use it if |
|---|---|
Dolphin-2.4.0-windows-x64.zip |
Recommended. Self-contained: includes its own .NET runtime, nothing to install. Keep all files of the folder together. |
Dolphin-2.4.0-windows-x64-requires-dotnet.zip |
You already have the .NET Runtime 5.0 or newer. Keep Dolphin2.exe, Dolphin2.dll, Dolphin2.deps.json, Dolphin2.runtimeconfig.json (and fathom.dll for tablebases) together. |
Unzip and load Dolphin2.exe into your GUI as a UCI engine. The network is embedded in the program. Tablebases are not included; the 3-4-5 piece set is about 1 GB, for example from https://tablebase.sesse.net/syzygy/.
Testing
Correctness, with the 3-4-5 piece tables:
- The new
tbcheckcommand checks random positions with up to 5 pieces. The table result must equal the best result over all moves. 18,085 positions checked, 0 mismatches. Known positions (KQ vs K, KBN vs K, KNN vs K, KR vs KR, ...) also gave the right results. - In 720 games that reached 5 pieces or fewer, Dolphin with tablebases never scored less than the theoretical result of the position.
Matches at 10+0.1, Dolphin with 3-4-5 piece tablebases against Dolphin without:
- 1,000 games from balanced 7-9 piece endgame positions (
tools/match.py): +18 =974 -8, +3.5 ± 3.5 Elo. These positions are mostly drawn, so the gain is small, and it will be smaller still from normal openings.
Matches from normal openings at 10+0.1 (tools/openings8.epd):
| Match | Games | Result (W-L-D) | Elo |
|---|---|---|---|
2.4 with tablebases vs the same build without (tools/match.py) |
1000 | 171 - 137 - 692 | +11.8 ± 11.9 |
2.4 without tablebases vs the 2.3 package (tools/match.py) |
800 | 118 - 136 - 546 | -7.8 ± 13.6 (same search; within the error margin) |
| 2.4 with tablebases vs the 2.3 package (cutechess-cli) | 300 | 47 - 64 - 189 | -19.7 ± 23.9 |
| same, engine restarted every game, 5+0.05 | 100 | 17 - 24 - 59 | -24.4 ± 43.7 |
| same, 4 threads and 1 GB hash each, 2 games at a time | 20 | 2 - 5 - 13 | one loss on time by 2.4 (10 pieces, outside the tables) |
| same, 4 threads and 1 GB hash each, one game at a time | 40 | 5 - 5 - 30 | no time losses |
| self-contained 2.4 vs framework-dependent 2.4, both with tablebases | 100 | 17 - 27 - 56 | (same engine) |
Without tablebases, 2.4 plays the same moves as 2.3: the same bench node count and the same speed (1.63-1.67 M nodes/s). The cutechess results against 2.3 are negative, but each is within its error margin. The direct comparison with and without tablebases in the same build is positive. One game in the 4-thread test was lost on time while the machine was fully loaded (16 threads busy). It did not happen again in 40 more games at the same settings with one game at a time.
Verify
Dolphin2.exe perft 5must printNodes searched: 4865609Dolphin2.exe benchmust printNodes searched : 1717319- SHA-256:
Dolphin-2.4.0-windows-x64.zip:319DC83B9BF055CAAF22D39B93D60AD6D70185D2FBEEBB5AB889D8C2048C7D35Dolphin-2.4.0-windows-x64-requires-dotnet.zip:1DD2E2E4367BD764332F053F4A8618E4C9838AD401DEB62982645DF2E8600A05
Build from source
git clone https://github.com/aiagentvn/dolphin.git
cd dolphin
dotnet build -c ReleaseThe prebuilt native/win-x64/fathom.dll is copied to the output. To rebuild it, run native/build-fathom.ps1; it needs Visual Studio or the Build Tools. The binaries in this release were built from the source at this tag.