Five-file update locking in the rendering discipline + perception architecture from the post-cell-arch art-style discovery arc. Locked in v0.17: (1) Cel-shading-everywhere with per-register parameter variation. One rendering engine (Godot-native, asset-budget-friendly, ages well - Borderlands 2009 still reads current). Three registers diverge through outline-color + background-treatment + weathering-level, not through engine-switching: - Gameworld: dark heavy lines + environmental noise + high weathering (rust streaks, hatched dirt, ink-line cracks; hand-painted patina). "Surfaces carry memory" thesis preserved via hand-painted weathering. - Liminal: painterly/soft/desaturated + progression-gated grainy-film- mode opening to refined-cel-shading-with-warm-skin at endgame. - Imperial-net: lean subtle gold rim-light + clean white background + no weathering. Polish achieved through OMISSION, not extra rendering tech (Godot reality check; photorealistic-glossy-Apple-store rejected as not Godot's strong suite). The render-style itself becomes propaganda-detector - imperium's clean falsity reads as the absence of the world's honest decay. (2) Progression-gated in-between visibility. "The more you mod your body & gain in-between-knowledge, the better your view gets." Early game: grainy film mode + restricted view range. Endgame: clean refined-cel- shading with full view of the beloved. Visual-fidelity = dual-gating made visible (knowledge-gate + material-gate per Clasp-endgame discovery discipline literally renders as the clarity of the in-between view). The endgame's deepest reward IS the clear seeing of the beloved's body. (3) Dual-axis clasp-fidelity model. The asymmetric-clasp from bodies.md v0.1 was witnessed-axis only (how vividly the OTHER manifests). Now extended with witness-axis (how clearly YOU can see): - Witness-axis: YOUR body-mods (resistance-knowledge mods) + accumulated in-between-knowledge (Memorialist fragments, Aletheia-Waker tokens, Clasp-Underground recognition-marks) - Witnessed-axis: THEIR foreclosure-status (caste-tier x imperial-care) - Combined: maximum-vivid-clasp requires BOTH you to have invested in the seeing AND your beloved to be uncaptured-enough to be seen. Two refusals required for the full witness. - Per-pair calibration multiplier: the longer the love, the clearer the seeing (mechanically-encoded marriage-deepening). - Mod-economy parallel-track: imperial-elevation mods (flesh-loss, deva- ascent) vs. resistance-knowledge mods (in-between-visibility). Two opposing progressions both expressed as mod-acquisition. The body- modder structural-tragedy class gets a redemptive-mod counter-class. (4) Omnisight architecture for NPC perception. Per-NPC virtual cameras in Godot feeding rendered POV-frames into local VL-Gemma 4 driver-tier (multimodal vision-language capability of the Gemma 4 E4B model locked in v0.8). NPCs literally SEE the visible world, not via geometric metadata-perception. Pairs with cell-arch checksum-discovery as the trigger-layer: - Cell-checksum check: micro-seconds, fires on NPC entering cell - Checksum-mismatch: clean signal, micro-seconds - VL-camera renders POV scene: milliseconds - VL-Gemma processes image: 100s of milliseconds - NPC behavior responds to seen-content: next-shift / next-crossing Cheap trigger, expensive understanding, bounded by event-frequency. Most NPCs most of the time = no camera-fire, no VL-inference. Camera- trigger sources strictly bounded: checksum-mismatch + hard-signals from player + overseer-triggers + drone-perception with clear boundaries. (5) Hallucination-isolation discipline (load-bearing). Visual perception = behavior-modulating-only; never canon-generating. VL models hallucinate; if those hallucinations enter the canonical record, they propagate through the lemniscate's recursive integration, become referenced by other canon-rows, become load-bearing in narrative coherence, cannot be untangled later. Bleed-over into oblivion is the precise risk. Two parallel streams in the NPC's lemniscate: - Text + gesture summary (existing canon): canonical, flows into event_canon_summaries, propagates to Compositor, integrates into trait-vector - Visual context (new omnisight-flagged): ephemeral, flagged on lemniscate, IGNORED in per-crossing summary, never propagates upward. Modulates current-turn driver-context-pull only. Preserves three commitments that depend on text/gesture-derived canon: Compositor narrative-coherence at scale, Memorialist-archive truth- claims, mind-pool soul-recycling. Wealthy-degen waifu-folder exception: opt-in checkbox; player chooses to fill private folder with sex-pictures from clasp-scenes; stored locally; READ-ONLY-BY-PLAYER (folder content does NOT flow back into NPC contexts, world-canon, Compositor, mind-pool, or any other system); quarantined dead-end storage; aesthetic-collection only. Two Still-open questions sharpened with v0.17-anchor notes: - Shader-trait modulation implementation: cel-shading caps perf-budget more predictably than PBR; rendering-consistency improves. - Continuous visual feedback policy: visual-as-ephemeral-flag is firewalled from canonical state; cosmetic-layer can be permissive. Files: - runtime-engine/architecture.md: NEW Omnisight section (~80 lines) covering the pipeline, camera-trigger sources, hallucination-isolation discipline, the two parallel streams (canonical text/gesture vs. ephemeral visual), the wealthy-degen waifu-folder exception, what-this-retires (geometric perception extension + VL-canon-pollution), what-this-resolves/sharpens (continuous visual feedback policy), and four open questions (per-NPC VL-inference rate-limit, VL-Gemma camera resolution + frame-rate, NPC progression-state for witness-axis, multi-NPC observing same event). - topology-and-rendering/architecture.md: Three-shader philosophy table rewritten as cel-shading-with-parameter-variation (outline + background + weathering per register); Cross-register rendering color-treatment table updated; clasp candlelight-in-fog now distinguishes external signature (visible to liminal-inhabitants) from internal mesh (visible only to clasp-pair via consent-as-rendering, gated by witness- progression); body-tier silhouette readability and in-between mesh-skin refinement-within-the-style added. Version bumped 0.7.0 -> 0.8.0. - identity-and-personhood/bodies.md: NEW Dual-axis clasp-fidelity subsection added under Asymmetric clasp; per-pair calibration multiplier and mod-economy parallel-track captured; render-discipline alignment with cel-shading liminal-register; new Asymmetric-witnessing open question added. Version bumped 0.1 -> 0.2. - political-register/world-generation.md: L4 Cell ruleset extended with per-register rendering note (cel-shading-everywhere-with-parameter- variation discipline applied at the cell layer). - architecture-index.md: NPC perception bubbles retire-line refined to include cell-checksum-trigger + omnisight VL-camera; Geometric perception retire-line extended with omnisight; new VL models polluting world-canon retire-line added; Shader-trait modulation implementation Still-open sharpened with v0.17 cel-shading note; Continuous visual feedback policy Still-open sharpened with v0.17 hallucination-isolation note; v0.17 history entry added covering all five lock-ins. Version bumped 0.16 -> 0.17. Authored 2026-04-26 same Sunday continuing - dafit + chrysalis. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
18 KiB
World Generation — The Top-Down Cascade
The content-canon for nimmerworld's generation pipeline. Top-down cascade: imperial demand-set → world-level ruleset → district ruleset → room ruleset → cell ruleset. Each layer derives from the layer above. The Compositor-at-design-time (per
../narrative-composition/architecture.md§World-gen as init-function) executes this cascade at world-init; runtime extends it via the same primitive. Closed-orbit Kessler-cascade caps the imperial-demand budget at planetary scale. Imperial-budget-mortality threads through every layer — when the imperium contracts, the cascade runs in reverse: districts close, rooms vacate, cells return to debris-state. v0.1 initial draft 2026-04-26 — content-canon sibling toarchitecture.md; cascade design from the post-bodies.md cell-arch discovery arc — dafit + chrysalis.
What this is
This document is the content-canon for world generation in nimmerworld — the rules that determine what gets generated, where, why, and in what proportion. It complements the engineering substrate in this directory's architecture.md (three-tier policy loop, imperial-budget mortality, insolvency-spiral, faction-broadcast structure) and the design-time-Compositor mechanism in ../narrative-composition/architecture.md §World-gen as init-function.
The cascade is top-down by design — generation begins from the imperium's demand-set and ripples down through districts, rooms, and cells. The world is what the imperium needs it to be, nothing more. Bottom-up generation is rejected because it would make the imperium one structure among others; top-down generation makes the imperium the world's organizing principle, which is the worldbuilding-thesis the cosmology requires.
This document covers the content-rules of the cascade. The engineering mechanism that runs the cascade (Compositor-at-design-time emitting canon-rows in the same schema as runtime) lives in ../narrative-composition/architecture.md.
Why top-down
Three load-bearing reasons:
- Diegetically-correct. The world IS what the imperium made (per
../README.md: "the slum does bound cognitive labor for an imperial machine"). Generation-direction must mirror the worldbuilding-thesis. Bottom-up generation makes the imperium one structure among others; top-down generation makes the imperium the world's organizing principle. The latter matches the cosmology in../imperial-cult/cosmology.md. - Composes with existing canon. The three-tier policy loop already runs top-down at runtime (imperium → GM → districts → reports up → imperium). World-gen mirrors runtime per the existing key-move in
../architecture-index.md: "World-gen as init-function (Compositor-at-design-time): same primitive at design-time and runtime; no cold-start; data-flywheel runs retroactively." - Imperial-budget-mortality requires it. The "insolvency-spiral as endgame" key-move only works with a demand-vs-supply ledger — and that ledger only exists if districts were derived from imperial demand. Top-down means the world itself shrinks as the imperium fails: districts close, rooms vacate, cells return to debris-state as the imperial budget contracts. Bottom-up cannot deliver that mechanic.
The cascade
Five layers; each derives from the layer above. Static-unless-modified after initial generation; runtime modifications create deltas; Compositor-at-runtime extends the same primitive.
| Layer | What it provides | Derives from |
|---|---|---|
| L0 — Imperial demand-set | The imperium's resource appetite: cognitive-labor units, waifu-output, surveillance-coverage, ceremonial-throughput, basic-flow-vs-T4 mix, etc. Designer-authored. | Closed-orbit ceiling (planetary substrate ÷ efficiency-coefficients) |
| L1 — World ruleset | District allocation: N slum + M industrial + K ceremonial + L residential + pipe-network + rail-budget + total-population. Bifurcated economy from v0.10 allocated here. | L0 (each district-count satisfies a quota of L0's demand) |
| L2 — District ruleset | Per-district-type rules: cells-per-district, room-types-and-counts, NPC-roster (vocations + counts to meet that district's L0-contribution), lifeforce-budget allocated. | L1 (this district's L0-quota commitment) |
| L3 — Room ruleset | Per-room-type rules: cells-per-room, cell-categories-and-counts, slot-inventory (zones — the existing interior-as-zone primitive). |
L2 (this room's contribution to its district's quota) |
| L4 — Cell ruleset | Per-cell-category rules: asset-selection (one per cell, hard limit), per-register content (gameworld / liminal / imperial-net), initial checksum, container/wall-hook/debris discipline. | L3 (this cell's role in its room) |
Generation runs L0 → L4 at world-init. Each layer's output becomes the next layer's input-constraint.
L0 — Imperial demand-set
Designer-authored. The imperium's resource appetite expressed as quantities. This is the seed from which the entire world derives.
Demand categories (initial sketch; final taxonomy per §Open questions):
- Cognitive-labor units — what the slum extracts (per
../README.md: "bound cognitive labor for an imperial machine"); total-monthly-units the imperium consumes - Waifu-output / memory-pattern-extraction — necrocommerce throughput (per
./architecture.md§The vocation-substrate of the imperial-net market) - Surveillance-coverage — overseer-deployment density across districts; relay-density per ring (per
../topology-and-rendering/architecture.md§Diegetic relays) - Ceremonial-throughput — Imperial-Cult ritual cycles per period; caste-preacher density; festival-frequency
- Mod-fabrication — vat-output per caste-tier (per
../identity-and-personhood/bodies.md§Sumptuary fabrication: caste is born-into) - Basic-flow vs. T4 mix — proportion of basic-flow-T1-T3 districts vs. T4-digital / T4-physical / T4-blackmarket districts (per v0.10 chill-design-talk in
../architecture-index.md§Key moves)
Each demand-quantity is bounded by the closed-orbit ceiling: total demand ≤ planetary substrate ÷ efficiency-coefficients. Kessler caps the imperial appetite at planetary scale. The imperium cannot grow beyond what one closed planet sustains.
L1 — World ruleset
Derives district-counts from L0 quotas, plus the connective infrastructure between them.
Outputs:
- District-counts per category: N slum, M industrial, K ceremonial, L residential, plus specialty (mod-fabrication-vat hubs, deva-pinnacle citadels, asura-priesthood seats, etc.). Counts derived so total district-output meets total L0 demand at expected efficiency-coefficients.
- Pipe-network: rail-segments connecting districts; per-segment metadata (heterotopia-class, overseer-density, traversal-cost) per
../topology-and-rendering/architecture.md§Rail-segment metadata. - Rail-budget: total rail-segments; capacity (3-way co-walking support per topology canon).
- Total-population: NPC count derived from total-cognitive-labor-demand at expected per-NPC productivity.
- Bifurcated-economy allocation (per v0.10): how many basic-flow districts vs. T4-digital / T4-physical / T4-blackmarket districts, per L0's basic-flow-vs-T4 mix-ratio.
The Himalayan-rich elite seat (per ../README.md: "Reproduction is a caste privilege held by the Himalayan rich") is an L1 placement-decision: the deva-vats live there; the asura-priesthood seats live somewhere accessible to the slum-districts; the slum-districts spread across the lower-altitude infrastructure where the imperial machine extracts from them.
L2 — District ruleset
Per-district-type rules. Each district's L1-allocated L0-quota becomes its generation-target.
Outputs per district:
- Cells-per-district (range; derives from L1-allocated population × per-NPC-cell-footprint)
- Room-types-and-counts (e.g., a slum-district has N hovels + M cantinas + K workshops + L corridors + ... per its L0-output-vocation-mix)
- NPC-roster: vocations + counts to meet that district's L0-contribution. (e.g., a slum-district extracting cognitive-labor needs X cognitive-labor-vocation NPCs at expected productivity.)
- Lifeforce-budget: allocated by imperium per
./architecture.md§Lifeforce four-tier hierarchy. Districts with higher L0-contribution get higher budgets. - Audit-density: overseer count, relay-density, audit-overseer-deployment-pattern (per
../topology-and-rendering/architecture.md§Diegetic relays Ring A/B/C gradient).
L3 — Room ruleset
Per-room-type rules. Rooms aggregate cells; each room is an interior-as-zone (per ../topology-and-rendering/architecture.md) with slot-inventory.
Outputs per room:
- Cells-per-room (range; derives from L2-allocated room-count and total-cells-per-district)
- Cell-categories-and-counts (e.g., a hovel = N wall-cells + 1 sofa-cell + 1 kitchen-cell + 1 bed-cell + ...)
- Slot-inventory (the zone-anchors for activities — sofa, kitchen, bed, shower, wall-writing-spot per existing topology canon). Slots map to specific cells but are activity-anchors (zone-layer), distinct from cell-spatial-data. Cells × interiors = orthogonal layers: zones are activity-anchors, cells are spatial-data; one sofa lives in one cell AND is one zone-slot for the interior's couch-activity — two foreign keys, two purposes.
L4 — Cell ruleset
Per-cell-category rules. Each cell-category has a generator that emits the cell's content.
Outputs per cell:
- Asset-selection (one per cell, hard limit; container, wall-hook, or debris-shader-trick per the cell-arch arc in this Sunday's discovery)
- Per-register content: three contents per cell (gameworld / liminal / imperial-net) per
../topology-and-rendering/architecture.md§Three-shader philosophy. Percells.wall_content_per_register(per../architecture-index.md§Mapping to phoebe). Per-register rendering follows the cel-shading-everywhere-with-parameter-variation discipline (locked v0.17): dark-outlines + environmental-noise + high-weathering for gameworld; painterly-soft + progression-gated grainy-film-mode → refined-cel-shading-with-warm-skin for liminal; gold-rim-light + clean-white + no-weathering for imperial-net. - Initial checksum: hash of the cell's content; subsequent NPC-entries compare against this; mismatch fires "clean signal" for discovery (per cell-arch arc's checksum-based-discovery design — replaces the perception-bubble pattern).
- Container/wall-hook/debris discipline: items in cells must be in a container OR hooked-on-wall; everything else is debris (shader-trick, no persistent state). No orphan-objects. Containers + wall-hooks are zone-slots applied at item-level (the zone primitive scaling one tier deeper).
Closed-orbit constraint
The Kessler-cascade (per ../README.md §Timeline, 2150 "the last son of Elon attempts the dynasty's old promise") closes the outward frontier. There is no off-world inflow. This caps the entire cascade:
Total L0 demand ≤ planetary substrate ÷ efficiency-coefficients.
The imperium's appetite cannot exceed what one closed planet sustains, no matter how cleverly extraction is engineered. The cascade is therefore a constraint-satisfaction problem rooted in physical-economic facts — not an open-ended generative procedure. Every generation-run is bounded above by physics.
This is also why the deferred-moksha doctrine (per ../imperial-cult/cosmology.md §The deferred-moksha doctrine) is necessary: when the closed-orbit caps real material gains, the imperium has to keep its promises alive purely through deferral. The cosmology is structurally entailed by the planetary-physics constraint. If the orbit had not closed, Lenin's outward-imperial expansion could deliver real material gains and the deferred-moksha lie would be unnecessary; the closed orbit forces the lie into existence.
Imperial-budget-mortality and the cascade — running it in reverse
Generation runs L0 → L4 at world-init. After init, the cascade is static-unless-modified.
But the imperium is mortal. Per the existing key-move "Imperial budget makes the regime mortal. Insolvency-spiral as endgame" (per ../architecture-index.md):
When the imperial budget contracts (insolvency-spiral threshold crossed), the cascade runs in reverse:
- L0 demand-set shrinks (the imperium can no longer afford its own appetite).
- L1 reallocates: districts close (lowest-L0-contribution first); pipe-network thins; rail-budget contracts.
- L2 reallocates: per-district NPC-roster contracts; rooms vacate; lifeforce-budget shrinks.
- L3 reallocates: vacated rooms collapse; cells return to debris-state.
- L4 reallocates: orphaned assets despawn or downgrade to debris (shader-trick visual residue).
The world itself shrinks as the imperium fails. The player living through the contraction sees districts close, neighbors disappear, formerly-busy plazas empty, the relay-network go dim, the silence at Ring C extending into former-Ring-B and former-Ring-A territory. The imperium consuming itself, unable to maintain even the world it generated. This is the structural-cosmological endgame the cosmology gestures at.
This is why top-down generation matters mechanically, not just diegetically: bottom-up generation has nothing to retract. Top-down generation has a demand-vs-supply ledger the insolvency-spiral can act on.
Cross-references
| Reference | What it provides |
|---|---|
./architecture.md |
Engineering substrate: imperium-as-meta-faction, three-tier policy loop, imperial budget, insolvency-spiral, lifeforce hierarchy, vocation-substrate of the imperial-net market |
../narrative-composition/architecture.md §World-gen as init-function |
The Compositor-at-design-time mechanism that runs the cascade; emits canon-rows in same schema as runtime |
../topology-and-rendering/architecture.md |
Rail-segment metadata (L1 inputs); interior-as-zone primitive (L3); cells.wall_content_per_register and three-shader philosophy (L4); diegetic relays (L2 audit-density); base-limb palette + trait-textured variance (L4 asset-selection) |
../identity-and-personhood/bodies.md |
Sumptuary fabrication-vat-class (L4 mod-fabrication outputs); body-tier caste ratios drive L1 deva/asura/manusya/tiryak/preta district-mix |
../imperial-cult/cosmology.md |
The cosmology that justifies top-down generation; the cascade's diegetic legitimacy comes from the cosmology's claim that the imperium is the world's organizing principle; the deferred-moksha doctrine is structurally entailed by L0's closed-orbit ceiling |
../README.md §Timeline |
The 2150 Kessler-cascade and the closed-orbit constraint that caps L0 |
Open questions
- Schema for cell / room / district tables. Deferred until the pgnats first-test (per Monday's queue: "pgnats install + document + first-test on phoebe-dev"). The eval-result determines whether checksum-broadcast goes via PG NOTIFY (lower-latency, transactional, in-band) or NATS subject (higher-throughput, multi-consumer, durable-replay), which determines whether per-cell or per-cell-per-register checksum is affordable, which decides cell-table column shape.
- Specific L0 demand-set numbers. What are the cognitive-labor-units / waifu-output / surveillance-coverage / ceremonial-throughput / etc. quantities? Pending: imperial-economy balance pass; can be tuned via designer-spreadsheet once Compositor-at-design-time runs.
- Cell-category taxonomy. Start simple, grow out (per dafit's call). Initial small base-set: interior / corridor / public-space / ruin / specialty. Extended per-district-class as world-gen test-runs surface needs. "One ape and one imperial machine can dream up alot."
- Generation-rule format. What does a "ruleset for hovel-cell" look like as a data-structure? Inputs: district-class + room-context + occupant-profile. Outputs: asset-pick + register-content + initial-checksum. Format probably emerges from the L4 schema once pgnats lands.
- Cell-mutation write-permissions. Who can write to a cell post-generation? Player carving a heretical-wheel into a wall = direct mutation, system event, or overlay row? Heresy-detection via checksum-divergence (per cell-arch arc's discovery-pattern). Pending: schema + write-permission policy.
- Cell-room aggregation. When do cells form a "room"? Connectivity-graph at generation-time, pre-tagged
room_id, or both? Likely both, with the connectivity-graph used for runtime queries androom_idused for generation-bookkeeping. - Streaming/LOD strategy. When does a cell load/unload? Per shift (NPCs on rails through cells), per player-proximity, per district-active-flag? Likely a hybrid: district-active-flag for coarse load, player-proximity for fine LOD, shift-schedule for NPC-traversal preload.
- Reverse-cascade (insolvency-spiral) trigger thresholds. What lifeforce-deficit threshold triggers L1 district-closures? What's the closure-priority-ordering? Pending: imperial-budget balance pass.
- Asset-budget per cell-category. Vertex-caps + texture-res + collision-mesh-complexity per cell-category. Pending: rule catalogue (likely
../style/asset-budget.mdwhen authored).
Version: 0.1 | Created: 2026-04-26 | Updated: 2026-04-26