--- title: "World Generation Architecture Workshop" description: "Design the procedural world generation pipeline — from Rust server layout generation to Godot client rendering. Covers urban, rural, wilderness, and station interior zones." type: workshop status: complete agents: "TYRE, GESTALT, NIGEL, MIRI, OZZIE" --- # Workshop Brief — World Generation Architecture **To:** TYRE, GESTALT, NIGEL, MIRI, OZZIE **From:** Jeroen ## The problem We need a procedural generation pipeline that creates explorable locations — station interiors, settlements, rural villages, wilderness areas, industrial zones. The server generates the layout (Rust/bevy_ecs), the client renders it (Godot 3D isometric). No location is hand-authored — everything comes from the generator with cultural, economic, and narrative constraints. ## Constraints - Server-authoritative (D-010, D-020) — generation logic in Rust, client renders from snapshot data - Chunk-based streaming (D-096) — only load what's near the player - Simulation tiers (D-097) — Active/Background/State-saved/Ungenerated - Tile-grid foundation — server works in 2D tile coordinates, client renders 3D - Must handle z-levels (D-148 confirms multi-height structures) - Toon shader aesthetic — all assets go through our shader pipeline - Assets from Poly Haven (CC0) and Quaternius — run through toon shader ## Zone types to generate 1. **Station interiors** — corridors, modules, docking rings, residential blocks, commercial areas 2. **Urban/port zones** — streets, buildings, markets, docking facilities 3. **Rural villages** — scattered buildings, fields, paths, natural terrain 4. **Wilderness** — forests, terrain, water bodies, cave entrances 5. **Industrial** — factories, extraction sites, refineries, warehouses ## Reference implementations to study These are Godot plugins studied for patterns — the generation itself happens in Rust. | Reference | What to study | Relevance | |---|---|---| | [CityCrafter3D](https://github.com/immaculate-lift-studio/CityCrafter3D) | Road networks, building placement, district zoning, lot subdivision | Urban zones | | [Chunk Manager](https://github.com/repulobalna/chunk_manager) | Runtime chunk load/unload, LOD tiers, async generation, memory budget | Streaming infrastructure | | [Retro Terrain](https://github.com/NickToony/gd-retroterrain) | Tile-based 3D terrain, terrain edge transitions, height variation, water | Wilderness/rural zones | | [Spatial Gardener](https://github.com/dreadpon/godot_spatial_gardener) | Procedural vegetation placement, density controls, collision avoidance, LOD | Wilderness population | | [GridMapLayer](https://github.com/Caaz/grid-map-layer) | 2D tile rules → 3D grid rendering, autotiling | Client-side tile rendering | | [Block-based Procedural Map](https://godotengine.org/asset-library/asset/2698) | Perlin noise, seed determinism, chunk loading patterns | Terrain generation | | [PathMesh3D](https://github.com/iiMidknightii/PathMesh3D) | Extrude 2D profiles along paths (pipes, cables, corridors) | Station interior detail | | [DeformableMesh](https://github.com/cloudofoz/godot-deformablemesh) | Runtime mesh deformation for variety from shared assets | Environmental variation | | [Poly Haven](https://polyhaven.com) | CC0 3D models, textures, HDRIs | Environment asset sourcing | | [SunshineClouds](https://github.com/Bonkahe/SunshineClouds) | Cloud shadow dappling on ground surfaces | Exterior zone atmosphere (borrow the ground shadow shader, skip the sky) | ## Questions to resolve 1. **What data does the server send?** Tile palette + grid + object placement? Or higher-level "room type + seed" that the client expands? 2. **How are buildings generated?** Wave function collapse? L-systems? Grammar-based? Template stamping with variation? 3. **How does the client render tiles?** GridMapLayer autotiling? Direct mesh placement? Hybrid? 4. **How do z-levels work visually?** Transparency of upper floors? Cutaway? Layer toggle? 5. **What's the minimum viable generator?** What ships in v0.2 vs what's future? 6. **How do cultural constraints flow into generation?** Corridor heritage → architectural style → tile palette selection? 7. **How does the generator handle interiors vs exteriors?** Same pipeline or separate? ## This workshop does NOT produce - Working code - A locked technology choice - Implementation tickets (those come after) It produces an architecture document with the data flow, algorithm choices, and client-server boundary defined.