Thrawn is a free UCI-compliant chess engine. I made this to learn about C++ and performance optmizations.
Thrawn does not include a graphical user interface (GUI) that is required to display a chessboard and to make it easy to input moves. These GUIs are developed independently from Thrawn and are available online. Some recommended GUIs include:
- CuteChess: https://github.com/cutechess/cutechess
- Arena GUI: http://www.playwitharena.de/
- Scid vs PC: https://scidvspc.sourceforge.net/
The rating of Thrawn is evaluated by CCRL
- Thrawn v2.2 ~3000 ELO (SF NNUE)
- Thrawn v2.0: ~2800 ELO (SF NNUE)
- Thrawn v1.1: ~1900 ELO
Version v2.1 and later: supports x64 and ARM chips. Can compile for linux, macos, or windows.
Older verions: only supports x64 and windows compilation.
Ensure you have a gcc compiler version 7.3 or later.
Compiling Thrawn v2.0 and newer:
git clone https://github.com/feftywacky/Thrawn.git
cd Thrawn
cd src
# release build
make # or mingw32-make
# debug build (only available for v3.0 or newer)
make BUILD=debug # or mingw32-make BUILD=debugTo clean the build:
make clean # or mingw32-make cleanCompiling Thrawn v1.1 and older:
git clone https://github.com/feftywacky/Thrawn.git
cd Thrawn
cd src
g++ -std=c++17 -Ofast -flto -o Thrawn *.cppOpen source CLI tool to run matches between chess engines: https://github.com/Disservin/fastchess
- Thrawn v2.0 and newer uses NNUE
- Thrawn v1.1 uses handcrafted evaluation
- More move ordering heuristics (counter moves, history moves etc.)
- Train neural network
- NNUE for evaluation
- Bitboard data structure
- Multithreaded search (Lazy SMP)
- Transposition table
- Time allocation/Control
- UCI protocol
- https://www.chessprogramming.org/Main_Page
- https://github.com/bluefeversoft/vice
- https://github.com/official-stockfish/Stockfish
- https://github.com/mkd/gargantua
- https://hxim.github.io/Stockfish-Evaluation-Guide/
- nnue probe framework: https://github.com/dshawul/nnue-probe
- nnue dataset https://tests.stockfishchess.org/nns