A Chess Engine written in Rust .

Overview

Kelp

Rust-CI

Kelp

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.

Play Against It

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.

Example

Example

Installation

Kelp Binary can be downloaded from Releases page for Windows and Linux.

Build

cargo build --release

About

Board

  • 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.

Search

  • 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

Evaluation

  • Piece Square Tables
  • Tapered Eval
  • Basic King Safety
  • Mobility & Basic Mop Up Evaluation
  • Passed Pawns, Isolated Pawns, Doubled Pawns

TODO

  • Pawn Structure
  • Endgame Evaluation
  • Better King Safety and Pawn Shield
  • Better Mobility
  • Better Mop Up Evaluation
  • fix threefold repetition completely (sometimes it doesn't work)
  • fix bad evaluation and moves (sometimes it makes bad moves)
  • Opening Book
  • Better Move Ordering using hash ordering
  • Refactor code and make modules private
  • Complete Library support
  • Better Time Management
  • Integrate Syzygy Endgame Tablebases
  • Integrate Stockfish's NNUE

Tests

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

References & Resources

Resources that helped me a lot in making this engine.

License

Kelp is licensed under the GNU General Public License v3.0. See LICENSE for details.

You might also like...
Play jungle chess on the linux terminal.
Play jungle chess on the linux terminal.

Jungle-Chess This is my first project written in Rust. Happy for contributors and feedback! The code is dirty. Play Jungle Chess on an Emoji-Enabled L

An (experimental) chess tactics trainer with spaced repetition
An (experimental) chess tactics trainer with spaced repetition

better-tactics A chess tactics trainer that with spaced repetition. New puzzles will be shown to you from the lichess puzzle db, according to your cal

Minecraft-esque voxel engine prototype made with the bevy game engine. Pending bevy 0.6 release to undergo a full rewrite.
Minecraft-esque voxel engine prototype made with the bevy game engine. Pending bevy 0.6 release to undergo a full rewrite.

vx_bevy A voxel engine prototype made using the Bevy game engine. Goals and features Very basic worldgen Animated chunk loading (ala cube world) Optim

A no-frills Tetris implementation written in Rust with the Piston game engine, and Rodio for music.
A no-frills Tetris implementation written in Rust with the Piston game engine, and Rodio for music.

rustris A no-frills Tetris implementation written in Rust with the Piston game engine, and Rodio for music. (C) 2020 Ben Cantrick. This code is distri

Rustcraft is a simple Minecraft engine written in rust using wgpu.
Rustcraft is a simple Minecraft engine written in rust using wgpu.

Rustcraft is a simple Minecraft engine written in rust using wgpu.

A feature-rich, production-ready, general purpose 2D/3D game engine written in Rust with a scene editor.
A feature-rich, production-ready, general purpose 2D/3D game engine written in Rust with a scene editor.

A feature-rich, production-ready, general purpose 2D/3D game engine written in Rust with a scene editor.

A game of snake written in Rust using the Bevy game engine, targeting WebGL2

Snake using the Bevy Game Engine Prerequisites cargo install cargo-make Build and serve WASM version Set your local ip address in Makefile.toml (loca

My first Real-Time 3D Game Engine learning project written in Rust.

EyeEngine-Rust FOA, sry for my poor English. What is Eye Engine? Eye Engine is my first Real-Time 3D Game Engine learning project. There are two editi

A simple Minecraft written in Rust with the Piston game engine
A simple Minecraft written in Rust with the Piston game engine

hematite A simple Minecraft written in Rust with the Piston game engine How To Open a World This method is only for personal use. Never distribute cop

Owner
Gautam
Gautam
Pleco is a chess Engine & Library derived from Stockfish, written entirely in Rust

Pleco Pleco is a chess Engine & Library derived from Stockfish, written entirely in Rust. This project is split into two crates, pleco, which contains

Stephen Fleischman 225 Dec 18, 2022
A basic web assembly chess engine written in rust.

This library is a basic implementation of a chess min-max algorithm with alpha-beta pruning (Algorithm Info). It is designed to be compiled down to WebAssembly and used for web applications.

null 2 Nov 25, 2022
A Chess Engine written in Rust that runs natively and on the web!

About The Project chess-rs is a Chess Engine written from scratch in Rust that runs natively and on web! Live Demo: https://parthpant.github.io/chess-

Parth Pant 109 Apr 6, 2023
A Chess Engine written in Rust .

Kelp 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 U

Gautam 5 Sep 3, 2023
A dependency-free chess engine library built to run anywhere.

♔chess-engine♚ A dependency-free chess engine library built to run anywhere. Demo | Docs | Contact Me Written in Rust ?? ?? Why write a Chess engine?

adam mcdaniel 355 Dec 26, 2022
Stockfish/ - UCI chess engine

Overview Stockfish is a free, powerful UCI chess engine derived from Glaurung 2.1. Stockfish is not a complete chess program and requires a UCI-compat

null 7.5k Jan 8, 2023
A rust chess implementation using a neural network scoring function built on huggingface/candle + rust + wasm

Rusty Chess What is it? Rusty Chess aims to be a high quality embeddable chess engine that runs entirely locally in the browser (no backend required).

Gareth 3 Nov 3, 2023
Yet another shape chess game in Rust.

shape_chesss_in_rust Yet another shape chess game in Rust. Why the implementation is so slow? The main reason is performance of Vector iteration is ve

Simon Lee 1 Apr 10, 2022
Chess implemented entirely in the Rust and TS type systems.

Type System Chess This repo contains chess implemented entirely in the (stable) Rust and Typescript type systems. Both languages feature turing comple

null 170 Jul 12, 2023
Opening randomizer for Chess

chess-randomizer chess-randomizer is a simple opening randomizer written in Rust using WASM and the Lichess API. To build the project, you need Rust a

null 1 Jan 31, 2022