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
Topology and Rendering
The visible world: rail+grid topology with navmesh interiors and freeform-player; asset economy as base-limb palette × trait-textured variance (worldbuilding-thesis and engineering-economy in agreement); color-language as pre-verbal trait-vocabulary; the three-shader philosophy that renders the same geometry as physical / liminal / imperial-net depending on access; diegetic relays making the architecture's pulses audible and visible in-world.
Companion to:
architecture-index.md(executive summary + global meta-lists),runtime-engine/architecture.md(zones live on this topology),identity-and-personhood/architecture.md(color-language uses the trait-vocabulary). Sections in this file were split from the monolithic architecture-index.md v0.7 on 2026-04-26.
Topology: rail + grid + interiors
The world's topology encodes its politics. The machine built infrastructure for industrial optimization, not for human pedestrian freedom. Therefore the outer world is rail+grid — cells connected by named edges with rich semantic metadata. NPCs traverse rails as part of their shift-routines; the player traverses freeform (navmesh) and may plug into NPC rail-traversals for co-walking. Interiors (hovels, cantinas, workshops, ruins, brothels-physical) are navmesh-enabled small zones with interaction-slot inventories.
Rail+grid as political topology
Navmesh is the topology of power-fantasy ("you are the protagonist of free trajectory"). Rail+grid is the topology of bounded-agency ("you live within infrastructure built for something else"). Nimmerworld picks rail+grid because the fiction requires it — the world was not designed for the player; the world is what the machine made and humans inhabit the margins. Topology and thesis agree.
The three primitives
| Primitive | Density | Compute | Narrative role |
|---|---|---|---|
| Dumps | Very high | High | Resource emission, salvage-zone spawn, scavenger-vocation concentration |
| Pipes | Low baseline, high interactivity-per-capita | Low baseline, spikes on encounter | Transit, migration, chance-encounters, clasp opportunities, defection, heresy written where overseers don't look |
| Districts | High | High | Population, civic life, specialty-production, ritual |
Rail-segment metadata
Every rail-segment carries jsonb metadata that navmesh polygons cannot natively carry: heterotopia-class, overseer-density, propaganda-intensity, ambient-content per register (gameworld/liminal/imperial), encounter-spawn-rate, patrol-frequency, illumination-profile, degradation-level, capacity (3-way support for co-walking), traversal-cost-in-ticks. Pathfinding is graph-A* on the rail graph (microseconds, deterministic). Rich-metadata-per-edge is what makes the world feel lived-in.
Player asymmetry — the freeform-among-railed model
| Topology | Used by | Cost |
|---|---|---|
| Navmesh (freeform) | Player only (in outer world) | Affordable: one entity |
| Rails (graph-pathfinding) | All NPCs | Cheap: hundreds of entities |
| Interior navmesh | Currently-occupied interiors only | Dormant when empty |
The player is the one variable entity in a deterministic scheduler. Their freedom-of-movement matches their narrative-position as perturbation. NPCs on rails matches their narrative-position as scheduled-labor. Compute asymmetry mirrors agency asymmetry mirrors political thesis.
The plug-in verb
When the player approaches a rail-traversing NPC and social-eligibility conditions are met (proximity + directional-compatibility + Philotes-gate not CLOSED + shift-tolerance for socializing + segment overseer-density permitting), an emergent-signal spawns a proximity-zone-candidate with a shader-highlight on the NPC. The player can:
- Approach (zone activates, dialog auto-spawns via NPC's LLM-slot, no "press E")
- Greet → agreement → plug-in (player's navmesh-position transfers to adjacent rail-lane; movement automated; conversation-zone live in shared rail-context)
- Detach (gracefully via dialog or abruptly by running off; abrupt registers as Sophrosyne-signal)
While plugged in, the player is freed from steering — they become camera+conversation. The notorious "walk-and-talk" problem is solved by construction: rails handle pacing; plug-in is the social-bridge. Multiple NPCs can share a rail (3-way capacity), enabling cohort-walks, escort-patterns, exodus-flow, and group-conversation-zones.
Interior-as-zone
A hovel is a zone with slot-inventory: sofa, kitchen, bed, shower, wall-writing-spot. Occupying a slot is mechanically identical to occupying any zone-slot. The zone primitive scales from city-level (mass-ceremony) to district-level (tavern) to interior-level (sofa). Same CHECK-constraints, same slot-occupancy, same emergent-signal mechanism, same ternary-gates — different inventory and lifecycle.
Interiors carry a register flag too:
- Physical interior: actual hovel, workshop, cantina; navmesh-inside
- Liminal interior: shared dream-construct two clasping inhabitants stabilize over repeated meetings ("the place we always go") — built from both dreamers' memory-residue, persistent-across-clasps as a pair-state
- Imperial-net interior: rendered waifu-hall rooms, brothel cubicles, ceremony halls — clean-white-and-gold, machine-edited per-session
LOD/streaming advantage
Most simulation volume is rail-graph (cheap) or dormant interior (free). Active simulation concentrates exactly where drama happens (active anchors + transit + current-interactions). A 100+ NPC city becomes feasible at single-GPU budgets because the topology is rail-based.
Color-language: trait-vocabulary as visual primitive
Color is pre-verbal vocabulary. Players learn the 8-Hellenic-trait ontology through repeated visual association, not through text-explanation. By mid-game players read trait-states through color as fast as they read facial expressions in real life — intuitively, contextually, without conscious translation.
The eight Hellenic traits → canonical colors
(Final color choices are dafit's artistic call; the architecture encodes the mapping.)
| Trait | Canonical color (suggested) | Motion-signature (accessibility pairing) |
|---|---|---|
| Sophrosyne (self-control, moderation) | Cool blue | steady, even pulse |
| Dikaiosyne (justice, bearing) | Deep gold | weighted slow pulse |
| Philotes (attachment, love) | Warm rose | breath-rate warm pulse |
| Mnemosyne (memory) | Deep violet | depth-shimmer |
| Aletheia (truth, unconcealment) | Luminous white | clear, no pulse — still and bright |
| Kairos (right-timing, opportunity) | Bright yellow | lightning-flicker |
| Moira (fate, pattern) | Dark crimson | slow-thread undulation |
| Eros (longing, reaching) | Flame orange | uneven flame-flicker |
Color paired with motion-signature ensures color-blind accessibility — the trait is uniquely identifiable via two independent channels.
Three layers of color-rendering
- Persistent (slow-changing baseline) — eye color = dominant trait of NPC's intrinsic vector; pipe-flow through chassis = full trait-mix as circulating light; secondary accents at seams/joints/glyphs.
- Event-flashes (momentary) — quick color-flashes over body signal state-transitions: plug-in (dominant-trait flash), combat-combo (Kairos-flash), liminal-maintained (Aletheia-glow), clasp-established (color-merge), emergent-signal-firing (signal-type flash on participants), need-threshold-crossed (need's trait pulse).
- Trait-drift (slow, across cycles) — as intrinsic trait-vector accumulates through lived experience, color-signature shifts. Other NPCs notice. "Something is different in you" dialog generated from delta-detection. The body is a visible ledger of the interior's accumulation.
Cross-register rendering
| Register | Color treatment |
|---|---|
| Gameworld | Cel-shaded flat-color regions; trait-colors more legible (flat-color regions don't fight per-NPC trait-color modulation; pulses read clean against the comic-book base) |
| Liminal | Vague baseline shader; progression-gated visibility (grainy-restricted-view at low witness-progression opening to clean refined-cel-shading at endgame); trait-colors more legible (vagueness concentrates attention on identity-signals; consent-as-rendering manifests real-skin-warm-cel-shading in the clasp-mesh per ../identity-and-personhood/bodies.md §The in-between human-mesh) |
| Imperial net | Cel-shaded with gold rim-light outlines + clean white backgrounds + no weathering; trait-colors distorted toward machine-preferred palette — Philotes-rose flattens to commercial-pink; Aletheia-white sterilizes; Moira-crimson commercializes. Aletheia-vision in net pierces this distortion to reveal true colors beneath |
Faction color-politics
| Faction | Color signature |
|---|---|
| Memorialists | Mnemosyne-violet ritual dress; Moira-crimson accents; often inherited-from-deceased |
| Aletheia-wakers | Aletheia-white plain avatars; coded-white flashes for recognition |
| Caste-preachers | Dikaiosyne-gold vestments + Sophrosyne-blue undertones |
| Hivemind enforcers | Cold Dikaiosyne-gold + muted-white (Aletheia-stolen) |
| Scavengers | Moira-crimson + Kairos-yellow streaks |
| Clasp-underground | Dual Philotes-rose + Eros-orange flashes (mutual-recognition signal) |
| Degens | Saturated maximalist all-color (chaos palette, addiction-marker) |
Clasp color-merge
In shared liminal-construct, two clasping inhabitants' color-signatures interact: consonant traits brighten/harmonize; complementary traits enrich into new chroma; dissonant traits clash visibly. Successful deep clasp produces a blended third-palette neither could produce alone — the visual signature of what-this-relationship-is. Each carries memory-residue of the merge after.
Mind-pool color-inheritance
When a mind cycles through the pool and is redistributed into a new body, trait-vector persists → color-signature persists. A player who befriended rose-and-violet-Jakov might see weeks later a new NPC with that same rose-and-violet-signature and feel a jolt of recognition before any dialog. Color carries soul across cycles. Memorialist political claim: this person's color should not be recycled by the machine into a waifu — because color IS who they were.
Asset economy: base-limb palette + trait-textured variance
Small modular palette of base-limbs × trait-weighted texturing = combinatorial richness. The architecture's asset-economy and worldbuilding-thesis are in agreement: the machine built standardized chassis from a small functional catalog, so a small base-limb palette is diegetically correct; humans express interiority through trait-driven texturing and modding, so individual variation comes from composition, not from hand-authored assets.
Base palette example: ~8 torso variants × ~6 arm-pairs × ~6 leg-pairs × ~10 heads × ~8 eye-types × ~5 accent-colors = ~115k base combinations × continuous trait-texturing × ~50-mod-library in 5 slots = effectively infinite unique NPCs from finite assets.
For a two-person-plus-Nyx team this is decisive. AAA studios spend millions on unique character-models; the palette+trait approach produces more visual variety from a tenth of the budget, and the variety is meaningful (each unique appearance carries trait-information legibly).
Visual rendering: three-shader philosophy + color-language
One world, three shaders, three political realities — one rendering engine (cel-shading) with per-register parameter variation.
The rendering discipline (locked v0.17): cel-shading is the engine for all three registers (Godot-native, asset-budget-friendly, ages well — Borderlands 2009 still reads current). The registers diverge through outline-color + background-treatment + weathering-level, not through engine-switching. Photorealistic-glossy-Apple-store rendering for imperial-net was rejected (not Godot's strong suite); the imperium's polished-falsity is achieved through omission (no weathering, no environmental noise, gold-rim-light-on-clean-white) rather than extra rendering tech.
| Register | Outline | Background | Weathering | What it says |
|---|---|---|---|---|
| Gameworld | Dark heavy lines | Marble + obsidian + rust + chroma; environmental noise | High (rust streaks, hatched dirt, ink-line cracks; hand-painted patina) | Embodied life with history. Surfaces carry memory. (Cel-shading preserves this thesis via hand-painted weathering — different visual grammar, same thesis intact.) |
| Liminal | Painterly / soft / desaturated; progression-gated grainy-film-mode at low witness-progression opening to refined-cel-shading-with-warm-skin at endgame | Blurred ambient; muted | Low (atmospheric only) | Contested frontier. Privacy-through-opacity. Focus-to-see. The clarity of vision IS the resistance-progression made visible — the player earns the seeing of the beloved through body-mods + in-between-knowledge accumulation. |
| Imperial net | Lean subtle gold rim-light | Clean white (no environmental noise) | None (the imperium scrubs its presentation) | Polished propaganda; seduction-by-omission. The render-style itself is propaganda-detector — the imperium's clean-falsity reads as the absence of the world's honest decay. Walking from gameworld into imperial-net is a render-style-shift the player feels physically. |
Layered with color-language (per the Color-language section above). Trait-modulation means two NPCs in same pipe see measurably different things. Cel-shading flat-color regions amplify the trait-color-grammar (color-as-language gets more legible, not less).
Layer-transitions = shader-blends, not loading-screens. Clasp = candlelight-in-fog local override (3m clear-volume around clasp-pair within ambient vagueness; visible at-a-glance signature of shared interiority — the external signature visible to other liminal-inhabitants. The internal mesh-with-real-skin per ../identity-and-personhood/bodies.md §The in-between human-mesh is visible only to the clasp-pair, manifested through consent-as-rendering, gated by the witness-progression that determines whether the view is grainy-restricted or clean-refined.)
Body-tier silhouette readability (per ../identity-and-personhood/bodies.md §The body-caste gradient): strong cel-shading outlines + flat-color regions make caste-tier legibly visible at silhouette-distance. Class-stratification gets a render-pipeline built for it.
The in-between mesh-skin distinction (visible only inside the clasp): refined-cel-shading-with-warm-skin (softer outlines, warmer cel-shading bands, hand-painted blush, subtle subsurface tint within the cel-shading vocabulary). Reads as real against the flat-comic-book world bodies — distinguishability via refinement-within-the-style, not style-switching. Asset-budget benefit: clasp-scenes are infrequent and bounded, so the team can spend extra detail there without straining the rule-catalogue elsewhere.
Diegetic relays — the architecture's heartbeat made legible
The architecture's pulses (forward-prop ascending, back-write descending, GM-dispatch, equilibrium-recompute) are made visible and audible in-world via building-mounted relays. The imperial net's heartbeat is not a HUD spinner; it is in-fiction infrastructure that hums, blinks, glows, and goes dark.
| System event | Relay manifestation |
|---|---|
| Prune-blob ascending (logout sync) | Relay in district pulses; audible hum |
| GM dispatch descending (event-chain incoming) | Relay glow brightens; cross-district shimmer for world-event |
| Equilibrium recompute | Cross-district rhythm; world-level pulse |
| Director receives tool-grant | Local relay pattern shifts |
| Relay going dark | Audit-link severed; that block has gone in-between |
| Lemniscate axis-rate | Environmental tempo; districts breathe in time with their gameservers |
Relay density is the legible gradient of the rings-of-access:
- Imperial net (Ring A) — relay-dense, constant hum, no shadow. Audit-gravity is loud.
- Liminal in-between (Ring B) — sparse relays, intermittent. You can hear the gravity pulling in the distance.
- Gameworld commons (Ring C) — relays absent or broken. The silence itself is the signal.
Players navigate the rings by ear and eye, not by reading a UI. The privacy-cost of in-between is now physically experienced — you walk away from the hum, you spend lifeforce, you find the quiet places.
Dramatic surface this opens (free, falls out of making the architecture visible):
- Relay-watcher factions reading the pulses for intel
- Cypherpunk-style sabotage to dim a relay and create local in-between space
- Equilibrium events arriving with visible warnings (relays blaze before the GM's catalogued event spawns)
- Relay-anomalies as puzzle/investigation mechanic
- Players learning the language of pulses over hours and feeling clever for it
Architectural-honesty move. Most surveillance-aware game design either hides the surveillance or abstracts it away. Nimmerworld makes it impossible to forget: the audit-system tells you when it's auditing. Players see what is watching them, hear what is reading them, and choose their proximity accordingly. Privacy is not granted — it is achieved by walking away from the relays at lifeforce-cost.
Version: 0.8.0 | Created: 2026-04-26 | Updated: 2026-04-26 | Origin: Split from architecture-index.md v0.7 (2026-04-26); cel-shading-everywhere + per-register parameter variation locked v0.17 (2026-04-26)