looak / elephant

a uci chess engine
GNU General Public License v3.0
3 stars 0 forks source link
chess-engine
               88                        88
               88                        88                                   ,d
               88                        88                                   88
     ,adPPYba, 88  ,adPPYba, 8b,dPPYba,  88,dPPYba,  ,adPPYYba, 8b,dPPYba,  MM88MMM
    a8P_____88 88 a8P_____88 88P'    °8a 88P'    °8a °°     `Y8 88P'   `°8a   88
    8PP°°°°°°° 88 8PP°°°°°°° 88       d8 88       88 ,adPPPPP88 88       88   88
    °8b,   ,aa 88 °8b,   ,aa 88b,   ,a8° 88       88 88,    ,88 88       88   88,
     `°Ybbd8°' 88  `°Ybbd8°' 88`YbbdP°'  88       88 `°8bbdP°Y8 88       88   °Y888
                             88
                             88                                                °j°m

                                                                 a uci chess engine
# [![Build][build-badge]][build-link] [![Test][test-badge]][test-link]
[![latest][release-badge]][release-link] [![commits][commits-badge]][commits-link] ![commit-activity-badge]
[![LICENSE][license-badge]][license-link] a work in progress uci chess engine.

I got frustrated about how bad I was at playing chess, so I decided to write myself a chess engine and let the computer do it for me! Not intending to use it against unaware non engine players. This whole project initially started with my old engine Gambit.

Has become more of a obsession lately, and a play ground to try out some C++ I wouldn't write at work.

First commit of Gambit was done on September the 13th, 2017. Since then I retired that engine and all my effort is going into elephant.

Taking a test driven approach and implemented compatibilty with OpenBench, of which I have a instance running locally.

Reading a lot on https://talkchess.com and the endless resource https://chessprogramming.org amongst other resources on the internet. Community on Engine Programmer discord & OpenBench Discord have been very great and helpful.

Been very inspired by Ciekce's Polaris zzzzz151's Starzix Analog Hors' blog Sebastian Lague's Coding Adventures

Performance

Version moves p/s
sngl core
moves p/s
mul core
nodes p/s
sngl core
lichess.org
future ~19.5 million N/A ~1.65 million +~150elo/testing
v0.6.5 ~16.45 million N/A ~1.24 million ~1500 elo
v0.6.1 ~20 million N/A ~1.97 million N/A
v0.5.0 ~11 million N/A ~1.65 million ~1100 elo
v0.4.0 ~5 million ~110 million best case ~600k ~1350 elo
v0.2.0-alpha.1 ~4 million ~35 million best case ~250k ~1350 elo
v0.1.0-alpha.1 ~2.5 million N/A N/A N/A

all performance numbers are from running on my local machine, AMD Ryzen 9 5950x

Features

Goals & todo

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

Prerequisites

This is a C++20 project and I'm not distributing any binaries, so to run the engine you need to compile it yourself.

Currently requiering a compiler which compiles C++20.

Installing and Building

Through your choice of means, clone the repository.

git bash example:

git clone --recursive https://github.com/looak/elephant.git

Windows

Easiest way to get running on Windows is installing Visual Studio Code and extensions for cmake projects, or Visual Studio Community and opening the initial CMakeLists.txt.

Linux

$ mkdir build
$ cd build
$ cmake ..
$ make

Running Elephant Gambit

Interfacing with elephant can nativly be done through ElephantCLI. As of v0.4.0 supports UCI protocol and you can interface it with your Chess GUI of choice. Personally, I have been using Arena & CuteChess. Every so often I'll host the engine locally and one can play against it on lichess.org.

Running the tests

Either run the output binary ElephantTest after build or browse to .\build\ and execute ctest.

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

Authors

[future-link] https://github.com/looak/elephant/tree/future