A simple chess engine. Because it's fun and because I needed an excuse to get accustomed to Rust.
The wasm
branch is playable online at https://swingbit.github.io/duchess/
- Move generation:
- (done) all standard moves, castling, promotion, check, checkmate, draw
- (missing) en passant
- Check validity of human moves:
- (done) all standard moves, castling, promotion, check, checkmate, draw
- (missing) en passant
- UI:
- (partial) UCI interface (branch
main
. Use with e.g. Arena Chess GUI) - integration with chessboardjs via Wasm compilation (branch
wasm
)
- (partial) UCI interface (branch
- Evaluations and heuristics:
- (done) simple board value based on pieces
- (done) simplified positional evaluation
- (missing) more evaluations
- Search algorithm:
- (done) Minimax
- (done) Negamax
- (done) Negascout
- Optional optimizations:
- (missing) transposition table
- (partial) move ordering
- (missing) more efficient board representations
- Make sure
wasm-pack
is installed - Run
./build.sh
- Run
./server.py
- Open a broser to: http://localhost:8000/duchess.html