Thrawn
Thrawn is a free UCI compliant chess engine that analyzes positions and outputs optimal moves.
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:
Rating/ELO
The Rating of Thrawn is evaluated by CCRL
Compiling Thrawn
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.
Building from source
Run these commands:
git clone https://github.com/feftywacky/Thrawn.git
cd Thrawn
cd src
make # or mingw32-make
To clean the build:
make clean # or mingw32-make clean
Compiling 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 *.cpp
Evaluation:
- Thrawn v2.0 and newer uses NNUE
- Thrawn v1.1 uses handcrafted evaluation
TODO
- [ ] LOTS of general code clean up
- [x] transposition table bug?
- [x] hash move ordering giving worst results bug
- [x] fixed zero evaluation bug
- [ ] nnue incremental update
- [ ] train own nnue
- [ ] opening book table
Features
- NNUE for evaluation
- Various search optimizations
- Bitboard data structure
- Transposition tables
- Time allocation/Control
- Implements UCI protocol
Updates
- no-hashmove reduction
- reverse futility pruning / static null move pruning
- late move pruning
- fifty-move rule + three-fold repetition detection
- NNUE evaluation
- hash move ordering
- razoring pruning
- transposition table / zobrist hashing
- null move pruning
- late move reduction
- iterative deepening (also adjusting aspiration window)
- principal variation search
- move history (quiet and killer)
- quiescence search
- negamax alpha beta search
- piece table evaluation
- uci compliant
- passes perft test! <3
References
General