Why this project matters
A chess engine compresses a surprising amount of systems engineering into one codebase. Small mistakes can corrupt board state, destabilize concurrent search, weaken evaluation, break protocol clients, or make performance results meaningless. A strong engine therefore needs more than a clever search loop: it needs disciplined machinery around every change.
Engine architecture
- Bitboard board representation with legal move generation and make/unmake paths.
- Alpha-beta and quiescence search, transposition tables, move ordering, and multithreaded time management.
- Classical and NNUE evaluation paths, Syzygy endgame support, and opening-book integration.
- UCI engine operation plus Direct3D/ImGui desktop and WebAssembly/browser targets.
- Scalar, AVX2, and AVX-512 build paths alongside CUDA-assisted training tooling.
Validation machinery
The repository treats correctness and repeatability as product features. Test coverage spans perft, make/unmake invariants, fuzzing, protocol behavior, concurrency, evaluation, endgames, performance regressions, and multiple compiler and instruction-set configurations. Cute Chess match automation and SPRT-style comparisons provide evidence for engine-strength changes instead of relying on intuition.
Development approach
AI-assisted tools accelerate research, implementation, repository-scale analysis, and refactoring. Architecture, integration, reproducible builds, test gates, profiling, and measured match results remain the acceptance criteria. That combination lets the project move quickly without pretending generated code is self-validating.
Technologies
Outcome
AOM-Chess demonstrates the kind of work I enjoy most: a difficult technical core, substantial supporting infrastructure, fast iteration, hard validation gates, and enough cross-layer complexity to reward persistence.