docs(decisions): record audio discussion outcomes D-067 through D-074
Recognition chime timing (D-067), 5-bus audio architecture (D-068), audio dip profiles (D-069), confrontation as cognitive vulnerability (D-070), monologue chime placeholder strategy (D-071), universal conversation murmur (D-072), zone crossfade (D-073), hybrid audio generation (D-074). Amends D-038 scope, resolves Q-014. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# Architecture Decisions
|
||||
|
||||
Technical foundation decisions that constrain implementation: engine, client-server, ECS, simulation, testability, performance budgets.
|
||||
Technical foundation decisions that constrain implementation: engine, client-server, ECS, simulation, testability, performance budgets, audio architecture.
|
||||
|
||||
---
|
||||
|
||||
@@ -178,6 +178,36 @@ Technical foundation decisions that constrain implementation: engine, client-ser
|
||||
- **Raised by:** Team Leader (Jeroen) — proposed retina scaling analogy and 2x2 geometry constraint. Tyre (feasibility: trivial, half-day integration). Gestalt (approved with 2x2 constraint resolving LOS readability concern). Ozzie (approved: solves sprite scale without uncanny mismatch).
|
||||
- **Dissent:** Gestalt initially objected to dual-scale (mental model mismatch for cover/LOS). Resolved by the 2x2 geometry minimum constraint — all cover maps 1:1 at visual scale.
|
||||
|
||||
### D-068: 5-bus audio architecture
|
||||
- **Date:** 2026-02-16
|
||||
- **Decision:** Audio uses a 5-bus architecture with player-facing volume sliders:
|
||||
1. **Music** — future/empty in v0.1. Reserved for diegetic Meridian music in social spaces.
|
||||
2. **Ambient** — station hum ([D-038](scope.md#d-038-audio-in-v01-scope--8-files-via-stable-audio-open) asset 1) + zone overlays (assets 2-4). Continuous soundscape.
|
||||
3. **World SFX** — NPC footsteps, doors, environmental events. Diegetic world sounds not caused by player.
|
||||
4. **Player Actions** — player footsteps (assets 5-6), future: combat sounds, item interactions. Sounds player directly causes.
|
||||
5. **UI Sounds** — cursor hover, implant open, monologue chimes (assets 7-8), fog recognition. Interface feedback.
|
||||
- **Client implementation:**
|
||||
- AudioManager GDScript autoload singleton on client branch (lives with rendering, per [D-020](#d-020-engine-and-architecture-selection--godot-client--rust-simulation-via-subprocessipc)).
|
||||
- Audio assets committed to audio branch (content, not code).
|
||||
- Directory-scan registry pattern: AudioManager scans `res://audio/` on startup, maps filenames to AudioStream resources. No hardcoded asset list.
|
||||
- If directory empty or asset missing, all play methods no-op with visual fallback (per [D-038](scope.md#d-038-audio-in-v01-scope--8-files-via-stable-audio-open) architecture).
|
||||
- 5 player-facing volume sliders, one per bus. Accessible via settings.
|
||||
- **Bus routing dropped:**
|
||||
- **Dialogue bus removed** — no voice acting in v0.1. NPC conversation murmur goes on World SFX (event-driven, per [D-072](perception.md#d-072-universal-event-driven-conversation-murmur)).
|
||||
- **Rationale:** 5 buses provide player control granularity (disable UI sounds, boost World SFX for eavesdropping, mute Ambient for focus) without over-segmentation. Directory-scan registry eliminates hardcoded asset paths — audio branch can add files without touching client code. No-op fallback means client works identically with or without audio.
|
||||
- **Cross-reference:** Audio assets ([D-038](scope.md#d-038-audio-in-v01-scope--8-files-via-stable-audio-open)), audio dip ([D-069](perception.md#d-069-audio-dip-profiles-for-dialogue-and-confrontation)), client-server architecture ([D-020](#d-020-engine-and-architecture-selection--godot-client--rust-simulation-via-subprocessipc))
|
||||
- **Raised by:** Team Leader (channel split directive), Tyre (architecture), Inigo and Gestalt (bus refinement)
|
||||
- **Dissent:** None
|
||||
|
||||
### D-073: Zone crossfade approach — hard boundary, soft audio transition
|
||||
- **Date:** 2026-02-16
|
||||
- **Decision:** Zone audio transitions use hard tile boundary triggers with 1.5-2s audio crossfade tweens. Server sends zone_id per tile in ObserverSnapshot (server-authoritative zone assignment). AudioManager receives zone changes and tweens between ambient layers. No blended overlap zones — the transition smoothness comes from audio fade duration, not spatial blending.
|
||||
- **Implementation:** AudioManager stub in Sprint 7 (5-bus setup, directory registry). Full zone crossfade implementation deferred to Sprint 8+.
|
||||
- **Rationale:** Hard boundaries with soft audio = predictable for simulation, pleasant for player. Avoids complex overlap zone geometry. Crossfade duration (1.5-2s) is long enough to feel smooth, short enough that walking back-and-forth across boundary doesn't create audio chaos.
|
||||
- **Cross-reference:** Audio architecture ([D-068](#d-068-5-bus-audio-architecture)), client-server ([D-020](#d-020-engine-and-architecture-selection--godot-client--rust-simulation-via-subprocessipc)), ambient assets ([D-038](scope.md#d-038-audio-in-v01-scope--8-files-via-stable-audio-open))
|
||||
- **Raised by:** Tyre
|
||||
- **Dissent:** None
|
||||
|
||||
---
|
||||
|
||||
*13 decisions. Last updated: 2026-02-14*
|
||||
*16 decisions. Last updated: 2026-02-16*
|
||||
|
||||
Reference in New Issue
Block a user