UCI Chess Engine
Switch branches/tags
Nothing to show
Clone or download
lucasart SEE tiny speedup
In C, the result of

gain[32] = {value}

is to copy 32 times the value, instead of just once as in

gain[0] = value

which was intended here.

so make the intention clear, and the code slightly faster too.
Latest commit 71c1b7f Nov 9, 2018
Failed to load latest commit information.
src SEE tiny speedup Nov 9, 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.