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
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
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
Engine:
Search:
Evaluation:
API:
null move pruning
multi threaded search
reach elo 2000
github.io page?
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
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.
Through your choice of means, clone the repository.
git bash example:
git clone --recursive https://github.com/looak/elephant.git
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.
$ mkdir build
$ cd build
$ cmake ..
$ make
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.
Either run the output binary ElephantTest
after build or browse to .\build\
and execute ctest
.
We use SemVer for versioning. For the versions available, see the tags on this repository.
[future-link] https://github.com/looak/elephant/tree/future