A chess engine I made from scratch, with a lot of help from
- The Chess Programming Wiki
- jordanbray's movegen crate
- analog-hors's blog post on magic tables
- Wikipedia
Most of the code is devoted to board representation, move generation, and UCI protocol because that's what I found the most interesting. The board is represented with bitboards and move generation is done with simple magic tables. The search algorithm uses negamax with alpha-beta pruning, and the current evaluation function uses material count and a clone of PeSTO's evaluation function. When (not if!) I improve this more, the evaluation and search will get some upgrades.