Timecat Chess Engine
Timecat is a UCI-compatible chess engine designed in Rust that combines powerful algorithms and advanced evaluation techniques to deliver top-notch chess analysis and gameplay. Using alpha-beta pruning with the negamax algorithm and the NNUE evaluation method, Timecat achieves enhanced depth and accuracy in game analysis.
Key Features
- UCI Compatibility: Fully compatible with the Universal Chess Interface (UCI) standard.
- Advanced Algorithms: Utilizes alpha-beta pruning and the negamax algorithm for efficient move searching.
- NNUE Evaluation: Incorporates NNUE (efficiently updatable neural network) for state-of-the-art position evaluation.
- Customizable Builds: Supports tailored builds through configurable cargo features.
Integration of the Chess Library
Initially, Timecat was dependent on the external chess library, which is available at https://github.com/jordanbray/chess. To align more closely with specific requirements, the library was integrated directly into Timecat. This integration permitted significant modifications and extensions to its functionalities, thereby enhancing the engine's overall capabilities. Such integration demonstrates a commitment to adapting and evolving the tools to secure the best possible performance and accuracy in chess analytics.
NNUE Support
Timecat currently utilizes the Stockfish NNUE for evaluation. Plans are in place to transition to a custom-trained NNUE in the future.
Installation
Installing as a Binary
Optimize your setup for the best performance:
RUSTFLAGS="-C target-cpu=native"
Compilation from Source
Clone the repository and compile with native optimizations:
RUSTFLAGS="-C target-cpu=native"
Usage as a Library
Minimal Dependency Integration
Integrate Timecat into your Rust projects with minimal dependencies:
Examples
This example demonstrates how to set up a chess board, make moves, evaluate board positions, and utilize the inbuilt engine to find optimal moves in Rust using the timecat library. Some features such as position evaluation (nnue) and engine computation (engine) are optional and can be enabled via cargo features.
First, add the timecat crate to your project with the necessary features enabled (nnue evaluation feature is already included in the engine feature):
Then, you can proceed with the following Rust code:
use *;
Cargo Features
binary: Enables binary builds, including NNUE and engine functionalities.nnue: Adds support for NNUE (downloaded viareqwest).engine: Provides the Engine struct for in-depth position analysis and move searching.colored_output: Displays all information in a visually appealing colored format for enhanced readability.serde: Enables serialization and deserialization support viaserde.
Default features include binary and colored_output
License
Timecat is open-sourced under the GNU GENERAL PUBLIC LICENSE. You are free to use, modify, and distribute it under the same license.
Contributing
We welcome contributions! Feel free to fork the repository, make improvements, and submit pull requests. You can also report issues or suggest features through the GitHub issue tracker.