A chess engine written in C during Spring break to help get through Coronavirus quarantine. I've realized I'm not great at chess, so I've tried to pretend I am through this engine (also to practice C). The name comes from a mash of Acqua--meaning water in Italian (tangentially related to the custom of naming chess engines after fish and also the beginning of my last name)--and Scacchi--meaning chess in Italian.
Acquacchi is much better than me (1850-ish Lichess) and seems to consistently beat Fairy Max (1940) on 1+1 time control. So there isn't any rigorous controlled testing, but I would guess it is above 2000 ELO.
- UCI compatible
- Search
- Alpha-Beta Search
- Quiescence Search
- Transposition Table
- Null-move pruning
- Iterative Deepening
- Killer Heuristic, History Heuristic
- Board Structure
- 120-square based
- Limited use of bitboards
- Evaluation
- Piece Square Tables
- Evaluates open files, isolated, and passed pawns
- XBoard Compatible (current XBoard compatability is broken)
- Search
- Parallel Search (Lazy SMP)
- Faster sorting algorithm for move ordering
- Handle PV clearance between moves better
- Principal Variation Search
- Improve Hash Table
- Improve Quiescence Search
- Search Extensions
- Root Move Ordering
- Move Generation
- Bitboard Move Generation
- Evaluation
- Understand Double Pawns
- Better Endgame Evaluation (only endgame evaluation now is King)
- More Efficient Time Management
- Opening Book and Endgame Tablebase
- When Parsing FEN, Use Half-Move Clock and Full-Move Counter
- Fix malloc Errors
Simply run make -f makefile
while in the src
directory.