Files
settled-reach/docs/diagrams/ui/fog-layers.d2
T
jpmschweitzerandClaude Opus 4.6 1e556ccca2 docs(diagrams): add decision diagrams across all domains
16 d2 diagrams covering architecture (IPC bridge, system tiers,
testability, audio bus), data flow (perception, dialogue, eavesdrop
pipelines), entity (knowledge graph, NPC generation, dialogue tags),
state (simulation tiers, movement stances, knowledge confidence), and
UI (HUD layout, interaction flow, fog layers). PNG output for universal
viewer compatibility. Removes test SVG from font debugging.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 11:57:07 +01:00

109 lines
3.8 KiB
Plaintext

# Fog System — Five Layers + Entity Rendering in Fog — D-059
# Shader-based, knowledge-graph-driven. Covers all five fog states
# and the entity types rendered within fogged areas.
vars: {
color-screen: "#1a1e24"
color-panel: "#2a3040"
color-text: "#c8d0e0"
color-nav: "#c8d8f0"
color-stroke: "#333340"
}
direction: right
kg_read: KnowledgeGraph\n(per character — D-041) {
shape: cylinder
style.fill: ${color-panel}
style.stroke: ${color-nav}
style.font-color: ${color-text}
}
fog_layers: Five Fog Layers {
style.fill: ${color-screen}
style.stroke: ${color-nav}
style.font-color: ${color-text}
l1: Layer 1 — Clear (vision cone)\nSoft gradient edge 6-8 sim tiles\n(= 3-4 visual tiles per D-066)\nNo hard line · Darkwood approach {
style.fill: ${color-panel}
style.stroke: ${color-nav}
style.font-color: ${color-text}
style.bold: true
}
l2: Layer 2 — Light Fog (peripheral)\nDesaturated 40-50% · brightness -30%\nAnimated Perlin noise (8-10s cycle)\nD-033 entity colors visible but reduced {
style.fill: ${color-panel}
style.stroke: ${color-stroke}
style.font-color: ${color-text}
}
l3: Layer 3 — Deep Fog (explored)\nNear-monochrome + ~10% zone tint\n(bar=warm dark · hub=cool dark)\nMore pronounced noise (15-20s cycle)\nzone_id from ObserverSnapshot (D-077) {
style.fill: ${color-panel}
style.stroke: ${color-stroke}
style.font-color: ${color-text}
}
l4: Layer 4 — Unexplored (has maps)\nGeometric wireframe outlines\nInsert data aesthetic {
style.fill: ${color-panel}
style.stroke: ${color-stroke}
style.font-color: ${color-text}
}
l5: Layer 5 — Unexplored (no maps)\nSolid near-black\nInformation zero {
style.fill: ${color-screen}
style.stroke: ${color-stroke}
style.font-color: ${color-text}
}
}
fog_entities: Entities in Fog {
style.fill: ${color-screen}
style.stroke: ${color-stroke}
style.font-color: ${color-text}
sound_ping: Sound Ping\n2-3 concentric expanding rings\n(sonar-style · insert white-blue)\nLoud=3 rings bright · quiet=1 ring faint\nFade over 1.5s {
style.fill: ${color-panel}
style.stroke: ${color-nav}
style.font-color: ${color-text}
}
recognized: Recognized Entity\nD-033 color glow + silhouette feature\n(e.g. identifying clothing detail)\n0.8s breathing pulse\n+/-0.5 tile position drift {
style.fill: ${color-panel}
style.stroke: ${color-nav}
style.font-color: ${color-text}
}
unrecognized: Unrecognized Entity\nneutral grey blob\nno silhouette · no identity {
style.fill: ${color-panel}
style.stroke: ${color-stroke}
style.font-color: ${color-text}
}
}
divergence: "Same fog, different information per character\nSmuggler: recognizes dock workers = green icons\nDetective: same entities = grey blobs\n\nFog is not darkness —\nit is the absence of your attention." {
shape: page
style.fill: ${color-screen}
style.stroke: ${color-nav}
style.font-color: ${color-text}
style.italic: true
}
perf: Performance Budget\n<1ms/frame total\nVision cone = PointLight2D\nFog = CanvasGroup noise shader (Layer 5)\nSound pings = 0-5 sprites\nEntity ghosts = 0-10 sprites typical {
shape: package
style.fill: ${color-screen}
style.stroke: ${color-stroke}
style.font-color: ${color-text}
}
kg_read -> fog_layers: "determines entity recognition\n(which observer sees which entities)" {
style.stroke: ${color-nav}
}
kg_read -> fog_entities.recognized: "KnowsOf+ → recognized" {
style.stroke: ${color-nav}
}
kg_read -> fog_entities.unrecognized: "Suspects / none → blob" {
style.stroke: ${color-stroke}
}
fog_layers -> fog_entities: "entities rendered within fog state" {
style.stroke: ${color-stroke}
}
fog_layers -> divergence: "same shader, per-character KG" {
style.stroke: ${color-nav}
style.stroke-dash: 4
}
fog_layers -> perf