Something went wrong. Try again.
A video game where you play as a misaligned AI, deceiving and building power. An experiment in spec-driven development.
Something went wrong. Try again.
4.2 kB
Markdown
at commit e957ce7b
Spec: material render — HD-2D to default quality #
Type: spec
Status: IMPLEMENTED
Status note: implemented 2026-07-08 — the material render is the Bevy
default physical view; F3 flips to the flat sensorium. Debts paid:
fog-gated south-face cutaway (chosen over a steeper pitch by
screenshot comparison), dedicated darkened top caps on all extruded
boxes, palette sweep of the b1 set (door/UPS/HVAC/switch hue-remapped
off the stale purple/teal lair palette), fog contract asserted by a
dev-harness audit (unknown=absent, model=unlit, seen=lit), zoom
bounds tightened to hold the framing floor, and (tile, fog, part)
material pooling with handle swaps (37 pooled handles for ~4600 tile
entities in the audit run). People remain procedural silhouette
billboards pending the cast sprite pass (debt 6, out of scope here).
Prototype findings inventory: wiki/log/2026-07-07-hd2d-prototype.md;
session log: wiki/log/2026-07-08-material-render-default.md.
2026-07-08 flat-materials restyle (flat-materials.md): the texture
language here (tile textures on sides, concrete caps) is superseded
by solid palette color; the structural criteria (cutaway, caps,
framing, fog contract, pooling, default view) were re-verified after
the restyle — fog_audit_3d green, zoom-bound screenshots retaken.
Stage: B1 — The Basement
Constitution: "Two views of one world" via interface/views.md (the
same-frame canvas; this is the real/material treatment),
"Visual identity: clinical gore" (lighting is the mood carrier:
amber machine presence, cold fluorescence, darkness as ignorance),
"Justification and legibility" (the render may not show unearned
facts; readability beats spectacle)
Depends on: views.md (same-frame contract), cursor.md (fog states),
bevy-visual-floor.md (framing floor), the landed F3 toggle
Behavior #
The material render (Camera3d, extruded walls, billboarded sprites, lit) becomes the default physical-view treatment in Bevy once its debts are paid; the flat sensorium render remains the digital-layer treatment and the terminal remains first-class. The prototype's fog contract is law: unknown space is absent geometry, blueprint/remembered surfaces render unlit, only camera-seen surfaces participate in lighting.
The debts (from the prototype findings) #
- South-wall occlusion: walls between the camera and room interiors hide them at the 40 degree pitch. Fix by cutaway (short or faded south faces) or steeper pitch; pick by screenshot comparison.
- Slab tops: extruded boxes reuse wall textures on top faces and read as gray slabs. Top faces get a dedicated treatment (darkened variant or a top-face texture set).
- Stale palettes: the door PNG reads purple under 3D light; sweep tiles for palette debts against the clinical-amber palette.
- Framing: the visual-floor rules (fit-to-known-content, no postage stamp, no void-dominant frame) hold in material mode at all zoom levels.
- Perf: materials pooled by (tile, fog, part) and handle-swapped; no per-tile unique material mutation (prototype finding 5).
- People: the procedural silhouette billboards are placeholders; they read as presence, not identity, until the cast sprite pass — identity stays a panel/menu fact (legibility, not portraiture).
Acceptance criteria #
- Room interiors are readable at default pitch: the chosen occlusion fix (cutaway or pitch) lands with before/after screenshots in the session log.
- Top faces no longer read as untextured slabs (dedicated treatment).
- No stale-palette tiles remain in the b1 set under 3D light (door fixed; sweep recorded).
- The fog contract holds and is asserted: unknown = no geometry, blueprint/remembered = unlit, seen = lit (screenshot or debug-dump verification recorded in the log).
- Framing floor holds in material mode (fit, zoom bounds, no void dominance) — checked at min/default/max zoom.
- Material pooling implemented; tile-count-scaled material churn is gone (no per-tile unique materials in the frame loop).
- Material render becomes the default physical view (F3 still flips to sensorium); README and bevy.md updated; terminal unaffected.