Skip to content

Development

kachhy edited this page Mar 12, 2026 · 12 revisions

Board Representation

Axiom uses a bitboard board representation. This means that for every chess piece (white pawns, black knights, etc.) the board stores a single 64 bit integer, where the active bits represent the locations of the pieces.

Attack Generation

Attack generation is done via magic bitboards. We precompute attack tables at engine start to avoid any on-the-fly calculation of attacks during search or performance testing. There are many resources that can explain the workings of magic bitboards, such as this page on the Chess Programming Wiki.

Move Generation

Search

We use an alpha-beta Negamax framework for search.

Transposition Table

We employ statically-sized transposition table to memoize evaluated positions. The table itself is a 3-way associative container, with each slot consisting of 3 entries. Our cache replacement strategy is based on the depth of calculation for the entry and it's last visit time, penalizing entries that were visited longer ago than others, and the weakest entry is replaced. The current cache size is 16MB, however it will become resizable once UCI is fully implemented.

Evaluation

Development

Clone this wiki locally