Skip to content

Dolphin 2.4

Choose a tag to compare

@aiagentvn aiagentvn released this 28 Oct 06:28

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 SyzygyPath to the folder with the .rtbw/.rtbz files. 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 tbhits in its info lines.
  • SyzygyProbeDepth (default 1): probe in the search only at this depth or more.
  • Probing uses Fathom (MIT). It is included as fathom.dll in both packages and as source in native/. If the DLL is missing, Dolphin plays normally without tablebases.
  • Engine name now reports Dolphin 2.4 NNUE. bench stays 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 tbcheck command 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 5 must print Nodes searched: 4865609
  • Dolphin2.exe bench must print Nodes searched : 1717319
  • SHA-256:
    • Dolphin-2.4.0-windows-x64.zip: 319DC83B9BF055CAAF22D39B93D60AD6D70185D2FBEEBB5AB889D8C2048C7D35
    • Dolphin-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 Release

The 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.