feat(perception): ground vision cone in human sensory physiology

- Visible half-angle 150° → 100° (200° arc), matching average human
  binocular field. Blind spot widens from 60° to 160° — genuine
  vulnerability behind the character.
- Forward half-angle stays at 60° (120° arc) — binocular overlap zone.
- Peripheral zone represents combined sensory awareness: visual
  periphery + subconscious sound/motion tracking, not just eyes.
- Per-character VisionConeConfig allows implants and perception modes
  (D-017) to widen beyond the unaugmented baseline.
- Fog shader: smooth back-edge gradient via smoothstep blend between
  Layer 2 (peripheral) and Layer 3 (deep fog), eliminating blocky
  stair-stepped tiles at the rear of the vision cone.
- D-015 updated with physiological basis and per-character config.
- D-017 updated with vision cone modification by perception modes.
- D-020 updated with protocol versioning policy: PROTOCOL_VERSION
  gates wire format, not gameplay parameters.
- DB backup after sprint 21 close.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-27 22:31:29 +01:00
co-authored by Claude Opus 4.6
parent dd0de2ff04
commit a69e69e663
5 changed files with 67 additions and 39 deletions
+1
View File
@@ -69,6 +69,7 @@ Technical foundation decisions that constrain implementation: engine, client-ser
- `ObserverSnapshot`: the only data structure crossing the boundary. Contains visible entities, fog state, sound events, monologue triggers, HUD widget data. Variable shape per character build.
- `PlayerInput`: semantic actions (MoveNorth, Interact, UsePerceptionMode), not raw key events. Timestamped for deterministic processing.
- `SimBridge` trait: abstracts transport. `LocalBridge` (subprocess, channels) and `NetworkBridge` (TCP, MessagePack) implement the same interface.
- **Protocol versioning policy:** `PROTOCOL_VERSION` gates **wire format compatibility** — field names, types, message structure. Bump when deserialization would fail (added/removed/renamed fields, new enum variants, changed types). Do NOT bump for gameplay parameter changes that affect what data flows through the same format (vision cone angles, NPC behavior, map layout, balance tuning). Per-character variation (D-015 cone config, D-017 perception modes) means these parameters differ between entities on the same server simultaneously — they are game state, not protocol. The client renders whatever `ObserverSnapshot` the server sends; it has no awareness of cone angles or perception mode configuration.
- **Kill switch:** If no working prototype (character + fog + one NPC) exists by week 8 of development, pivot to pure Godot. If bridge/sync code exceeds game logic for 3 consecutive sprints, the architecture tax is too high.
- **Development sequence:**
1. Build Rust simulation as standalone binary (testable via terminal/logs)
+9 -4
View File
@@ -19,13 +19,16 @@ How the player observes and interacts with the world: camera, fog, line-of-sight
- **Date:** 2026-02-09
- **Decision:** Camera is locked to the character at all times. No panning. Optionally rotates to character facing direction (player option, later version).
- **Rationale:** Pannable camera breaks the information model - you become a surveillance drone, not a character. Locked camera reinforces "you ARE this person." Rotation with facing direction restores directional audio mapping (binaural becomes viable again) and creates a natural vision cone (front = detailed, peripheral = reduced, behind = blind).
- **Vision cone model:**
- Forward: full LOS, full detail
- Peripheral: reduced range, dimmer
- Behind: fog / blind spot. You can be snuck up on.
- **Vision cone model (physiological basis):**
- Forward: 120° arc (60° half-angle) — binocular overlap zone where both eyes converge, providing stereoscopic depth and high acuity. Full LOS range, full detail.
- Peripheral: extends to 200° arc (100° half-angle) — combined sensory awareness envelope. Beyond pure visual acuity (~120°), this represents the character's subconscious tracking of sound cues, movement in the corner of the eye, and ambient sensory input. Nothing supernatural — just the human awareness envelope. Reduced range, dimmer. The fog shader gradient (D-059) is aligned to this outer edge.
- Behind: ~160° blind arc — no sensory awareness without explicit cues. Fog / blind spot. You can be snuck up on. The monologue system (D-016) bridges this gap when the character's senses fire ("Footsteps behind me").
- Physiological reference: human binocular field ~200° horizontal, binocular overlap ~120°, far peripheral limit ~100-105° per eye (NCBI Visual Fields NBK220).
- **Per-character cone configuration:** The physiological baseline (120° forward / 200° total / 160° blind) is the unaugmented human floor. Bionic implants, perception modes (D-017), and equipment modify these angles upward. A back-of-head optical implant might widen to 320° visible (tiny blind spot); an ANA-touched character might approach 360°. The `VisionConeConfig` struct is per-entity, not global — different characters can have different awareness envelopes simultaneously. This is gameplay parameter variation, not a protocol change: the wire format (D-020) carries the *result* of cone classification (which tiles are Forward/Peripheral), not the cone angles themselves.
- **Reference:** Hotline Miami's camera made that game terrifying with the same principle.
- **v0.1:** Locked camera, no rotation. Vision cone still works on fixed-north map. Rotation deferred as player option.
- **Raised by:** Team Leader (Jeroen).
- **Updated:** 2026-02-27 — cone angles grounded in human sensory physiology; per-character config documented.
### D-016: Internal monologue as core perception/atmosphere system
- **Date:** 2026-02-09
@@ -54,9 +57,11 @@ How the player observes and interacts with the world: camera, fog, line-of-sight
- Higher: biononic thermal, enhanced spectrum, passive scanning
- ANA-touched: pattern recognition across all feeds, predictive awareness
- **Playstyle implications (Nigel):** Low-tech Guardian playthrough = survival horror (blind, relying on contacts and paranoia). Senator playthrough = information overload (cameras and tracking but drowning in data). Perception modes are playstyle selectors.
- **Vision cone modification:** Perception modes and bionic equipment can widen the vision cone beyond the unaugmented human baseline (D-015: 120° forward / 200° total). Examples: back-of-head optical implant → 320° visible arc; thermal overlay → omnidirectional heat signatures through walls; ANA-touched awareness → near-360° pattern recognition. Each mode modifies `VisionConeConfig` per-entity. The fog shader renders whatever the server classifies — no client-side awareness of cone angles.
- **v0.1:** Natural vision cone + basic audio indicators + insert minimap only. Additional modes are milestone features, each self-contained and modular.
- **Engine implication:** Each perception mode is an observer query against the information boundary system ([D-010](architecture.md#d-010-multiplayer-ready-architectural-baseline) principle 2). Engine doesn't distinguish between eyes/thermal/camera - all are "given this sensor, what state is visible?"
- **Raised by:** Team Leader (Jeroen) proposed thermal and camera hacking. Full team developed into perception mode framework.
- **Updated:** 2026-02-27 — vision cone modification by perception modes documented.
### D-018: Three-range sound model
- **Date:** 2026-02-09