Pluto is a UCI-compatible chess engine written in Rust, the current version uses the Shakmaty Chess Library for move generation. It was initially designed as an analysis engine for the the Castled Chess Project.
| Version | Date | Estimated ELO | CCRL 40/15 | CCRL Blitz 2+1 |
|---|---|---|---|---|
| 1.0.0 | 11 May 2025 | 2870 | 2879 | 2976 |
Pluto is tested with OpenBench, a distributed testing framework for UCI chess engines. Hosted at: https://openbench.castled.app
- UCI Compatible
- Move Generation powered by Shakmaty
- Search:
Pluto uses a negamax search with alpha-beta pruning and is reinforced by many other techniques and heuristics
- Negamax
- Alpha-Beta Pruning
- Iterative Deepening
- Transposition Tables
- Principal Variation Search
- Reverse Futility Pruning
- Extended Futility Pruning
- Late Move Reductions
- Late Move Pruning
- Null Move Pruning
- Improving Heuristic
- Internal Iterative Reductions
- Quiescence Search
- Draw & Checkmate Detection
- Move Ordering:
In order to improve the efficiency of the alpha-beta framework, pluto uses a few move ordering tehchniques and heuristics
- Most Valuable Victim - Less Valuable Attacker (MVV-LVA)
- History heuristics
- Killer Moves
- Transposition Tables
- Evaluation:
- HCE (classical build, see how to build it in #Building)
- NNUE (768->512)x2->1 Trained using Bullet and Stockfish data.
To build the engine, clone the repository and use one of the following options:
This will build Pluto NNUE
cargo build --release --bin engine This allows you to build Pluto HCE
cargo build --release --bin engine --features classical- PaulJhonson26 (Eliott Reigner) for the initial implementations of pv collection and killer moves
- MehdiAribi23 (Mehdi Aribi) for some documentation improvements
Pluto was built using these resources and tools
- Chess Programming Wiki
- Carp -> some ideas and the first NNUE inference implementation of pluto came from Carp, the code has been mostly rewritten by now.
- Shakmaty -> great move generator. sped up the development process by alot
- OpenBench -> great tool for distributed SPRT testing and SPSA tuning
- Bullet -> great tool for building NNUEs
- Stockfish -> some implementation examples and ideas