heimdall/README.md

2.9 KiB

heimdall

A UCI chess engine written in Nim

Installation

Just run nimble install (Nim 2.0.4 or greater is required, see here).

Or you can grab the latest version from the releases page

Testing

Just run nimble test: sit back, relax, get yourself a cup of coffee and wait for it to finish :)

Features

List of features that are either already implemented ([X]) or planned ([ ])

  • Null move pruning
  • Late move reductions (log formula)
  • Quiescent search
  • Aspiration windows
  • Futility pruning
  • Move reordering
  • Alpha-beta pruning
  • Check extensions
  • QSEE pruning
  • Reverse futility pruning
  • Principal variation search
  • Iterative deepening
  • Transposition table
    • TT Cutoffs
    • TT Move ordering
  • Static exchange evaluation
  • Quiet history heuristic
    • History gravity
    • History malus
  • Killer heuristic
  • Null-window search
  • Parallel search (lazy SMP)
  • Pondering
  • Counter moves
  • Late move pruning
  • SEE pruning
  • Internal iterative reductions
  • Singular extensions
    • Multi-cut pruning
    • Negative extensions
    • Double extensions
  • Capture history
  • Continuation history
    • 1 ply
    • 2 ply
    • 4 ply
  • Razoring

Eval

  • Piece-square tables
  • Material
  • Tempo
  • King safety
    • Virtual king mobility
    • Pawn shield
    • Pawn storm
    • King zone attacks
  • Mobility (sliders and knights)
    • Mask off pawn attacks
    • Consider pins
  • Minor piece outpost
  • Bishop pair
  • Rook on (semi-)open file
  • Queen on (semi-)open file
  • Connected rooks
  • Threats
    • Pieces attacked by pawns
    • Major pieces attacked by minor pieces
    • Queens attacked by rooks
  • Safe checks to enemy king
    • Consider defended squares
  • Pawn structure
    • Isolated pawns
    • Strong (aka protected) pawns
    • Doubled pawns
    • Passed pawns
    • Phalanx pawns

Time Management

  • Hard/Soft limit
  • Node TM
  • BM Stability

More info

Heimdall is available on Lichess under its old name (Nimfish), feel free to challenge it! I try to keep the engine running on there always up to date with the changes on the master branch

Strength

Version Estimated CCRL 40/15 CCRL Blitz
0.1 2531 2436 N/A
0.2 2706 2669 N/A
0.3 2837 N/A N/A

Notes

This repository was extracted from a monorepo that you can check out here (look into the Chess/ directory): all history before the first commit here can be found there!