(% (((( ((((((( (((((( %( ((((((#((( &(((((((((((((((( (((((((((((((((((((((( (((((((((((//(((((( (((((( %((((((((/**********/((((((( ((((((//**** ****/(((((((((# ((((((((* #((((((( *******/( (((((((( (((( %((( ((((((( #((((( ((((((( ( (((((((((((( ( (((((( ((((((((((((((((( ((((((( ((((((((((((((((((( (((((( ( %((((((((((((((((((((( ((( %(( (((((((((((((((((((((((& ( (((((((((((((((((((((((((((((( (((((((((((((((((((((((((((((( %((((((((((((((((% ((((((((((((((((((((((((((((( (((((((((((((((((((((((((((# ((((((((((( (((((((((((( (((((((( (((((((((((((((((((( (((((((((((( (((((( %((((((((((((((((((((((((((((((((((( %((((((((( (((((((((((((((((((((((((((((((( (((( (((((((((( (((((((( (((((((((((((((((( ((((((( %((((((((((((( ((((((( ((((((& ((((((((((( #((((((( ((((((( (((((((( &(((((((((((((((((((((
Lishex (codename 1F98A)
A UCI chess-engine built in C++.
Features
- Universal Chess Interface (UCI) compatible.
- Hybrid board representation
- Iterative deepening Negamax framework
- Alpha-Beta pruning
- Principal variation search
- Aspiration windows with PVS
- Quiescence search
- Most Valuable Victim Least Valuable Attacker (MVV-LVA) heuristic
- Killer move heuristic
- History heuristic
- Null-move pruning
- Transposition tables to store results of previously performed searches (based on Zobrist hashes)
- Late move reduction
- Futility pruning
- Razoring
- Basic king safety (king danger zone, pawn shield, pawn storm)
- Check extension
- Tapered PeSTO's Piece-square tables for static position evaluation interpolated between different game stages
- Static Exchange Evaluation (SEE) to detect losing captures
- Mobility scores
- Parameter fine-tuning (based on Texel's tuning method) - stochastically optimized with a basic implementation of Adam (in mini-batch mode)
- Doxygen-generated documentation
How to
Lishex does not come with its own grapical user interface (GUI). Instead, it implements the UCI protocol making it compatible with most popular chess GUIs such as:
- Arena Chess GUI (free)
- Chessbase (paid)
- Cutechess (free)
- BanksiaGUI (free)
- Nibbler (free).
TODOs
Lishex is a work in progress and there are many features that I would like to implement in the future. These include:- More search extensions: extending search depth in specific subtrees to combat the horizon effect
- LazySMP for parallel searching on multiple threads
- More sophisticated king safety (including queen distance, tropism)
- Endgame tablebase probing
- Extension limiting
- Smarter time control logic, estimated time to finish search
- Chess960 (Fisher Random Chess) support
- NNUE
Source code
You can find the project repository here.