zig-chess/docs/learning-roadmap.md
2026-05-14 14:22:07 -08:00

1.7 KiB

Learning roadmap

Phase 0: Zig environment and language model

  • Install/verify Zig and editor tooling.
  • Learn zig build, tests, allocators, slices, error unions, defer, comptime, and C interop.
  • Keep notes on concepts that differ from Go/Rust/C.

Phase 1: Rendering bootstrap

Goal: finish the copied Vulkan/GLFW path well enough to draw and present simple 2D shapes.

Learning targets:

  • Vulkan setup order and resource lifetimes.
  • Swapchain, render pass, framebuffers, command buffers, synchronization.
  • Coordinate transforms for a 2D board.
  • Frame timing and redraw strategies.

Phase 2: Chess model

Learning targets:

  • Board coordinates and piece representation.
  • Move structs and game-state snapshots.
  • Rule edge cases: castling, en passant, promotion, check, checkmate, stalemate.
  • Tests for correctness before UI complexity.

Phase 3: Interactive board UI

Learning targets:

  • Mapping mouse/window coordinates to squares.
  • Selection state and legal-move highlighting.
  • Separating rendering state from game rules.
  • Debug overlays for learning and testing.

Phase 4: Notation and validation

Learning targets:

  • FEN import/export.
  • Algebraic notation basics.
  • Perft-style move-generation tests.
  • Golden tests and small fixtures.

Phase 5: Engine/search experiments

Learning targets:

  • Evaluation functions.
  • Minimax/negamax and alpha-beta pruning.
  • Move ordering, transposition tables, and iterative deepening as later topics.
  • Deterministic benchmarks for search changes.

Phase 6: Optimization

Learning targets:

  • Profiling before optimizing.
  • Board representation options: mailbox arrays, 0x88, bitboards.
  • Allocation-free move generation experiments.
  • SIMD/vectorization and cache-aware data layouts where evidence supports it.