by Lxdovic
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 |
---|---|---|
Before Release | 8 May 2025 | 2870 |
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:
Pluto adopted Efficiently Updatable Neural Networks for its evaluation function quite early in development. Earlier versions were using Simple Eval/Pesto Eval
- NNUE (768->512)x2->1 Trained using Bullet and Stockfish data.
To build the engine, clone the repository and run the following command in your terminal:
make
- 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