CPG/Chess
Mattia Giambirtone 4cba3824fc
Major tuner fixes and improvements
2024-05-17 00:55:45 +02:00
..
nimfish Major tuner fixes and improvements 2024-05-17 00:55:45 +02:00
tests Fix crashing, implement LMR and tempo bonus 2024-05-06 23:48:40 +02:00
.gitattributes Initial work on tuning via pytorch 2024-05-12 20:23:10 +02:00
.gitignore Updated .gitignore 2024-05-12 20:11:57 +02:00
README.md Update evaluation and tuner 2024-05-16 14:14:25 +02:00
nim.cfg Fix stupid issues with create() (kill me I'm an idiot) 2024-05-14 12:08:49 +02:00
nimfish.nimble Further work on the tuner. Experimental thread voting (disabled). Preparation for eval improvements 2024-05-15 00:25:23 +02:00

README.md

A chess engine written in nim

For now, that's about it.

Installation

First, install mimalloc, because Nim's default allocator is fast but also borked beyond repair with threads, and malloc is slow as fuck. Use your distro's package manager to do this.

THEN

Just run nimble install

Testing

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

General info

Estimated elo: ~2100

Feature list

  • Null move pruning
  • Late move reductions
  • Quiescent search
  • Aspiration windows
  • Futility pruning
  • Late move pruning
  • Move reordering
  • Alpha-beta pruning
  • Check extensions
  • QSEE pruning
  • Reverse futility pruning
  • Principal variation search
  • Iterative deepening
  • Transposition table
    • Cutoffs
    • Move ordering
  • MVV-LVA
  • Static exchange evaluation
  • History heuristic
    • History gravity
    • History malus
    • History aging
  • Killer heuristic
  • Null-window search
  • Capture history
  • Continuation history
  • Parallel search (lazy SMP)
  • Pondering
  • Counter moves

Eval

  • Piece-square tables
  • Tempo
  • King safety
  • Pawn shield
  • Mobility
  • Minor piece outpost
  • Bishop pair
  • Rook/Queen on (semi-)open file
  • Major piece on 7th rank
  • Pawn structure
    • Isolated pawns
    • Weak pawns
    • Strong pawns
    • Doubled pawns
    • Passed pawns
    • Frozen pawns (blocked by an enemy pawn)