A UCI chess engine written in Nim
Go to file
Mattia Giambirtone 6556936c8a
Minor changes and cleanup (bench 2229302)
2024-07-16 15:47:37 +02:00
heimdall Minor changes and cleanup (bench 2229302) 2024-07-16 15:47:37 +02:00
tests Initial release 2024-06-12 16:25:09 +02:00
.gitattributes Track .gitattributes 2024-06-13 11:37:43 +02:00
.gitignore Minor changes and fixups 2024-06-21 18:03:08 +02:00
LICENSE Initial commit 2024-06-12 09:06:34 +02:00
Makefile Remove -d:debug from debuggable builds 2024-06-23 12:48:19 +02:00
README.md Update README with safe checks (gains 24.92 +- 10.74) (bench 2229302) 2024-07-16 12:28:20 +02:00
heimdall.nimble Bump engine version in nimble file (bench 2305439) 2024-07-07 17:20:55 +02:00
nim.cfg Merge tunable parameters and use SPSA tuned values (21.94 +- 9.68) (bench 2582385) 2024-06-29 15:50:11 +02:00
tune.py Implement safe checks (bench 2229302) 2024-07-16 09:59:58 +02:00

README.md

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

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!