Tcheran is a UCI chess (and fischer random chess) engine developed by @jgilchrist and written in Rust.
For searching, it uses a standard alpha-beta search with many enhancements (e.g. additional pruning conditions, heuristics and history mechanisms to improve move ordering, etc.).
For evaluation, it uses an efficiently-updatable neural network (NNUE). Its
current architecture is (768->1024hm)x2->8 (a single-layer,
horizontally-mirrored network with a 1024-node hidden layer, and eight output
buckets). The network is trained exclusively using self-play games from earlier
versions of Tcheran, and that data is available online. More
details, including a detailed network history are available in
NET.md.
| Version | CCRL 40/15 | CCRL Blitz | CEGT | MCERL |
|---|---|---|---|---|
| v11.0 | 3514 | 3635 | 3468 | |
| v10.0 | 3459 | 3568 | 3407 | |
| v9.0 | 3366 | 3415 | ||
| v8.0 | 3323 | 3245 | ||
| v7.0 | 3174 | 3231 | ||
| v6.0 | 2917 | 2975 | ||
| v5.1 | 2698 | |||
| v5.0 | 2642 | 2728 | 2818 | |
| v4.1 | ||||
| v4.0 | 2519 | 2546 | 2726 | |
| v3.0 | 2427 | 2481 | 2659 | |
| v2.5 | 2370 | 2621 | ||
| v2.4 | 2305 | 2583 | ||
| v2.3 | 2328 | 2557 | ||
| v2.2 | 2264 | 2550 | ||
| v2.1 | 2277 | 2227 | 2534 | |
| v2.0 | 2430 | |||
| v1.1 | 2231 | |||
| v1.0 | 1868 |
It can also be found on Lichess as jpg-bot where its ratings are:
To run Tcheran, you can download the latest release from its releases page.
If you would instead like to build it from source:
- Ensure you have the pre-requisites installed:
- Rust (the minimum supported version is listed in Cargo.toml)
- A C compiler to build Fathom for tablebase probing support
- Run
cargo build --release- this will download the latest network and build the engine. - The engine binary will be available as
target/release/engine.
A huge thanks to the following people and tools:
- Bullet, which is used for training Tcheran's neural networks
- Fathom, which is used for Syzygy tablebase probing
- OpenBench, which is used for testing changes to the engine
- Stockfish's WDL model, which is used for normalizing Tcheran's evaluation output
- sp00ph for his command channel, which is used in Tcheran's SMP implementation
- The testers at CCRL (and elsewhere), who have invested time and hardware resource, and provided consistent motivation to improve