Halcyon is a command line program and is not meant to be used directly by the user. Instead add it as an engine in a UCI-supported GUI such as Cute Chess, Scid, or Arena.
The following options are supported:
| Option | Description | Default | Minimum | Maximum |
|---|---|---|---|---|
| Hash | Size of the hash table in MiB | 16 | 1 | 16384 |
| Contempt | Contempt factor in centipawns | 0 | -1000 | 1000 |
The following UCI commands are supported:
uci: Tell the engine to use the UCI protocol.ucinewgame: Sent when the next search is from a different game.isready: Wait until the engine is ready for input.position: Sets the current board state.startpos [moves [move]...]: Use the starting position and apply moves.fen <fen> [moves [move]...]: Use a FEN board state and apply moves.
go: Start evaluating the position.depth <depth>: Maximum depth to search.movetime <ms>: How long to search for.wtime <ms>: How much time white has remaining.btime <ms>: How much time black has remaining.winc <ms>: How much increment white has each turn.binc <ms>: How much increment black has each turn.perft <depth>: Run perft instead of evaluation.
stop: Stop evaluating the position and return the best move.setoption: Sets a customizable option (listed above).name <name>: Case-sensitive option name.value <value>: New value for the option.
quit: Exit the program.
Halcyon also supports some custom commands:
print: Prints the current board position.seval: Prints the static evaluation of the position.gettune: Prints the values of all tunable parameters.settune [value]...: Sets the values of tunable parameters.datagen: Generates self-play games.<output>: File to write to.<positions>: Total number of positions to generate.<depth>: Maximum depth to search to for each position.<time>: Maximum time to search each position in milliseconds.<best ply>: Ply to start using best moves instead of random moves.<max ply>: Maximum ply before starting a new game.
This project uses CMake and has only been tested with GCC on Linux and MinGW-w64 on Windows. Other compilers are not guaranteed to work. Not all combinations have been testing, so it is possible that some operating systems and/or architectures may require modifications to the project to compile.
The following x86 instruction set extension options are available:
NONEPOPCNTBMI2AVX2AVX512
If CMake cannot determine your operating system, you can manually assign it
with -DEXE_OS=<os>. CPU architecture can be assigned with
-DEXE_ARCH=<arch>. Neither of these options affect the build and are only for
file naming.
To build, do the following:
cd Build
cmake .. -DCPU_EXT=<ext>
makeTo build, do the following:
cd Build
cmake .. -G "MinGW Makefiles" -DCPU_EXT=<ext> -DSTATIC_THREADS=1
mingw32-make.exe