Matthies / RubiChess

Another chess engine
GNU General Public License v3.0
150 stars 16 forks source link

RubiChess

Just another UCI compliant chess engine. Have a look at the ChangeLog for a detailed feature list.

'UCI compliant' means that for best user experience you need a chess GUI like Arena, CuteChess or BanksiaGUI (just to name some free programs) and install RubiChess as an engine in this GUI.

RubiChess development started in 2016 as a private hobby project to practise programming in C++ and to see the engine improving compared to earlier releases. Meanwhile some years later RubiChess got pretty competitive and is listed in most of the rankings and plays a lot of even big tournaments.

I'm still not very good in C++ using a C-style code most of the time but the whole project was and is a lot of fun.

Many thanks to the excellent documentation at https://chessprogramming.org. Also many thanks to Bluefever and his video tutorial https://www.youtube.com/user/BlueFeverSoft/videos A special thank you goes to open source engine Olithink. I had a look at its source code or even two. And while improving RubiChess more and more I looked at several open source engines like Ethereal, Stockfish, Pirarucu, Laser, Koivisto, Berserk, ... Thank you for the great list of engines at http://www.computerchess.org.uk/ccrl/4040/ Not mentioned all the other documentation and tools freely available.

Also a big thank you goes to the guys at http://chess.grantnet.us/ especially to Andrew Grant for running and improving this testing framework and to Bojun Guo (noobpwnftw) for spending all the hardware resources for testing.

NNUE

Starting with version 1.9 RubiChess supports evaluation using NNUE weight files. With version 2.0 NNUE evaluation becomes the default.

Disable the 'Use_NNUE' option for so called handcrafted evaluation.

Use the 'NNUENetpath' option to switch to a different network weight file.

You can download network files from my repository https://github.com/Matthies/NN and put it in the same folder as the executable.

Current default net will be downloaded automatically when compiling the engine and is also included in Windows release packages.

Binaries and hints to build some

I provide release binary packages for Windows x64 only. Depending on the type of your x86-64 CPU you can choose from

You will get a warning at startup if the selected binary doesn't match your CPU or it will just crash.

RubiChess should build successfully on any x64 Linux, on MacOS (x64 and ARM64/M1) and on Raspbian (at least up to Raspi 3 and 4 which I own and tested) using make from inside the src subfolder.

For fastest binaries you should use the Intel icx compiler (based on Clang/LLVM but with Intel's optimizations) and the following build command

make profile-build COMP=icx

or native Clang which is a little bit slower:

make profile-build COMP=clang

You may need to install some additional packages like the Intel compiler (https://www.intel.com/content/www/us/en/developer/articles/tool/oneapi-standalone-components.html#dpcpp-cpp) or clang, lld and llvm and add bin paths of compiler and profiler to your PATH to make this work.

You can also use the (default) gcc/g++ compiler make profile-build which probably works without additional packages but the binaries will be a little bit slower.

Some more notes about compiling (for me and maybe others):

export PATH=$PATH:/Library/Developer/CommandLineTools/usr/bin/

export PATH=~/intel/oneapi/compiler/latest/linux/bin/:~/intel/oneapi/compiler/latest/linux/bin-llvm/:$PATH

make release COMP=icx SDE=~/sde-external-9.14.0-2022-10-25-lin/sde