C++ UCI Chess engine inspired by Stockfish.
- Bitboards and magic bitboard move generation
- UCI protocol
- Search:
- Transposition table with Zobrist hashing
- PVS search
- Aspiration windows and iterative deepening
- Eval pruning
- Razoring
- Adaptive null move pruning
- Futility pruning
- Internal iterative deepening
- Singular extension
- Late move reduction
- Quiescence search with delta pruning
- Evaluation:
- Material
- Piece squares
- Blocked pieces
- Passed pawns
- Weak pawns
- King safety
- Space
- Knights, Bishops, Rooks, Queens
- All perft tests passed
- Pondering
- SEE move ordering
- Download or clone this repository.
- If on windows run the
Scripts/Win-GenProjects.bat
script to generate the Visual Studio 2019 project and solution files.
- Run
Scripts/Win-GenProjects.bat
and build the solution using Visual Studio 2019. - Build outputs are located in the
bin
directory.
- Run
Scripts/Linux-GenProjects.sh
to generate the Makefiles. - Run
make -j<number_of_cores> Boxfish-Cli
to build Boxfish. - Build outputs are located in the
bin
directory.
- Copy
SwigConfig.lua.example
toSwigConfigWindows.lua
orSwigConfigLinux.lua
depending on operating system - Update the relevant information in the config file
- Run the relevant
{os}-GenProjects
script - Build the
Boxfish-Swig
project as you normally would on your operating system (on linux you must useconfig=distshared
orconfig=releaseshared
) - This will generate a
.py
and a shared object file in thebin
directory