74 lines
3.4 KiB
Markdown
74 lines
3.4 KiB
Markdown
|
|
# Chessistics — Prototype Roadmap
|
||
|
|
|
||
|
|
## Phase 1: Core solvability (DONE)
|
||
|
|
|
||
|
|
- Black Box Sim pattern: commands self-apply via `DoApply()`/`AssertApplicationConditions()`
|
||
|
|
- 3 piece types: Rook (orthogonal range 2), Bishop (diagonal range 2), Knight (L-jump)
|
||
|
|
- Relay chain mechanic with shared relay points (collision-free alternating)
|
||
|
|
- Transfer system: production → pieces → demands, 4-adjacency, participation tracking
|
||
|
|
- Victory/defeat: all demands met vs deadline expired
|
||
|
|
- 57 tests passing: unit, solvability, full-level (Levels 1-3)
|
||
|
|
|
||
|
|
### Key findings from Phase 1
|
||
|
|
|
||
|
|
- **Transfer direction bug fixed**: receiver priority in piece-to-piece transfers now
|
||
|
|
prefers pieces farther from production (pushes cargo forward, not backward).
|
||
|
|
- **GDD stock corrections**: Level 2 needs 6R+1B (GDD had 4R+1B), Level 3 simplified
|
||
|
|
to single cargo type with 6R+1K (GDD had 4R+1B+2K for dual-cargo, which is infeasible).
|
||
|
|
- **Cross-route contamination**: TransferResolver has no cargo-type filtering — adjacent
|
||
|
|
pieces from different routes transfer cargo regardless of type. On a 6x6 board, two
|
||
|
|
diagonal routes cannot avoid cross-adjacency. Dual-cargo levels require engine support.
|
||
|
|
|
||
|
|
## Phase 2: Cargo-type aware transfers
|
||
|
|
|
||
|
|
**Goal**: Enable multi-route, multi-cargo-type levels on small boards.
|
||
|
|
|
||
|
|
- Add optional cargo-type filter to pieces (or routes), so a piece configured for Wood
|
||
|
|
ignores adjacent Stone and vice-versa.
|
||
|
|
- Alternative: transfer resolver checks if cargo type matches the demand reachable from
|
||
|
|
the receiver's relay chain (more complex, automatic).
|
||
|
|
- Simplest approach: production only gives to pieces whose relay chain leads toward a
|
||
|
|
compatible demand. Requires route/chain tracking.
|
||
|
|
- Test: reintroduce Level 3 dual-cargo variant (Wood + Stone crossing 6x6 board with
|
||
|
|
L-shaped wall).
|
||
|
|
|
||
|
|
## Phase 3: Surplus stock and puzzle difficulty tuning
|
||
|
|
|
||
|
|
**Goal**: Levels give more pieces than the minimum, creating genuine puzzle space.
|
||
|
|
|
||
|
|
- With forward-preferring transfers working, longer chains are viable.
|
||
|
|
- Design levels where the player has choice: multiple valid solutions with different
|
||
|
|
efficiency scores (PiecesUsed, TurnsTaken, CellsOccupied).
|
||
|
|
- Add scoring/star system based on Metrics.
|
||
|
|
- Levels 4-6: increasing board size (8x8, 10x10), more complex wall layouts, multiple
|
||
|
|
productions and demands.
|
||
|
|
|
||
|
|
## Phase 4: New piece — Pion (Pawn)
|
||
|
|
|
||
|
|
**Goal**: Add a one-directional piece for asymmetric relay constraints.
|
||
|
|
|
||
|
|
- Pion moves forward only (one direction, range 1).
|
||
|
|
- Cheap to place (low piece cost if scoring is added).
|
||
|
|
- Creates interesting constraints: must plan direction of cargo flow.
|
||
|
|
- Test levels specifically designed around Pion usage.
|
||
|
|
|
||
|
|
## Phase 5: Network levels and Dame (Queen)
|
||
|
|
|
||
|
|
**Goal**: Open-ended logistics puzzles with interconnected supply networks.
|
||
|
|
|
||
|
|
- Multiple productions feeding multiple demands through shared infrastructure.
|
||
|
|
- Dame piece: combines Rook + Bishop movement (range 2, all 8 directions).
|
||
|
|
- Powerful but expensive — forces cost/benefit tradeoffs.
|
||
|
|
- Larger boards (12x12+) with complex wall configurations.
|
||
|
|
- Potential for player-designed levels (level editor data format).
|
||
|
|
|
||
|
|
## Phase 6: Godot integration
|
||
|
|
|
||
|
|
**Goal**: Playable visual prototype.
|
||
|
|
|
||
|
|
- Board renderer: grid, walls, buildings, pieces.
|
||
|
|
- Drag-and-drop piece placement during Edit phase.
|
||
|
|
- Step/play/pause simulation controls.
|
||
|
|
- Event visualization: cargo movement, transfers, delivery animations.
|
||
|
|
- Victory/defeat screens with Metrics display.
|