This series of posts go through a high-level overview of how I programmed my chess engine, Otter.
My engine was written fully from scratch in Rust and implements many popular chess engine techniques and algorithms, detailed throughout these posts. The posts generally focus less on the exact code implemented and are more based in the theory of chess engines with some supplementary code snippets included.
If you'd instead like to see exactly how things are written, check out Otter's GitHub repository here!
Representing the board state using bitboards and FEN notation
Generating pseudo-legal and legal moves, along with making/unmaking them
Determining the strength of a position with material value, piece-square tables, and more
Position tree searching using the alpha-beta algorithm, quiesence search, and move ordering
Caching evaluations in transposition tables using Zobrist hashing