Skip to content

zzzzz151/Starzix

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Starzix - C++ chess engine

Elo

CCRL Blitz: 3557 (#30/716)

CCRL Rapid: 3473 (#30/580)

Ipman Bullet: 3340 (#39/51)

How to compile

Windows

clang++ -std=c++20 -march=native -O3 -DNDEBUG -Wl,/STACK:16777216 src/main.cpp -o Starzix.exe

Linux

clang++ -std=c++20 -march=native -O3 -DNDEBUG src/main.cpp -o starzix

UCI (Universal Chess Interface)

Options

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

Extra commands

  • display - display current position, fen and zobrist hash

  • eval - display current position's evaluation from perspective of side to move

  • perft <depth> - run perft from current position

  • perftsplit <depth> - run split perft from current position

  • bench <depth> - run benchmark, default depth 14

Features

Board

  • Bitboards
  • Zobrist hashing
  • Pseudolegal move generation (magic bitboards for sliders, lookup tables for pawns, knights and king)
  • Copymake make/undo move

NNUE evaluation

  • (768->1024)x2->1
  • Lc0 data
  • SCReLU 181

Search

  • Iterative deepening
  • Aspiration windows
  • Fail-soft Negamax
  • Principal variation search
  • Quiescence search
  • Transposition table
  • Alpha-beta pruning
  • Reverse futility pruning
  • Razoring
  • Null move pruning
  • Late move pruning
  • Futility pruning
  • SEE pruning
  • Internal iterative reduction
  • Late move reductions
  • Singular extensions (with negative and double extensions)
  • Check extension

Move ordering

  • TT move
  • Good noisy moves by SEE + MVV + noisy history
  • Killer move
  • Countermove
  • Quiet moves by history
  • Bad noisy moves

Moves history

  • Main history
  • Countermove history
  • Follow-up move history
  • Noisy history

Time management

  • Any time control
  • Soft and hard limits
  • Nodes TM