SkillAgentSearch skills...

Stormphrax

UCI chess engine, with NNUE trained from zero knowledge

Install / Use

/learn @Ciekce/Stormphrax
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<div align="center">

Stormphrax

[![License][license-badge]][license-link]
[![GitHub release (latest by date)][release-badge]][release-link] [![Commits since latest release][commits-badge]][commits-link]

![LGBTQ+ friendly][lgbtqp-badge] ![trans rights][trans-rights-badge]

</div>

A work-in-progress UCI chess and [chess960] engine, with NNUE evaluation trained from zero knowledge starting with random weights.

The Stormphrax project prides itself on using self-generated training data for its networks, and will never use data generated by a third party. This repo contains no LLM-generated code.

This project is a continuation of my HCE engine [Polaris].

Strength

At the time of writing, Stormphrax 7.0.0 is the strongest standard chess and Chess960 engine in the UK, and the 4th strongest Chess960 engine in the world.
If this is no longer true, it is likely to have been overtaken by the excellent [Viridithas].

| Version | [SP-CC UHO-Top15][spcc] | [CCRL 40/15][ccrl-4015] | [CCRL Blitz][ccrl-blitz] | [CCRL 40/2 FRC][ccrl-402-frc] | [CEGT 40/4][cegt-404] | [CEGT 40/20][cegt-4020] | [MCERL] | |:-------------:|:-----------------------:|:-----------------------:|:------------------------:|:-----------------------------:|:---------------------:|:-----------------------:|:-------:| | [7.0.0][sp7] | 3682 (11th) | 3584 (tied 9th-10th) | 3718 (10th) | 4010 (4th) | - | - | - | | [6.0.0][sp6] | 3621 | 3560 | 3680 | 3967 | 3566 | 3529 | - | | [5.0.0][sp5] | - | 3506 | 3622 | 3870 | 3501 | 3461 | - | | [4.1.0][sp41] | - | 3488 | 3585 | 3812 | - | 3432 | - | | [4.0.0][sp4] | - | 3474 | 3565 | 3782 | 3440 | 3419 | 3542 | | [3.0.0][sp3] | - | 3407 | 3492 | 3697 | - | 3354 | 3495 | | [2.0.0][sp2] | - | 3397 | 3483 | 3676 | 3339 | - | 3482 | | [1.0.0][sp1] | - | 3317 | 3374 | 3523 | 3235 | - | 3346 |

Features

  • standard PVS with quiescence search and iterative deepening
    • aspiration windows
    • futility pruning
    • history
      • capture history
      • 1-ply continuation history (countermove history)
      • 2-ply continuation history (follow-up history)
      • 4-ply continuation history
    • correction history
      • pawn
      • non-pawn
      • major
      • continuation
    • history pruning
    • internal iterative reduction
    • killers (1 per ply)
    • late move reductions
    • late move pruning
    • mate distance pruning
    • multicut
    • nullmove pruning
    • reverse futility pruning
    • probcut
    • SEE move ordering and pruning
    • singular extensions
      • double extensions
      • triple extensions
      • various negative extensions
    • Syzygy tablebase support
  • NNUE
    • (704x16hm->1792)x2->(16x2->32->1)x8 architecture
    • trained from zero knowledge with reinforcement learning from a randomly-initialised network
  • BMI2 attacks in the avx2-bmi2 build and up, otherwise fancy black magic
    • pext/pdep for rooks
    • pext for bishops
  • lazy SMP
  • static contempt

To-do

  • make it stronger uwu

UCI options

| Name | Type | Default value | Valid values | Description | |:------------------------------|:-------:|:-------------:|:-------------------------:|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | Hash | integer | 64 | [1, 67108864] | Memory allocated to the transposition table (in MiB). | | Clear Hash | button | N/A | N/A | Clears the transposition table. | | Threads | integer | 1 | [1, 2048] | Number of threads used to search. | | MultiPV | integer | 1 | [1, 256] | Number of lines to search at once. | | UCI_Chess960 | check | false | false, true | Whether Stormphrax plays Chess960 instead of standard chess. | | UCI_ShowWDL | check | true | false, true | Whether Stormphrax displays predicted win/draw/loss probabilities in UCI output. | | ShowCurrMove | check | false | false, true | Whether Stormphrax starts printing the move currently being searched after a short delay. | | Move Overhead | integer | 10 | [0, 50000] | Amount of time Stormphrax assumes to be lost to overhead when making a move (in ms). | | SoftNodes | check | false | false, true | Whether Stormphrax will finish the current depth after hitting the node limit when sent go nodes. | | SoftNodeHardLimitMultiplier | integer | 1678 | [1, 5000] | With SoftNodes enabled, the multiplier applied to the go nodes limit after which Stormphrax will abort the search anyway. | | EnableWeirdTCs | check | false | false, true | Whether unusual time controls (movestogo != 0, or increment = 0) are enabled. Enabling this option means you recognise that Stormphrax is neither designed for nor tested with these TCs, and is likely to perform worse than under X+Y. | | SyzygyPath | string | <empty> | any path, or <empty> | Location of Syzygy tablebases to probe during search. | | SyzygyProbeDepth | spin | 1 | [1, 255] | Minimum depth to probe Syzygy tablebases at. | | SyzygyProbeLimit | spin | 7 | [0, 7] | Maximum number of pieces on the board to probe Syzygy tablebases with. | | EvalFile | string | <internal> | any path, or <internal> | NNUE file to use for evaluation. |

Builds

avx512: requires BMI2 and AVX-512 (Zen 4/Ice Lake/Cascade Lake-SP/Rocket Lake and up)
avx2-bmi2: requires BMI2 and AVX2 and assumes fast pext and pdep (i.e. no Bulldozer, Piledriver, Steamroller, Excavator, Zen 1, Zen+ or Zen 2) avx2: requires BMI and AVX2 - primarily useful for pre-Zen 3 AMD CPUs back to Excavator

If in doubt, compare the avx2-bmi2 and avx2 binaries and pick the one that's faster. BMI2 will always be faster on Intel CPUs.

Alternatively, build the makefile target native for a binary tuned for your specif

View on GitHub
GitHub Stars126
CategoryDevelopment
Updated3h ago
Forks17

Languages

C++

Security Score

100/100

Audited on Apr 1, 2026

No findings