Kaola is a UCI chess engine. It's in it's early stages, these are some of the features that have already been implemented:
- "Fancy" magic bitboards
- PEXT magic hashing on x86 machines supportin the
bmi2
instruction set - alpha beta search
This is not a standalone engine, you need a frontend that implements the UCI interface. If you don't know any chess GUI's, PyChess is a good one.
To aid with debugging, the engine supports some commands not defined in the UCI specification
Command | Description |
---|---|
board | display the current board state |
eval | return the evaluation of the current position |
moves | print all legal moves in the current position |
perft [depth] | benchmark movegen in current position |
Kaola builds on zig version 0.10.0
. Other versions may work, but likely won't due to the rapid
development of the language.
The custom panic handler is disabled until #12935 is closed.
A neat trick for debugging is creating a file with a sequence of uci commands and then
cat commands.txt | ./zig-out/bin/kaola
.
Run all unit tests using zig build test
.
During development, i looked at various other engines and stole some neat ideas from them. These include:
I also want to thank Maksim Korzh for his Youtube series on bitboard engines which initially inspired me to build my own engine.