# 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.