Catalog · How the catalog works
Yakka
Yakka is a UCI Chess Engine written in Delphi
- ★ 2 on GitHub
Anyone may press Interesting, signed in or not. It helps others find this project.
README
Yakka
Yakka is a Chess Engine written in object pascal (Delphi) that implements the Universal Chess Interface (UCI) protocol.
Target Platform
- Windows 11 x64 Platform
- Command-line, Console Application
- Written in Delphi Object Pascal
- Will run on x86-64 CPU's which support BMI2 and AVX2 instruction set
How To Use
Yakka implements the Universal Chess Interface (UCI) protocol that is compatible with most popular Chess GUIs.
It is recommended to use a Chess GUI application such as Arena, BanksiaGUI or Cute Chess.
Alternatively Yakka can be run as a command line console using UCI commands.
Implemented Engine Options (UCI)
- option name Threads type spin default 1 min 1 max 16
- option name Hash type spin default 64 min 1 max 256
- option name Clear Hash type button
- option name Ponder type check default false
- option name MultiPV type spin default 1 min 1 max 32
- option name SyzygyPath type string default <empty>
- option name OwnBook type check default false
Download
You can download the precompiled Windows executable : 'Yakka v1.6 x64.exe'. This will run on x86-64 CPU's which support the BMI2 and AVX2 instruction sets.
I currently can't provide a LINUX executable, but will investigate this for the next release.
Compilation
To build the engine from source, use Delphi 12.0 Alexandra or later version.
- Import the source files from GitHub repository
- Set Target Platform to Windows 64-bit
- Open Project Resources and Images..., add the following to Resource Files:
- File Name:
Opening_Book_01.txt - Type:
RCDATA - Identifier:
Open_Book - File Name:
NNUE 768→512x2→1 501451147c +50+ gen8 b6.net - Type:
RCDATA - Identifier:
_768x512_x2_gen8_b6
- File Name:
- Build Yakka
Functional Details
- Board Representation and Move Generation
- Bitboard based
- Make/Unmake
- Fully legal move generation
- uses PEXT / PDEP instructions (requires BMI2) for sliding move generation
- Search
- ABDADA parallel search (supports up to 16 search threads)
- Negamax search with Alpha-Beta pruning
- Principal Variation Search (PVS)
- Aspiration windows
- Iterative deepening
- Quiescence Search (QS)
- Transposition table (two buckets with aging)
- Singular Extension
- Selectivity
- Reverse futility pruning
- Recursive null-move forward pruning
- Enhanced forward pruning
- Enhanced Transposition Cut-off (ETC)
- Internal Iterative Deepening (IID)
- Late Move Reduction (LMR)
- Late Move Pruning
- Move Ordering
- Hash move
- Captures (MVV/LVA)
- Static Exchange Evaluation (SEE)
- Killer moves
- Counter move
- History heuristic
- Evaluation
- NNUE net 768>512x2>1 (requires AVX2)
- Opening Book
- Own internal format
- Total Book Positions = 4444 (v1.2)
- Total Book Moves = 6375 (v1.2)
Version History
- Yakka v1.0 - 10th April 2024 Initial release
- Yakka v1.1 - 15th September 2024 Bug fixes and improved playing strength
- Yakka v1.2 - 8th February 2025 Changed evaluation from HCE to NNUE
- Yakka v1.3 - 10th August 2025 Bug fixes, implemented pondering and improved NNUE implementation
- Yakka v1.4 - 11th November 2025 Bug fixes and improved NNUE implementation
- Yakka v1.5 - 22nd January 2026 Strength gain using larger NNUE net and output buckets
- Yakka v1.6 - 23rd September 2026 Implemented syzygy TB, multiPV, and lots of bug fixes
Help & Support
Tested on desktop with Intel Core i9-9900K CPU @ 3.60GHz, Windows 11 x64, using 'Cutechess-cli'
Please let me know of any bugs, compilation-problems or stability issues. Any ideas, comments or suggestions for improvement are always welcome.
License
This project is licenced under the MIT Licence
Future Endeavours (TODO)
In no particular order:
- Linux build
- Improve NNUE net evaluation
- Much experimenting / tweaking / bug fixes

