UCI Chess Engine
Switch branches/tags
Nothing to show
Clone or download
lucasart Align hash entries on Windows
Also fix a warning reported by Mingw while there about potential overflow in

Progress update:

demolito vs demolito_20180301: 3574 - 2111 - 5315  [0.567] 11000
Elo difference: 46.48 +/- 4.66

Testing conditions:

./cutechess-cli \
    -each proto='uci' tc=8+0.08 option.Hash=8 \
    -engine name=$1 cmd=$1 \
    -engine name=$2 cmd=$2 \
    -openings file='./book.epd' format='epd' -repeat \
    -draw movenumber=40 movecount=8 score=20 \
    -resign movecount=3 score=500 \
    -concurrency 7 -rounds 5500 -games 2 -ratinginterval 50 \
    -pgnout $3
Latest commit 949d9f2 Oct 20, 2018
Failed to load latest commit information.
src Align hash entries on Windows Oct 20, 2018
README.md Document code Mar 16, 2018
license Add license Feb 19, 2018
make.sh Use Clang by default Nov 11, 2017



Demolito is a UCI chess engine written in C. As such, it is a command line program, which is not designed to be used directly, but instead through an UCI capable GUI, such as CuteChess or Lucas Chess.


The version number is simply the ISO date of the last commit (ie. YYYY-MM-DD). From time to time, I publish some binaries. Here are the latest ones. If you really want the newest possible one, you'll need to compile yourself (see below).

Engine Strength

Stronger than you, even if you are a GM. But nowhere near the top engines like Stockfish, Houdini, and Komodo.


Using GCC on Linux, type: ./make.sh ./demolito. This will compile the program and run a verification test. You should also be able to compile it on any platform (POSIX or Windows), using a C11 compiler (eg. GCC or Clang). But you'll have to figure out the exact commands for yourself, depending on your compiler, your libc, and your system. No spoon feeding here.

UCI Options

  • Contempt: This is used to score draws by chess rules (such as repetition) in the search. A positive value will avoid draws, and a negative value will seek them.
  • Hash: Size of the main hash table, in MB.
  • Time Buffer: In milliseconds. Provides for extra time to compensate the lag between the UI and the Engine. The default value is probably too low for most GUIs, and only suitable for high performance tools like cutechess-cli.
  • Threads: Number of threads to use for SMP search (default 1 = single threaded search). Please note that SMP search is, by nature, non-deterministic (ie. it's not a bug that SMP search results are not reproducible).
  • UCI_Chess960: enable/disable Chess960 castling rules. Demolito accepts either Shredder-FEN (AHah) or X-FEN (KQkq) notations for castling.