Skip to content

Sp00ph/icarus

Repository files navigation

Icarus

A superhuman UCI chess engine, supporting standard and (Double) Fischer Random chess, with NNUE evaluation trained exclusively on self-play data. This repository contains no LLM-generated or LLM-assisted code.

Features

Move Generation

  • Fully legal move generation with threat bitboard computation
  • PEXT/PDEP accelerated slider move generation on modern CPUs
  • Black magic slider generation on older CPUs

Search

  • Negamax using Alpha-Beta Pruning
  • Iterative Deepening
  • Quiescence Search
  • Transposition Table
  • Principal Variation Search
  • Reverse Futility Pruning
  • Null Move Pruning
  • Late Move Reduction
  • Late Move Pruning
  • Futility Pruning
  • SEE Pruning
  • Aspiration Windows
  • History Pruning
  • Singular Extension (thanks to @kelseyde)
    • Double Extensions
    • Negative Extensions
    • Multicut
  • Multithreading using LazySMP

Move Ordering

  • Hash Move
  • Quiet History
    • Threat Bucketing
  • Tactic History
  • Continuation History
  • Staged Move Generation
  • Static Exchange Evaluation

Evaluation

  • NNUE
    • Dual Perspective
    • Horizontal Mirroring
    • Trained only on self-play using bullet
    • Initial version trained on data generated using PeSTO piece-square tables.
  • Correction History
    • Pawn corrhist
    • Minor corrhist
    • Major corrhist
    • Non-pawn corrhist

Acknowledgements

Icarus takes inspiration from other engines, including but not limited to:

Additionally, there are many individuals who have made developing Icarus easier and more fun, including but very much not limited to:

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages