Chess engine: Gargantua 1.0 NNUE
Author: Claudio M. Camacho
v.1.0
Gargantua is a UCI chess engine derived from [Chess0](https://github.com/mkd/chess0), and inspired by Code Monkey King's [BBC](https://github.com/maksimKorzh/bbc).
Gargantua's current approximate ELO rating is around ~3100,
Gargantua's current approximate ELO rating is around ~3100,
# Files
This distribution of Gargantua consists of the following files:
- [README.md](https://github.com/mkd/gargantua/blob/master/README.md), the file
you are currently reading.
- [copying.txt](https://github.com/mkd/gargantua/blob/master/copying.txt), a
text file containing the GNU General Public License version 3.
- [TODO](https://github.com/mkd/gargantua/blob/master/TODO), a list of
improvements and future features (i.e., a backlog).
- [Changelog](https://github.com/mkd/gargantua/blob/master/Changelog), a readable
list of changes introduced in every version.
- [src](https://github.com/mkd/gargantua/blob/master/src), a subdirectory
containing the full source code, including a Makefile that can be used
to compile Gargantua.
- [src/nn-eba324f53044.nnue](https://github.com/mkd/gargantua/blob/master/src/nn-eba324f53044.nnue),
a neural network from Stockfish used for heuristic evaluation purposes.
- [src/benchmark.py](https://github.com/mkd/gargantua/blob/master/src/benchmark.py),
a simple script written in Python3 that tests many different chess positions
using the python-chess UCI library, telling the speed of search, nodes and
time to complete the tests. The script is engine-agnostic, and it can be
used to benchmark any UCI chess engine.
# Using Gargantua
Thanks to the [UCI protocol](http://wbec-ridderkerk.nl/html/UCIProtocol.html),
you can use Gargantua with your favorite chess GUI.
Chess GUI applications use the UCI protocol to communicate with the engine, so
you can analyze your games, play against it or even run a computer chess
tournament from your own computer.
I personally use [ScidvsMac](http://scidvspc.sourceforge.net/) (a version
of ScidvsPC for Mac) to test Gargantua. There's a ton of free chess graphical
interfaces for UCI chess engines, just pick your favorite one.
Gargantua also has a few built-in commands that are not officially part of the
UCI protocol. These commands are used for debugging or testing. Here's a short
list:
- d: display the current position on the chess board
- eval: show the NNUE static evaluation of the current position
- flip: flip the view of the chess board when printing a position
- moves: print a list of all pseudo-legal moves
- smoves: print the list of available moves, sorted from best to worst
# Implementation
Gargantua is implemented mainly in C++, leveraging the STL as much as possible.
However, there are many routines and data structures that are written in
pure C language for performance reasons.
Gargantua relies on Stockfish' neural networks (NNUE) to evaluate the score
of a given position. This is based on
[Daniel Shawul's NNUE-probe implementation](https://github.com/dshawul/nnue-probe).
In order to ensure a proper behavior, you need to make sure the neural network
file (i.e., nn-eba324f53044.nnue) is in the current directory of execution. This
also means you must configure the path to Gargantua in your GUI, so that it can
find the neural network evaluation file. Otherwise, the engine will play random
moves.
Comments
Post a Comment