Shield Chess Engine

Shield is an UCI chess engine written in the D programming Language.

It is my third chess engine after Tamerlane and Madeleine and I started working on it around November 2015.


16/01/2018 - Shield 2.1 (~2840+ ELO)

  • Fixed an issue with the UCI protocol, now Shield loads correctly into Fritz GUI.
  • Added some knowledge for KBPvK endgames.
  • Corrected time management, now Shield should allocate more time for the search (more specifically in a "game in X" game).
  • Slightly reworked the logic Shield uses to select a move from the opening book.
  • Added SEE pruning in main search.
  • Added hidden passers evaluation and reworked evaluation of passed pawns, plus some other minor change.
  • Corrected a bug in opposite colour bishop ending.
  • Added an extension to Polyglot opening books to store statistics about each opening line. The book generation routine of Shield (--genbook command line parameter) was modified to generate also the statistics file.
  • Added some configuration parameter as UCI option (see section "UCI Options" for more details).

22/11/2017 - Shield 2.0 (~2700+ ELO)

  • Complete new version! Total rewrite of Shield code.
  • Support for Polyglot opening books (old Shield 1.x book format is no longer supported).
  • Support for multi-thread search up to 16 cores.

25/09/2016 - Shield 1.3.1 (~2500+ ELO)

  • Bug Fixing

04/09/2016 - Shield 1.3 (~2500+ ELO)

  • Some "raw speed" enhancements: nps is greatly improved.
  • Changed History Heuristic and added configuration parameters.
  • Completly removed PST tables (left only the table for King).
  • Added new evaluation configuration parameters:
    • Endgame piece values (currently no difference with middlegame values, but can be changed).
    • Added the possibility to specify the middlegame and endgame values for most of the evaluation terms (some tuning is still needed !!)
    • Added "MaterialIncidence" configuration parameter to change the importance of "material" on the evaluation function.

20/03/2016 - Shield 1.2 (~2450+ ELO)

  • Added pondering
  • Added singular move extension
  • Changed futility pruning algorithm and added new configuration parameters
  • Revisited Piece values
  • Added some new configuration evaluation parameter
  • Internal rework of some classes to better use D template capabilities
  • Slighlty better understanding of opposing colour bishop endgames
  • Slightly better endgame knowledge (now Shield should know how to play KBNk, KBBk, KQkr, KRBkr, KRNkr endgames)
  • Somehow tuned evaluation parameters
  • Added preliminary King Safety
  • New opening book.

10/01/2016 - Shield 1.1 (~2350+ ELO)

  • Added piece values in configuration
  • Added experimental Static Nullmove Pruning
  • Added some small new evaluation terms:
    • Connected/Supported passed pawns
    • King not castled/castle loss penalities
    • Pinned pieces penalities
    • Control of weak central squares
    • Fianchetto bishops Bonus
  • Added some book configuration options.
  • Removed/changed some old configuration options.
  • Corrected a nasty configuration bug (array parameters were wrongly used!!!).
  • Some minor tweaks on the search
  • Now Shield comes with its own book. You can specify the name of the book Shield will use by using the new UCI Book parameter.
  • The default book was generated with default parameters using CCRL 40/40 games
  • Added the possibility to generate an opening book from a list of PGN files. Launch "Shield.exe --help" to view possible parameters.
  • Added a simple interactive book viewer (only view, no manual editing for the moment). Launch "Shield.exe --showbook".
  • NOTE: the moves are ordered by score (what you see with K=...). That score is the number represented by the new BookScoreValue configuration parameter
  • Multicut is removed
  • Quiescence pruning is removed.

22/12/2015 - Shield 1.0 (~2150+ ELO)

  • UCI (no ponder)
  • Magic Bitboards
  • PVS search (no multithreading)
  • Internal Iterative Deepening
  • Null moves with optional verification
  • Check, Recapture, Passed Pawn Push and Pawn Endgame extensions.
  • Experimental Futility pruning.
  • Experimental LMR.
  • Experimental Multicut
  • Very simple evaluation function:
    • PST
    • Knight, Bishop, Rook mobility
    • Knight, Bishop outposts
    • Very basic passed pawns evaluation
    • No pawn structure evaluation !!!
    • No king safety evaluation !!!
    • Absolutely no endgame knowledge !!!