Hey everyone,
I've been working on a chess engine called Ember for a while now, and I think it's ready to show to the community. It's written entirely in Rust and speaks the UCI protocol.
What's inside so far:
Search:
- Negamax / Alpha-Beta / PVS
- LMR, Null Move Pruning (adaptive), IID
- Quiescence Search with SEE pruning & Delta pruning
- Transposition Table (always-replace)
- Move ordering: TT move, MVV-LVA captures, killer, counter-move, history
- Check extensions, Reverse Futility Pruning
Evaluation:
- PST (mg/eg) with tapered eval
- Mobility for N/B/R/Q
- Pawn structure (doubled, isolated, passed)
- King safety (attacks + pawn shelter)
- Bishop pair, rooks on open files
- Correction history
Other stuff:
- Zobrist hashing, repetition detection
- SEE, en passant, castling
Planned improvements (work in progress):
- Tuning the evaluation weights (Texel's tuning maybe)
- Lazy SMP for multi-threading
- Better time management
- Syzygy tablebase support
- Pondering
It's a pre-release — not super strong yet, there are bugs and things to polish. I'm building it mostly for learning and experimenting, but I'd love to get feedback and ideas.
Repo: https://github.com/ExxDreamerCode/Ember
If anyone wants to test it or has suggestions, I'd really appreciate it. Thanks!