Using the engine in a chess program

Chess Challenge Engine speaks the UCI protocol, so it works in any chess program that can load UCI engines.

Windows binary

  1. Download chess-challenge-engine-1.0.0-win64.zip and extract it to a folder of your choice (for example C:\Engines\ChessChallenge).
  2. In your chess program, add a new UCI engine and select ChessChallengeEngine.exe from that folder:
    • Arena: Engines → Install New Engine… → choose the .exe → UCI.
    • Cute Chess: Tools → Settings → Engines → + → Command: the .exe, Protocol: UCI.
    • BanksiaGUI: Engines → Add → choose the .exe.
  3. The engine is a single self-extracting file, so its first start can take a few seconds. Programs that wait for uciok / readyok handle this automatically.

Time controls and limits

The engine accepts go movetime, go depth, go nodes, go wtime/btime (with winc/binc and movestogo) and go infinite followed by stop. It is a pure-Python engine that searches a few hundred positions per second, so give it generous thinking time.

Running from source

Requires Python 3.11 (64-bit) and python-chess 1.11.2.

pip install -r requirements.txt
python uci_engine.py

Then type UCI commands, for example:

uci
isready
position startpos moves e2e4
go movetime 5000

To load the source version into a chess program that needs an executable, point it at a small batch file such as:

@echo off
python "C:\Engines\ChessChallenge\uci_engine.py"

Supported commands

uci, isready, ucinewgame, position [startpos | fen <fen>] [moves …], go …, stop, quit. setoption, debug, register and ponderhit are accepted and ignored. After each search the engine prints one info depth … score … nodes … time … pv … line and then bestmove.