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

2.2 KiB
Raw Permalink Blame History

Zeal

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 for visualizing bitwise operations between bitboards, Lichess Editor for board-to-FEN generation, webperft for debugging the move generator and 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".