CPG/Chess/README.md

1.6 KiB

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)