/Starzix

Primary LanguageC++Do What The F*ck You Want To Public LicenseWTFPL

Starzix - C++ chess engine

Elo

CCRL Blitz: 3626 (#24/753)

CCRL Rapid: 3521 (#27/597)

Ipman Bullet: 3423 (#38/51)

Stefan Pohl SPCC: 3544 (#71/88)

How to compile

Have clang++ installed and run make

UCI (Universal Chess Interface)

Options

  • Hash (int, default 32, 1 to 65536) - transposition table size in MB

  • Threads (int, default 1, 1 to 256) - search threads

Extra commands

  • display

  • eval

  • perft <depth>

  • perftsplit <depth>

  • bench <depth>

  • makemove <move>

  • undomove

Features

Board

  • Bitboards
  • Zobrist hashing
  • Pseudolegal move gen (magic bitboards and lookup tables)
  • Copymake make/undo move

NNUE evaluation

  • (768x2x5 -> 1024)x2 -> 1
  • Inputs mirrored along vertical axis based on king square
  • 5 enemy queen input buckets
  • Lc0 data
  • Trained with my trainer

Search

  • Staged move gen
  • Fail-soft Negamax
  • Principal variation search
  • Iterative deepening
  • Quiescence search
  • Aspiration windows
  • Transposition table
  • Alpha-beta pruning
  • Reverse futility pruning
  • Razoring
  • Null move pruning
  • Probcut
  • Late move pruning
  • Futility pruning
  • SEE pruning
  • Internal iterative reduction
  • Late move reductions
  • Singular extensions
  • Correction histories
  • Cuckoo (detect upcoming repetition)
  • Time management (hard limit, soft limit, nodes TM)
  • Multithreading / Lazy SMP

Move ordering

  • TT move
  • Good noisy moves by SEE + MVVLVA
  • Killer move
  • Quiet moves by history
  • Bad noisy moves (underpromotions last)

Moves history

  • Main history
  • Continuation histories (1 ply, 2 ply, 4 ply)
  • Noisy history
  • History malus and gravity