diff --git a/docs/workshops/generator-architecture/workshop-brief.md b/docs/workshops/generator-architecture/workshop-brief.md new file mode 100644 index 000000000..c0fe4c87e --- /dev/null +++ b/docs/workshops/generator-architecture/workshop-brief.md @@ -0,0 +1,142 @@ +# Generator Architecture Workshop Brief + +**Goal:** Establish the top-down procedural generator pipeline architecture — from geography down to individual chunk fill — that will power the 300-world model. Produce a D-record defining generator primitives, the spatial hierarchy, and the sub-chunk building system. +**Ticket:** #562 (story, parent: #50 Chunk-based Map System) +**Priority:** MEDIUM — prerequisite to #144 (Chunk generation system), Sprint 21+ target +**Participants:** Gestalt (systems design), Tyre (architecture), Miri (worldbuilding), Araminta (spatial/visual), Nigel (replayability/procedural gen), Qatux (docs), SI (tickets) +**Source:** Station District Layout Workshop (#153, Round 3), lead directive + +--- + +## Context + +The v0.1 Transit District is hand-authored. The long-game goal is 300 procedurally generated worlds. The question this workshop must answer is: **what is the generator's architecture — top to bottom?** + +The lead has identified a top-down pipeline model inspired by Cities Skylines: + +``` +Geography + → Infrastructure (transport nodes, utilities) + → Amenities & Services + → Population (extrapolated from capacity) + → Zoning + → Block generation + → Chunk fill (individual buildings and spaces) +``` + +This workshop also addresses a related structural question: how does the **sub-chunk quarter system** provide building variety within template-driven generation? A chunk divides into 4 quarters that can merge, split, leave gaps, or host shacks/gardens — producing L-shapes, mixed-use footprints, and irregular structures without breaking the generator's regularity. + +Multi-block structures (train stations, government buildings, stadiums, parks, farmland) span multiple chunks and must be accounted for in the block and zoning passes before individual chunks are filled. + +**Starting point:** Q-036 asks whether the district skeleton (social sites, NPC slots, triangle templates, economic function, access topology) is the atomic generator output unit. D-025 defines social sites as atomic template units for hand-authoring. This workshop must reconcile the two. + +**What is already decided:** +- D-025: Social site / functional cluster as atomic template unit (hand-authoring) +- D-036: Sova Transit District as v0.1 setting (hand-authored) +- D-012: Chunk-based map system (bounded for v0.1, borderless-capable) +- #153 D-record (Station District Layout Workshop): district/block/chunk spatial hierarchy, spatial dimensions, access topology gradient — reference `decisions/content.md` for the confirmed record + +**What is still open:** +- Q-036: District skeleton as generator output (assigned Tyre, Gestalt) +- Q-037: Generator development pipeline / phased production model (assigned SI, Tyre) +- Q-039: Procedural gate topology generation + +--- + +## Key Questions to Resolve + +### 1. Pipeline Architecture + +1. Is the Cities Skylines top-down model (geography → zoning → chunk fill) the right architecture for The Settled Reach, or does the game's station-centric setting require a different ordering? +2. What is the correct sequence — does population follow zoning, or precede it? +3. How does the pipeline handle stations (Sova) vs. planet-side cities vs. orbital installations? Same pipeline, different geography inputs? +4. Where do political/economic conditions enter the pipeline? (Faction control, prosperity tier, trade routes) +5. At what pipeline stage are the triangle templates (D-025) instantiated? + +### 2. Spatial Hierarchy and Primitives + +6. What are the canonical spatial units in the hierarchy? (Region → District → Block → Chunk → Sub-chunk quarter? Or different names/levels?) +7. What is the confirmed chunk size in sim tiles? (Reference #153 D-record — the district workshop decided this) +8. What is the block size — how many chunks per block? +9. What is the district size — how many blocks per district? +10. How does the sub-chunk quarter system work mechanically? (Quarter = ¼ chunk, can merge 2×2, 1×2, L-shape. What are the merge rules? Who decides fill vs. empty?) + +### 3. Multi-Block Structures + +11. How are multi-block structures (train stations, stadiums, government complexes, parks) represented in the generator? (Reserved footprint at the zoning pass? Pre-baked templates that claim N×M blocks?) +12. What is the maximum multi-block footprint — is there a cap? +13. How do multi-block structures interact with neighbouring chunk fills at their edges? +14. Can a multi-block structure span district boundaries? + +### 4. District Skeleton as Generator Output (Q-036) + +15. Is the district skeleton (social site arrangement, NPC slot allocation, triangle template selection, access topology) the correct atomic output of the district-generation stage? +16. How does the district skeleton output interact with D-025's social site templates? (Generator selects and arranges templates, not individual tiles?) +17. What inputs does the district skeleton generator consume? (Zoning type, population density, faction control, economic function, transport adjacency) +18. What does the district skeleton output look like as a data structure? (List of social site slots with positions, access tier, NPC capacity, template tag) + +### 5. Replayability and Variation + +19. What variation levers exist at each pipeline stage? (Seed, faction weights, economic tier, historical events?) +20. How does the sub-chunk quarter system produce perceived variety across multiple playthroughs? +21. How are "flavour" structures (shacks, gardens, market stalls) assigned to unclaimed quarter space? +22. What prevents two generated districts from feeling identical even if they share the same zoning type? + +### 6. v0.1 / Generator Boundary + +23. Where does the v0.1 hand-authored content end and the generator begin? What stub interfaces must v0.1 leave behind? +24. Which pipeline stages are in scope for implementation, and which are deferred (per Q-037's phased production model)? +25. Does the v0.1 Transit District need to be expressible as generator output (for validation), or is it purely an authored ground-truth? + +--- + +## Input Documents + +| Document | What to read | Why | +|----------|-------------|-----| +| `decisions/content.md` | D-025 (social site template), #153 D-record | Generator must compose from these primitives | +| `decisions/scope.md` | D-012 (chunk system), D-036 (Sova setting) | Spatial constraints and v0.1 setting | +| `decisions/questions.md` | Q-036 (district skeleton), Q-037 (generator pipeline), Q-039 (gate topology) | Open questions this workshop resolves | +| `docs/design/sova-station-profile.md` | District types, 6-district layout | The worldbuilding context the generator must reproduce | +| `docs/design/spatial-layout-terminal-v01.md` | Terminal layout | Example of a hand-authored chunk cluster | +| `docs/design/spatial-layout-bar-v01.md` | Bar layout | Example of a hand-authored chunk cluster | +| `decisions/architecture.md` | D-014 (tile-based movement), D-012 (chunk loading) | Technical constraints on spatial units | +| `docs/workshops/content-architecture/content-architecture-workshop-brief.md` | Three-tier content pipeline | How templates and procedural generation already relate | + +--- + +## Expected Outputs + +1. **D-record: Generator Architecture** — confirmed in `decisions/architecture.md`: + - Top-down pipeline stages (named and sequenced) + - Spatial hierarchy (named levels, tile dimensions per level) + - Sub-chunk quarter system rules (merge/split/fill logic) + - Multi-block structure reservation protocol + - District skeleton as generator output: data structure definition + - v0.1 / generator boundary (what's hand-authored, what's stubbed) + +2. **Resolution of Q-036:** District skeleton as atomic generator output — yes/no + formal definition if yes + +3. **Resolution of Q-037 scope:** Which pipeline phases land in which version window (v0.1 stub, v0.2–0.5 template expansion, v0.6–0.10 generator development) + +4. **Tickets:** Implementation tasks derived from the D-record (chunk data structure update, district skeleton schema, zoning pass stub, block generation stub) + +--- + +## Workshop Format + +Three rounds: + +**Round 1 — Domain Inventory** +Each participant reviews existing decisions and states what their domain requires from the generator architecture. +- Gestalt: what gameplay loops does the generator need to support? What must it guarantee (e.g., always a surveillance chokepoint, always a quiet zone)? +- Tyre: what are the hard technical constraints on chunk size, hierarchy depth, and data structure for the district skeleton? +- Miri: how does the generator reproduce the cultural/economic variation of 300 worlds? What lore-level inputs drive the pipeline? +- Araminta: what visual coherence constraints does chunk fill need to satisfy? How does the sub-chunk quarter system produce plausible streetscapes? +- Nigel: what variation and replayability guarantees must the generator provide? What makes two generated districts feel different? + +**Round 2 — Pipeline Proposals** +Propose concrete pipeline architecture. Name the stages, define the spatial hierarchy levels with tile dimensions, describe the district skeleton data structure. Respond to each other's domain requirements from Round 1. + +**Round 3 — Convergence** +Resolve conflicts, agree on the pipeline sequence, lock spatial hierarchy dimensions, define the district skeleton output format, set the v0.1/generator boundary. Draft the D-record.