VirgaCE is a UCI-compliant chess engine written in C++14. The motivation for writing it came from a passion for chess that was sparked during the COVID-19 quarantine.
Board Representation:
- 0x88 mailbox board
Search:
- Principal Variation Search (negamax algorithm)
- Iterative Deepening
- Transposition Table
- Zobrist Hashing
- Move Ordering
- Hash move priority
- Killer move heuristic
- MVV/LVA capture sorting
- Pruning
- Futility Pruning
- Reverse Futility Pruning
- Null Move Pruning
- Limited Razoring
- Mate Distance Pruning
- Late Move Reductions
- Quiescense search
- Delta pruning
Evaluation:
- Material
- Piece square tables
- Mobility
- King safety
- Change board representation to bitboards
- SSE and staged move generation
- Create multi-threading framework for parallel search
- Syzygy tablebases
- Add support for NNUE
VirgaCE is best used with an existing chess GUI that supports the UCI framework. Two popular choices include CuteChess and Arena. The program can be used solely through the command line, although intimate knowledge of the UCI protocol is likely required.
I would have been spinning my wheels with this project if it weren't for the assistance of many different communities and individuals, including:
- Chess Programming Wiki
- TalkChess
- /r/chessprogramming (and specifically to u/tsojtsojtsoj for being brilliant)
- Dalton He (thanks for the guidance friend :^) )
- Kieren Pearson
- Mikko Aarnos
- Stockfish
- Harm Geert Muller and Dr. Robert Hyatt