Files
zeal/README.md
2025-04-04 19:18:48 +03:00

49 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<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.
## 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
git clone https://github.com/stefiosif/zeal.git
cd zeal
cargo b -r
./target/release/zeal
```
## Features
Zeal implements a subset of well-established algorithms and techniques in the chess programming world.
- 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
## Strength
Zeal has no official rating yet. Expected ELO is around 2300 based on tests against Stash engine (which has many versions for benchmarking).
## 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).