/frozenight

NNUE chess engine that never had an HCE

Primary LanguageRustApache License 2.0Apache-2.0

Frozenight

NNUE chess engine written in Rust. Play against it on lichess.org

The current minimum supported Rust version for the UCI binary is 1.57.0.

Rating Lists

CCRL 40/15:

  • Frozenight 4.0: 2957
  • Frozenight 3.0: 2842
  • Frozenight 2.1: 2683
  • Frozenight 2.0: 2606

CCRL Blitz:

  • Frozenight 4.0: 3004
  • Frozenight 3.0: 2893
  • Frozenight 2.1: 2677
  • Frozenight 1.0: 2448

CCRL 40/2 FRC:

  • Frozenight 4.0: 2998
  • Frozenight 3.0: 2761

Features

  • cozy-chess for move generation
  • Principal Variation Search
  • Aspiration windows
  • ABDADA-based multithreading strategy
  • NNUE evaluation
    • 768 -> 32x2 (-> 1)x16
    • Network bucketing based on modified piece material values (Queen = 8)
      • This is based on game phase tuning in Koivisto done by Luecx
    • Training data generated through self-play, originally starting with a random network
    • Trained using (a modified version of) Pali's marlinflow
  • Quiescense search
    • SEE ordering & pruning with MVV-LVA for ties
    • Check Evasions
  • Check Extensions
  • Late move reductions
  • Late move pruning
  • Null move pruning
  • Reverse futility pruning, except using qsearch instead of static eval
  • Transposition Table
    • Depth-preferred with aging
  • Move ordering
    • Hash move
    • SEE captures, losing captures last, with MVV-LVA for ties
    • Killer heuristic (ordered near pawn captures pawn)
    • Relative history heuristic (side-by-side piece-tosq and fromsq-tosq tables)
    • Underpromotions last
  • Time management
    • Uses at least 2% remaining + increment/2
    • Avoids stopping in the middle of an iteration

License

Frozenight is dual-licensed under the MIT License and Apache License (Version 2.0) licesnses.

Thanks

  • Analog (Tantabus), for cozy-chess and helping me understand search techniques
  • Pali (Black Marlin), for marlinflow and helping me understand NN training and search techniques
  • Authors of the chess programming wiki, for its wealth of knowledge