Update README

This commit is contained in:
2026-07-02 19:30:38 +03:00
parent 7548f3ec71
commit b05bb94ee9

View File

@@ -1,48 +1,54 @@
<h1 align="center">Zeal</h1>
**Zeal** is a UCI-compliant chess engine. My primary goal with this project was to gain hands-on experience with Rust. Chess programming concepts were more interesting than I first anticipated, but also harder.
<p align="center">
<a href="https://github.com/stefiosif/zeal/actions/workflows/rust.yml">
<img src="https://github.com/stefiosif/zeal/actions/workflows/rust.yml/badge.svg" alt="CI">
</a>
<img src="https://img.shields.io/badge/rust-2021-orange.svg" alt="Rust 2021">
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="MIT"></a>
</p>
**Zeal** is a UCI-compliant chess engine written in Rust.
## Build
Currently the only way to interact with the engine is by building it from source and then importing it into a UCI-compatible GUI or CLI.
```
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Requires Rust ([rustup](https://rustup.rs)).
### Linux / macOS
```sh
git clone https://github.com/stefiosif/zeal.git
cd zeal
cargo b -r
cargo build --release
./target/release/zeal
```
## Features
Zeal implements a subset of well-established algorithms and techniques in the chess programming world.
### Windows
- Board Representation
- 8 Bitboards
- 8×8 mailbox
- Search core
- Negamax Alpha-Beta Pruning
- Iterative Deepening
- Quiescence search
- Principal Variation Search
- Check extensions
- Aspiration Windows
- Transposition Table cutoffs
- Pruning/Reductions
- Null Move Pruning
- Late Move Reductions
- Reverse Futility Pruning
- Move Ordering
- Transposition Table lookup
- Most Valuable Victim - Least Valuable Aggressor
- History table
- Killer move
- Time Management
- Hybrid soft/hard timeout bounds
- Evaluation (from PeSTO)
- Piece-Square Tables
- Tapered evaluation
```powershell
git clone https://github.com/stefiosif/zeal.git
cd zeal
cargo build --release
.\target\release\zeal.exe
```
## Usage
Zeal speaks [UCI](https://www.chessprogramming.org/UCI), so it isn't meant to be played from the terminal directly. Point any UCI-compatible GUI like [Cute Chess](https://cutechess.com) at the compiled binary and play from there.
## Features
- **Board**: 8 bitboards + 8×8 mailbox
- **Search**: Negamax Alpha-Beta, Iterative Deepening, Aspiration Windows, PVS, Quiescence, Check Extensions, Transposition Table
- **Pruning**: Null Move, Reverse Futility, Late Move Reductions
- **Move Ordering**: TT move, MVV-LVA, killers, history heuristic
- **Evaluation**: PeSTO piece-square tables with tapered eval
- **Time Management**: hybrid soft/hard timeout bounds
## Strength
Zeal has no official rating yet. Expected ELO is around 2300 based on tests against Stash engine (which has many versions for benchmarking).
No official rating yet. Estimated around **2300 Elo**, based on self-play SPRT roughly on par with [Stash](https://gitlab.com/mhouppin/stash-bot) v17 (CCRL Blitz 2298).
## Credits
Thanks to CodeMonkeyKing that provides a clear starting point with his youtube videos. The Engine Programming discord community helped me translate complex chess programming theory into code. Also, shoutout to all open source engines! Amazing tools during development include [Bitboard Calculator](https://gekomad.github.io/Cinnamon/BitboardCalculator/) for visualizing bitwise operations between bitboards, [Lichess Editor](https://lichess.org/editor) for board-to-FEN generation, [webperft](https://analog-hors.github.io/webperft/) for debugging the move generator and [cutechess](https://github.com/cutechess/cutechess)-cli for running SPRTs. Finally, I have to suggest a video from Bartek Spitza for the gentle introduction to chess programming: ["The Fascinating Programming of a Chess Engine"](https://youtu.be/w4FFX_otR-4?si=_Rt4wcJZsS2duMQM).
Thanks to CodeMonkeyKing's YouTube series and the [Engine Programming Discord](https://discord.gg/F6W6mMsTGN).