This repo was my first foray into chess programming, and it taught me a lot!
I've since split apart the various pieces here into their own repositories.
The primary ones I'd have you visit are chessie
, my chess move generation library, and toad
, the engine that succeeded brogle
.
I'm leaving this repository up for now, but may remove it in the future.
Brogle (pronounced 'brog-lee' (like 'broccoli')) is a UCI-compatible chess engine.
This repository is a huge work-in-progress. Once the code reaches a state that I am content with, I will release a version 1.0.
The engine is where the source code for Brogle actually lives. Inside you can find the components for UCI-compatibility, search, evaluation, and more.
The core library is a home-rolled implementation of all the rules of chess. I intend to separate this into it's own repository later and publish it on crates.io.
The tools crate is a collection of tools I used during the development of this engine. These are mostly meant for me, so don't judge me if they're poorly-written or outdated.
-
Compatible with the Universal Chess Interface protocol
-
Magic Bitboards for sliding piece movement (rook/bishop/queen)
-
Search
- Negamax with alpha-beta pruning
- Principal Variation Search
- Iterative Deepening
- MVV-LVA move ordering
- Quiescence Search
- Transposition Table for move ordering and basic pruning
-
Evaluation
- HCE (hand-crated evaluation)
- Basic material difference evaluation
- Piece-Square tables with valued copied from the Simplified Evaluation Function
More features to be implemented as I find time!
This project is written in Rust. Since I (presently) don't have any precompiled binaries, you need to build from source with Cargo.
Once you've downloaded the code, a simple cargo run --release --bin brogle
will launch the engine.
Special thanks to all
- Sebastian Lague, for his chess programming series on YouTube that ultimate inspired me to do this project.
- The Chess Programming Wiki, and all those who contribute to free, open-source knowledge.
- The folks over at the Engine Programming Discord, for their patience with my silly questions and invaluable help overall.
- Analog-Hors, for her excellent article on magic bitboards