[Release] Elephant Gambit 0.15.2

Discussion of anything and everything relating to chess playing software and machines.

Moderator: Ras

looa
Posts: 7
Joined: Sat Apr 15, 2023 9:17 pm
Full name: Alexander Ek

[Release] Elephant Gambit 0.15.2

Post by looa »

Hi all,

I've been reading this forum for years while working on my engine, and I think it's finally at a point where it's worth posting about.

Elephant Gambit is a UCI chess engine written in C++20. It started because I was frustrated with how bad I am at chess and figured I'd let the computer do it for me. It has since become more of an obsession, and a place to write the kind of C++ I don't get to write at work. Its predecessor, Gambit, got its first commit back in 2017.

Download: https://github.com/looak/elephant/releases/tag/0.15.2
Windows and Linux binaries, statically linked, built for x86-64, x86-64-v2 and x86-64-v3. GPL-3.0.

What's in it
  • Bitboards with magic bitboard sliders, staged legal move generation
  • Negamax alpha-beta with PVS, iterative deepening, aspiration windows, transposition table
  • Quiescence search with delta and SEE pruning, check extensions
  • Null move pruning (with verification), LMR, LMP, IIR, reverse futility and futility pruning
  • Move ordering: TT/PV move, MVV-LVA, killers, history, losing captures by SEE after quiets
  • PeSTO evaluation, tapered and incrementally updated, plus mop-up for won endgames
  • Time management with soft and hard limits, increment aware, configurable move overhead
  • Pondering (go ponder / ponderhit)
  • Single threaded for now, Lazy SMP is next
Strength

I ran a gauntlet against six engines from the CCRL Blitz list, 200 games each: 2m+1s, fastchess, 8moves_v3 book, on a Ryzen 9 5950X under Fedora. It was played with 0.15.1; 0.15.2 only fixes pondering.

Code: Select all

Opponent      CCRL   Games    W    D    L   Score    Elo
Barbarossa    2465    200   141   30   29   78.0%   +220
Tantabus      2556    200   114   55   31   70.8%   +153
WyldChess     2603    200    73   64   63   52.5%    +17
Blunder 8.5.5 2663    200    81   67   52   57.2%    +51
Fatalii       2735    200    74   58   68   51.5%    +10
byte-knight   2863    200    25   73  102   30.8%   -141
Overall, it scores 56.8% over 1200 games against opponents averaging about 2650, a performance of 2700 ± 35, give or take 17. Per opponent, it ranges from about 2620 (WyldChess) to 2745 (Fatalii). These are my numbers on my hardware, not CCRL's, so I'm curious where it actually lands.

For context, v0.11.0 was sitting in the low 2000s on Lichess. Most of the gain since then came in the last couple of weeks, once I found a transposition table bug where captured pieces were XOR'd out of the Zobrist key twice, which meant positions after a capture hashed as if the capture never happened. Fixing that was worth about +320 in self-play, and it turned out the broken TT had made a couple of pruning features look bad enough that I'd removed them. Putting those back, plus PeSTO and the futility work, accounts for most of the rest. Everything is tested with SPRT on a local OpenBench instance.

As mentioned, it also plays on Lichess as https://lichess.org/@/elephantgambitengine

If any of the CCRL testers are interested in including it, I'd be grateful. Bug reports, odd behavior, or anything that looks wrong in a GUI, please let me know.

Thanks to the Engine Programming and OpenBench Discords, who have been very generous with their help, and to chessprogramming.org and this forum, which I've leaned on more than I can count.

Alex