Files
settled-reach/docs/workshops/world-generation/BRIEF.md
T
jpmschweitzerandClaude Opus 4.6 e77f66d53a docs(workshops): create world generation workshop brief from Q-077
Q-077 promoted to full workshop brief with 9 reference implementations,
7 key questions, 5 zone types, and agent assignments (Tyre, Gestalt,
Nigel, Miri, Ozzie).

Also: Q-089 through Q-092 filed (starfield, Markov names, event audio,
modular settings menu), make clean-imports target added.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 20:48:19 +01:00

4.3 KiB

title, description, type, status, agents
title description type status agents
World Generation Architecture Workshop Design the procedural world generation pipeline — from Rust server layout generation to Godot client rendering. Covers urban, rural, wilderness, and station interior zones. workshop draft 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 Road networks, building placement, district zoning, lot subdivision Urban zones
Chunk Manager Runtime chunk load/unload, LOD tiers, async generation, memory budget Streaming infrastructure
Retro Terrain Tile-based 3D terrain, terrain edge transitions, height variation, water Wilderness/rural zones
Spatial Gardener Procedural vegetation placement, density controls, collision avoidance, LOD Wilderness population
GridMapLayer 2D tile rules → 3D grid rendering, autotiling Client-side tile rendering
Block-based Procedural Map Perlin noise, seed determinism, chunk loading patterns Terrain generation
PathMesh3D Extrude 2D profiles along paths (pipes, cables, corridors) Station interior detail
DeformableMesh Runtime mesh deformation for variety from shared assets Environmental variation
Poly Haven CC0 3D models, textures, HDRIs Environment asset sourcing

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.