Captain is a UCI compliant chess engine written in C++. It can work with any chess GUI that supports UCI, although it has only been tested with the Banksia chess GUI.
I have learned a lot from studying other chess engines and projects, including:
- Quad bitboards
- Hyperbola Quintessence and Kogge-Stone for move generation
- Copy-make
- Principal variation search
- Quiescence search
- Delta pruning
- Prune losing captures
- Iterative deepening
- Transposition table
- Check extensions
- Null move pruning
- Late move reductions
- Move ordering
- Transposition table move
- Winning/even captures
- Killer moves
- Quiet moves sorted by history heuristic
- Losing captures
- Piece square tables
- Static exchange evaluation for captures
- Bonuses
- Knight outpost
- Bishop pair
- Rook on open file
- Bishop on open diagonal
- Proximity to enemy king