Since you’re here...

... we have a small favour to ask. More people, like you, are reading and supporting our blog: "Chess Engines Diary". And unlike many other sites and blogs, we made the choice to keep our articles open for all, regardless of where they live or what they can afford to pay.

We hope you will consider supporting us today. We need your support to continue to exist, because good entries are more and more work time. Every reader contribution, however big or small, is so valuable. Support "Chess Engines Diary" even a small amount– and it only takes a minute. Thank you.

============================== My email: jotes@go2.pl



Chess engine: Gargantua 1.0 NNUE


Gargantua - UCI and NNUE engine
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, 


# 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

Popular Posts