Kelp is a UCI compatible chess engine written in Rust Using standard chess algorithms.
Kelp is work in progress. Currently, it can be used as a UCI engine But evaluation needs a lot of work to be done especially the endgame evaluation.
Lichess:- https://lichess.org/@/KelpBot
Kelp is UCI compatible it should work with any UCI compatible gui, so far kelp has been tested on Pychess, BanskaiGUI, Arena and cutechess.
Kelp Binary can be downloaded from Releases page for Windows and Linux.
cargo build --release
- A bitboard[12] array is used to represent the board. Each piece is mapped to a bitboard.
- standard make/unmake move functions are used, unmake move use move history to unmake instead of copy/take approach.
- Iterative deepening with aspiration windows.
- Negamax with alpha-beta pruning.
- Principal Variation Search.
- Late Move Reduction.
- Null Move Pruning.
- Quiescence Search.
- Transposition Table.
- Move Ordering
- MVV-LVA
- Killer Moves
- History Heuristic
- PV Table
- Piece Square Tables
- Tapered Eval
- Basic King Safety
- Mobility & Basic Mop Up Evaluation
- Passed Pawns, Isolated Pawns, Doubled Pawns
- Better King Safety and Pawn Shield
- Better Mobility
- Better Mop Up Evaluation
- Opening Book
- Integrate Syzygy Endgame Tablebases
- Integrate Stockfish's NNUE
Kelp Implements some basic tests suchs as perft test, fen parsing and incremental update of zobrist hash. Perft results are compared with Perft Results and incremental update of zobrist hash is compared with scratch generation of zobrist hash.
cargo test
Resources that helped me a lot in making this engine.
- Chess Programming Wiki
- Vice by Bluefever Software and corresponfing playlist
- BBC by Code Monkey King and the correspponding playlist
- Pleco Chess Engine
- Chess-rs Chess Engine
- Fruit Chess Engine
- codefish Chess Engine
- TSCP Chess Engine
Kelp is licensed under the GNU General Public License v3.0. See LICENSE for details.