Update README
This commit is contained in:
89
README.md
89
README.md
@@ -1,63 +1,52 @@
|
|||||||
# Zeal
|
<h1 align="center">Zeal</h1>
|
||||||
**Zeal** is a UCI-compliant chess engine written in Rust. I began writing Zeal as a side project while learning Rust. Beating a top engine like Stockfish felt like a long journey, so it seemed fitting to pair that challenge with learning Rust. Zeal is now nearing its first release, though it's still far from its ultimate goal.
|
|
||||||
|
|
||||||
## Running and building Zeal
|
**Zeal** is a UCI-compliant chess engine written in Rust. I started developing it as a side project while learning Rust.
|
||||||
### Play on Lichess
|
|
||||||
[lichess]() - TODO
|
|
||||||
|
|
||||||
### Run locally
|
## Running Zeal
|
||||||
```
|
```
|
||||||
git clone https://github.com/stefiosif/zeal.git
|
git clone https://github.com/stefiosif/zeal.git
|
||||||
cargo run -- --mode uci
|
cargo r -r -- --mode uci
|
||||||
```
|
```
|
||||||
|
|
||||||
### Run on Cutechess GUI (Windows)
|
## Features
|
||||||
```
|
- Board Representation
|
||||||
git clone https://github.com/stefiosif/zeal.git
|
- Bitboards
|
||||||
cd scripts
|
- Redundant Mailbox
|
||||||
./build_windows_bat.sh
|
- Move Generation
|
||||||
```
|
- Magic Bitboards
|
||||||
After building, find the executable in target/x86_64-pc-windows-gnu/release. Use zeal.bat to add Zeal to the Cutechess GUI.
|
- Pseudo-Legal Generator
|
||||||
|
- Unmake Move
|
||||||
|
- Communication Protocol
|
||||||
|
- UCI
|
||||||
|
- Search
|
||||||
|
- Negamax
|
||||||
|
- Alpha-Beta Pruning
|
||||||
|
- Quiescence
|
||||||
|
- Move Ordering
|
||||||
|
- MVV-LVA
|
||||||
|
- Transposition Table
|
||||||
|
- Evaluation
|
||||||
|
- PeSTO's
|
||||||
|
- Time Management
|
||||||
|
- Iterative deepening
|
||||||
|
- Hard limit
|
||||||
|
|
||||||
## Core
|
|
||||||
### Board Representation
|
|
||||||
- Bitboards
|
|
||||||
- Redundant Mailbox for piece-square look ups
|
|
||||||
### Move Generation
|
|
||||||
- Pseudo-legal move generation
|
|
||||||
- Magic bitboards for sliding pieces
|
|
||||||
- Make/Unmake instead of Copy/Make
|
|
||||||
### Communication Protocol
|
|
||||||
- UCI
|
|
||||||
### Search
|
|
||||||
- Negamax
|
|
||||||
- Alpha Beta
|
|
||||||
- Quiescence
|
|
||||||
- Move ordering (MVV LVA)
|
|
||||||
### Evaluation
|
|
||||||
- Material evaluation
|
|
||||||
- Piece-Square table evaluation
|
|
||||||
|
|
||||||
## Next features
|
|
||||||
- [ ] Iterative deepening
|
|
||||||
- [ ] Principal Variation
|
|
||||||
- [ ] Zorbist hashing
|
|
||||||
- [ ] Transposition tables
|
|
||||||
- [ ] ...
|
|
||||||
|
|
||||||
## Rating
|
## Rating
|
||||||
There's no ratings yet for Zeal.
|
Unrated.
|
||||||
|
|
||||||
## Acknowledgements
|
## Acknowledgements
|
||||||
Huge thanks to CodeMonkeyKing and his chess programming videos. His simplistic approach helped me understand the components that constitute a chess engine. Rustic's [roadmap](https://rustic-chess.org/introduction/roadmap.html) guided me in identifying which part of the engine to build next, while the book is an excellent resource for understanding various chess programming concepts. The [Chess Programming Wiki](https://www.chessprogramming.org/Main_Page) provides detailed information about all chess programming topics. Last but not least, I have been reading the code of various chess engines to take ideas, some of them are [bbc](https://github.com/maksimKorzh/bbc), [rustic](https://github.com/mvanthoor/rustic), [tcheran](https://github.com/jgilchrist/tcheran), [purple](https://github.com/JLErvin/purple) and [rush](https://github.com/lefebvreb/rush).
|
Huge thanks to:
|
||||||
|
- CodeMonkeyKing for his chess programming videos
|
||||||
|
- Chess Programming Wiki
|
||||||
|
- `Engine Programming` discord server
|
||||||
|
|
||||||
Amazing tools:
|
Development tools:
|
||||||
- [Bitboard Calculator](https://gekomad.github.io/Cinnamon/BitboardCalculator/)
|
- [Bitboard Calculator](https://gekomad.github.io/Cinnamon/BitboardCalculator/)
|
||||||
- [Lichess Editor](https://lichess.org/editor)
|
- [Lichess Editor](https://lichess.org/editor)
|
||||||
- [cutechess](https://github.com/cutechess/cutechess)
|
- [cutechess](https://github.com/cutechess/cutechess)
|
||||||
- [perftree](https://github.com/agausmann/perftree)
|
- [webperft](https://analog-hors.github.io/webperft/)
|
||||||
|
|
||||||
Other resources:
|
Cool videos:
|
||||||
- [The Fascinating Programming of a Chess Engine](https://youtu.be/w4FFX_otR-4?si=_Rt4wcJZsS2duMQM)
|
- [The Fascinating Programming of a Chess Engine](https://youtu.be/w4FFX_otR-4?si=_Rt4wcJZsS2duMQM)
|
||||||
- [Coding Adventures: Making a Better Chess Bot](https://youtu.be/_vqlIPDR2TU?si=PKWe_Qu_CPGwIAwE)
|
- [Coding Adventures: Making a Better Chess Bot](https://youtu.be/_vqlIPDR2TU?si=PKWe_Qu_CPGwIAwE)
|
||||||
- Writing a Chess Engine [Move Generation](https://www.josherv.in/2021/03/19/chess-1/) and [Move Selection](https://www.josherv.in/2022/12/17/chess-2/)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user