6 agents × 2 rounds examining 9 content layers. Produced D-032 through D-039, THE FRIEND NPC pattern, converged tag taxonomy, and Sova Transit District setting. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
33 KiB
Round 1: Gestalt (Systems Design & Fun Factor)
Workshop: v0.1 Content Gap Analysis Date: 2026-02-11 Scope: All 9 layers — systems design questions
Layer 1: Art Direction & Visual Identity
No direct questions for Gestalt here, but one mechanical observation:
Art direction is downstream of information design. The visual system's primary job in The Settled Reach is communicating what the player can and cannot perceive. Fog edges, vision cone boundaries, sound indicators at fog-edge, NPC state tells — these are all visual elements that serve information mechanics first, aesthetics second.
Whatever Araminta proposes, the art direction must prioritize perceptual legibility: can the player instantly distinguish "I can see this" from "I cannot see this" from "I heard something here"? If that's clear, the aesthetics can be anything from pixel art to abstract minimalism. If it's unclear, no amount of beauty fixes the game.
Recommendation for Q-003: "Functional minimalism with perceptual clarity" is the v0.1 art direction. Atmosphere is carried by monologue (D-016). Visual mood is a polish layer, not a proof-of-concept requirement.
Layer 2: Access Tiers and Character Builds
Question: How do access tiers (D-028 Layer 1) interact with the two character builds mechanically?
Let me break down what this actually means mechanically.
Access tiers are the first filter on every line of dialogue. They answer: "Given who the player character IS, what version of this NPC do they see?" This isn't a binary insider/outsider — it's a multi-axis classification that determines which lines from the pool are eligible for selection.
Access Tier Model for v0.1
| Access Tier | Description | Smuggler sees | Detective sees |
|---|---|---|---|
public |
Available to everyone. Greetings, small talk, general observations. | Yes | Yes |
insider |
Available to people embedded in the social group. Shop talk, complaints, gossip about colleagues. | Logistics hub: Yes. Bar: Regular status. Ring: Yes. | Logistics hub: Outsider. Bar: Regular. Ring: No. |
authority |
Available to people with institutional power. Deference, compliance, formal responses. | No (except through cover) | Yes |
peer |
Available to people of equal social standing within a group. Casual, unguarded. | With ring members, coworkers | With other investigators, institutional contacts |
hostile |
Guarded, deflecting, minimal. Shown to people perceived as a threat. | From detective-allied NPCs (if blown) | From ring-connected NPCs |
How This Maps to the Two Characters
Smuggler access profile:
| Social Site | Default Access | Why |
|---|---|---|
| Logistics Hub | insider + peer |
Works there. Coworkers. |
| Bar | public or insider (regular) |
Social regular, not staff |
| Smuggling Ring | insider + peer |
Member |
Detective access profile:
| Social Site | Default Access | Why |
|---|---|---|
| Logistics Hub | authority |
Investigating. Workers defer/comply. |
| Bar | public |
No special status |
| Smuggling Ring | hostile (if known) or public (if not) |
Target of investigation |
The Interesting Decision Space
Here's where this creates gameplay. Access tiers are the player's starting hand, not their final state. The systems must allow tier SHIFTS during play:
| Shift | Mechanism | Example |
|---|---|---|
public -> insider |
Repeated positive interactions, time spent | Detective becomes a bar regular after visiting 3-4 times |
insider -> hostile |
Cover blown, secret discovered | Smuggler is seen talking to the detective |
authority -> peer |
Trust built through fairness, personal disclosure | Detective earns a worker's trust by keeping a minor infraction quiet |
peer -> hostile |
Betrayal, information leak | Smuggler discovers a ring member is informing |
These tier shifts ARE the social gameplay. The player isn't just receiving different dialogue — they're actively managing their social position by choosing who to talk to, what to reveal, and who to be seen with. Every conversation is a potential tier shift event.
What Paula needs for the Dual Lens Guide: A matrix per social site showing starting access for each character, plus the 2-3 most likely tier shift paths. Not every combination — just the ones the content packs need to support.
Layer 3: Station District Setting
No direct questions for Gestalt here, but a mechanical note for Miri:
The station district setting needs to produce spatial information asymmetry. Concretely:
- At least one area that's publicly accessible but has a hidden back room / private area
- At least one area where the smuggler has natural access but the detective would need a reason to enter
- At least one chokepoint where NPCs from different social sites cross paths (this is where cross-template contamination becomes observable)
These are spatial requirements that emerge from the information design, not just atmosphere choices.
Layer 4: Content Pipeline & Authoring Format
Cracks knuckles. This is the big one. Let me propose the concrete line pool format.
Line Pool Authoring Format: YAML
YAML is the right choice for human-authored content. It's readable, supports comments (authors can annotate their intent), handles multiline strings naturally, and has mature tooling. JSON is too noisy for 500+ authored lines. CSV loses structure. TOML gets awkward for nested data.
Concrete Line Pool File Structure
Each template gets one YAML file per content category. The file structure:
content/
templates/
logistics-hub/
dialogue.yaml # NPC role dialogue lines
monologue.yaml # Player character reactions to this location
environmental.yaml # Signs, terminals, ambient text
trait-guide.yaml # How personality traits modify base lines
bar/
dialogue.yaml
monologue.yaml
environmental.yaml
trait-guide.yaml
smuggling-ring/
dialogue.yaml
monologue.yaml
environmental.yaml
trait-guide.yaml
characters/
smuggler/
voice-kit.yaml # Character-specific monologue voice
opening-hook.yaml # First 5 minutes content
detective/
voice-kit.yaml
opening-hook.yaml
shared/
greetings.yaml # Cross-template greeting pools
farewells.yaml # Cross-template farewell pools
generic-ambient.yaml # Non-location-specific monologue
Line Entry Schema
Here's what a single line looks like in dialogue.yaml:
# logistics-hub/dialogue.yaml
# Template: Logistics Hub (Workplace)
# Author: Mellanie
# Last updated: YYYY-MM-DD
meta:
template: logistics_hub
version: 1
line_count: 70 # target: 55-70 authored lines for this template
lines:
- id: lh_d_001
text: "Another shipment from Taliesin. Third one this week. Must be nice to have that kind of credit flow."
role: dock_worker # which NPC role speaks this
access: [insider, peer] # who hears this (D-028 Layer 1)
trust: surface # disclosure tier: surface | real | secret
topic: [work, cargo, money] # what the line is about
mood: [neutral, tired] # NPC mood states that select this line
situation: [routine, morning] # when this line is eligible
tags: [gossip, observation] # freeform classification
dual_lens: # how this line hits differently per character
smuggler: "Routine shop talk. But Taliesin shipments are your cover run."
detective: "Cargo volume anomaly. Worth checking manifests."
notes: "Sets up Taliesin as a location name. Smuggler knows this is cover cargo."
- id: lh_d_002
text: "You're new around here? Or just... visiting?"
role: dock_worker
access: [public]
trust: surface
topic: [social, identity]
mood: [cautious, neutral]
situation: [first_meeting]
tags: [greeting, probe]
dual_lens:
smuggler: "Never triggered — smuggler is known here."
detective: "First contact. Worker is sizing you up."
- id: lh_d_003
text: "Look, I mind my own business. You should try it."
role: dock_worker
access: [authority, hostile]
trust: surface
topic: [deflection]
mood: [annoyed, defensive]
situation: [interrogation, repeated_visit]
tags: [resistance, wall]
dual_lens:
smuggler: "Only if your cover is blown and they see you as authority now."
detective: "Standard resistance. Either genuinely uninvolved or protecting someone."
Minimum Viable Tag Set for v0.1
Here's the taxonomy — the minimum set of tags that makes the four dialogue layers functional:
Structural Tags (required on every line)
| Tag | Type | Values | Purpose |
|---|---|---|---|
id |
string | {template}_{type}_{###} |
Unique identifier |
text |
string | The authored line | What the NPC says |
role |
enum | Template-defined roles (e.g., dock_worker, bartender, ring_courier) |
Which NPC role speaks this |
access |
list<enum> | public, insider, authority, peer, hostile |
D-028 Layer 1: who hears this |
trust |
enum | surface, real, secret |
D-028 Layer 3: disclosure tier |
situation |
list<enum> | See situation taxonomy below | When this line is eligible |
Content Tags (recommended, can be empty)
| Tag | Type | Values | Purpose |
|---|---|---|---|
topic |
list<enum> | work, social, cargo, money, relationships, rumors, identity, deflection, weather, complaint |
What the line is about — enables topic-based conversation steering |
mood |
list<enum> | neutral, happy, tired, annoyed, nervous, defensive, friendly, cautious |
NPC mood states that select this line |
tags |
list<string> | Freeform | Author classification for search and grouping |
Authoring-Only Tags (not consumed by engine, used by previewer and authors)
| Tag | Type | Values | Purpose |
|---|---|---|---|
dual_lens |
map | Per-character notes | How this line reads differently per character |
notes |
string | Author comments | Design intent, context, dependencies |
Situation Taxonomy for v0.1
Situations are the context triggers that make lines eligible. Minimum set:
| Situation | Description |
|---|---|
greeting |
First interaction this game-day |
first_meeting |
Characters have never met |
routine |
Normal daily activity |
morning / afternoon / evening / night |
Day phase (D-031) |
repeated_visit |
Player has visited this NPC 3+ times |
interrogation |
Player is asking pointed questions |
witnessed_secret |
Player has seen something they shouldn't |
idle |
NPC is between activities |
working |
NPC is performing their job |
social |
NPC is socializing (bar, break, etc.) |
confrontation |
Triangle tension has boiled over |
post_event |
Responding to a recent simulation event |
How the Four Dialogue Layers Map to Tags
Question: How do the 4 dialogue layers map to line tags? One tag per layer, or more complex?
Let me map it out:
| Dialogue Layer | Tag(s) Used | Selection Logic |
|---|---|---|
| Layer 1: Access tier | access |
Hard filter. If the player character's current access tier for this NPC's social site is not in the line's access list, the line is invisible. No fallthrough. |
| Layer 2: Relationship history | situation + engine state |
The engine tracks interaction count, last interaction time, and notable events. This modifies which situation values are active. E.g., first_meeting is only true once; repeated_visit activates after threshold. Not a single tag — it's engine state mapped to situation eligibility. |
| Layer 3: Trust-gated gossip | trust |
Progressive filter. NPCs start at surface. As relationship improves, real lines become available. secret lines only after significant trust threshold. One tag, three values, engine controls the threshold. |
| Layer 4: Unprompted disclosure | topic + mood + engine state |
The NPC has things they WANT to say (driven by mood, recent events, triangle pressure). The engine picks from eligible lines weighted by NPC mood and topic relevance. No single tag — it's a weighted selection across mood + topic from the eligible pool. |
Selection Pipeline (simplified)
All lines for this NPC's role
|
├── Filter by access tier (Layer 1) → removes ~40-60% of lines
|
├── Filter by situation (Layer 2) → narrows to context-appropriate lines
|
├── Filter by trust level (Layer 3) → caps disclosure depth
|
└── Weight by mood + topic relevance (Layer 4) → ranks remaining lines
|
└── Select top-weighted line (with variety tracking to avoid repeats)
Key insight: Layers 1 and 3 are HARD FILTERS (binary: eligible or not). Layers 2 and 4 are SOFT SELECTORS (weighting and context). This means:
- Authors must ensure every access/trust combination has enough lines to avoid dead conversations
- Authors can be more flexible with mood/topic — the engine can fall back to
neutralmood lines
Monologue Line Format
Monologue uses a similar but distinct schema. Key difference: monologue is triggered by observation EVENTS, not conversation initiation.
# logistics-hub/monologue.yaml
lines:
- id: lh_m_001
text: "Busy morning. The usual controlled chaos."
character: smuggler
trigger: enter_location # what observation event fires this
location: logistics_hub
situation: [morning, routine]
mood: [neutral, relaxed] # character mood, not NPC mood
prerequisite: null # knowledge state required (null = always eligible)
tags: [atmosphere, establishing]
- id: lh_m_002
text: "Same faces, same cargo, same lies. Comfortable."
character: smuggler
trigger: enter_location
location: logistics_hub
situation: [morning, routine]
mood: [neutral, content]
prerequisite: { knows: smuggling_operation }
tags: [atmosphere, character_voice, irony]
- id: lh_m_003
text: "Standard logistics operation. On paper. The throughput numbers don't add up, though."
character: detective
trigger: enter_location
location: logistics_hub
situation: [morning, routine]
mood: [neutral, analytical]
prerequisite: { knows: cargo_anomaly }
tags: [investigation, observation, clue]
Monologue Trigger Taxonomy for v0.1
| Trigger | Description | Example |
|---|---|---|
enter_location |
Player enters a new area | "The bar's quieter than usual." |
observe_npc |
Player sees an NPC doing something | "They're checking the manifest again." |
hear_sound |
Sound event from fog edge | "Footsteps. Two people, moving fast." |
observe_anomaly |
NPC deviates from routine | "That's not where they usually go at this hour." |
post_conversation |
After dialogue ends | "They were lying. The pause before 'I don't know' — classic tell." |
discover_evidence |
Player examines an object with information | "This doesn't match the official log." |
witness_interaction |
Player sees two NPCs interacting | "Those two don't normally talk." |
time_idle |
Player hasn't done anything for a while | "Should probably get moving." |
return_visit |
Player returns to a previously visited area | "Different shift. Different faces." |
Layer 5: Template Content & Entanglement
Question: How does the entanglement ratio (30/50/20) play out across ~15 NPCs?
Let me do the math and map it concretely.
NPC Distribution (D-029 applied to v0.1)
With ~15 NPCs across 3 social sites:
| Entanglement Level | Count | Description | Template Distribution |
|---|---|---|---|
| Flat (~30%) | 4-5 NPCs | Routine + greeting only. Social wallpaper. | 1-2 per template |
| Mundane Triangle (~50%) | 7-8 NPCs | Involved in non-conspiracy social drama. Neighbor disputes, workplace rivalries, relationship tensions. | 2-3 per template |
| Entangled (~20%) | 3 NPCs | Connected to smuggling operation. Their secrets are the investigation targets. | Primarily in ring template, with 1 bridge NPC in another |
Concrete NPC Skeleton (proposal)
Here's how I'd distribute them:
Logistics Hub (5 NPCs):
| Role | Name (placeholder) | Entanglement | Triangle Role |
|---|---|---|---|
| Shift Supervisor | [TBD] | Mundane | Triangle A: workplace authority tension |
| Dock Worker 1 | [TBD] | Flat | Wallpaper — reliable, boring, friendly |
| Dock Worker 2 | [TBD] | Mundane | Triangle A: chafes under supervisor |
| Cargo Handler | [TBD] | Entangled | Ring member. Uses job to move product. Bridge NPC to ring template. |
| Admin Clerk | [TBD] | Mundane | Triangle B: knows more than they should about cargo discrepancies |
Bar (5 NPCs):
| Role | Name (placeholder) | Entanglement | Triangle Role |
|---|---|---|---|
| Bartender | [TBD] | Mundane | Triangle C: social hub, hears everything, discreet |
| Regular 1 | [TBD] | Flat | Wallpaper — always there, colorful but uninvolved |
| Regular 2 | [TBD] | Mundane | Triangle C: has a thing for the bartender, jealous of attention |
| Off-duty Worker | [TBD] | Mundane | Triangle B (cross-template): same person from logistics hub, different behavior here. Bridge NPC. |
| Stranger | [TBD] | Flat | Wallpaper — different face each playthrough. Procedural filler. |
Smuggling Ring (5 NPCs):
| Role | Name (placeholder) | Entanglement | Triangle Role |
|---|---|---|---|
| Ring Leader | [TBD] | Entangled | Runs the operation. Triangle D: power/loyalty tension |
| Ring Courier | [TBD] | Entangled | Moves product between ring and hub. Triangle D: pressured by leader, considering turning |
| Ring Lookout | [TBD] | Mundane | Triangle D: doesn't know the full scope of operation, thinks it's minor smuggling |
| Ring Contact (bar) | [TBD] | Mundane | Triangle C (cross-template): the ring's eyes and ears at the bar |
| Ring Fixer | [TBD] | Flat | Wallpaper for the ring — handles logistics, no drama |
Triangle Map
| Triangle | NPCs | Tension | Type |
|---|---|---|---|
| A (Logistics Hub) | Supervisor, Dock Worker 2, Cargo Handler | Authority vs autonomy. Worker resents supervisor. Handler stays quiet to protect cover. | Mundane + one entangled leg |
| B (Cross-template) | Admin Clerk (Hub), Off-duty Worker (Bar), Cargo Handler (Ring) | The clerk noticed discrepancies. The off-duty worker drinks too much and talks. The handler needs to keep both quiet. | Cross-template, entangled |
| C (Bar) | Bartender, Regular 2, Ring Contact | Social drama. Regular is jealous. Ring Contact uses bar as intel gathering. Bartender sees all, says nothing. | Mundane + one entangled leg |
| D (Ring) | Ring Leader, Ring Courier, Ring Lookout | Power and loyalty. Leader pushes for more volume. Courier is cracking under pressure. Lookout thinks it's small-time. | Entangled |
Note for Paula: Triangle B is the critical cross-template triangle. It's the mechanism by which the smuggling operation contaminates the mundane social world. The clerk's curiosity + the worker's loose lips + the handler's need for silence is a pressure cooker that the player can observe, manipulate, or accidentally trigger.
Does This Create Interesting Decisions?
For the smuggler: You KNOW the handler, the courier, the leader. Your daily life is managing these relationships. Triangle B is your biggest risk — the clerk is asking questions, the worker talks too much at the bar. Do you befriend the clerk to deflect? Warn the worker to shut up? Or trust the handler to manage it? Every choice has relationship consequences.
For the detective: You don't know any of this at first. You see a normal workplace, a normal bar. But the clerk seems nervous. The worker mentions "weird cargo hours" after their third drink. The handler is suspiciously friendly with the detective — trying to assess the threat. The detective's game is connecting these dots through observation and conversation.
This is the fun. Same 15 people, completely different games.
Layer 6: Minimum Viable Tell System
Question: What's the minimum viable tell system? One behavioral marker per axis, or fewer?
Let me break down what "tells" actually need to DO mechanically before deciding volume.
What Tells Are For
A "tell" is an observable behavior that reveals internal NPC state without the NPC explicitly saying anything. Tells are the bridge between the simulation (NPC has mood=nervous, secret=smuggling) and the perception system (player sees NPC fidgeting, looking over their shoulder).
Tells serve two functions:
- Reward observation — the player who watches carefully learns more than the player who just talks
- Create investigation breadcrumbs — "they seem nervous" prompts the player to dig deeper
Minimum Viable Tell System for v0.1
Not one per axis. That's 10 tells per NPC x 15 NPCs = 150 behavioral markers. Way too many for v0.1.
Instead: tells should map to the PLAYER-FACING question, not the simulation axis. The player doesn't think in axes — they think in "what's wrong with this person?"
| Tell Category | Maps to Axes | Observable Behavior | Implementation |
|---|---|---|---|
| Nervous/hiding something | Secret, Tolerance threshold | Fidgeting sprite variation, checking over shoulder, breaking eye contact (monologue describes) | 2-3 text descriptions in monologue pool |
| Angry/frustrated | Contentment (low), Tolerance (near threshold) | Terse dialogue, aggressive movement pattern (faster walk), monologue notes "they look tense" | Mood affects dialogue selection + 1 movement modifier |
| Friendly/warm | Relationships (positive), Personality (sociable) | Longer conversations, approaches player proactively, monologue notes openness | Unprompted disclosure weighting increase |
| Guarded/cold | Relationships (negative), Access (hostile) | Short responses, avoids player, monologue notes resistance | Access tier filtering does this naturally |
| Routine deviation | Secret (active), Want (pursuing something) | NPC goes somewhere they normally don't, at an unusual time | Routine system deviation flag + monologue trigger |
That's 5 tell categories for v0.1. Each is expressed through a combination of:
- Monologue lines (character interprets the tell) — cheapest, most expressive
- Dialogue weighting (mood shifts what lines are selected) — already in the pipeline
- Movement behavior (1 modifier: speed/path deviation) — lightweight
Most tells in v0.1 will be TEXT, not visual. The monologue system IS the tell renderer. "They're checking the corridor before entering the back room" is a tell delivered through monologue, not through a complex animation system. This is consistent with D-016 (monologue as perception bridge) and D-014 (functional boxes with labels).
What Mellanie Needs
For each of the 5 tell categories, 3-5 monologue lines per character. That's 30-50 monologue lines dedicated to tells, split between smuggler and detective voice.
Smuggler tell monologue reads differently from detective tell monologue:
- Smuggler noticing nervousness: "They're spooked. Wonder who's been asking questions."
- Detective noticing nervousness: "Nervous. Either guilty or scared of someone who is."
Same observation, different interpretation. This is where the dual-lens system shines brightest.
Layer 7: Monologue & Observation Text
No direct questions for Gestalt here, but a systems note:
Monologue content volume is the highest content risk in the entire project (I flagged this in the previous gap analysis workshop). The monologue system carries perception, atmosphere, tutorial, tells, investigation clues, and character voice — simultaneously. If it feels thin or repetitive, the entire game suffers.
The trigger taxonomy I defined in Layer 4 above (9 trigger types) maps directly to content authoring work. Mellanie needs to write lines for each trigger type x each location x each character. That's approximately:
| Trigger | Lines per location | x3 locations | x2 characters | Total |
|---|---|---|---|---|
enter_location |
3-5 | 9-15 | 18-30 | 18-30 |
observe_npc |
5-8 | 15-24 | 30-48 | 30-48 |
hear_sound |
3-4 | 9-12 | 18-24 | 18-24 |
observe_anomaly |
3-5 | 9-15 | 18-30 | 18-30 |
post_conversation |
5-8 | 15-24 | 30-48 | 30-48 |
discover_evidence |
2-3 | 6-9 | 12-18 | 12-18 |
witness_interaction |
3-5 | 9-15 | 18-30 | 18-30 |
time_idle |
2-3 | — (shared) | 4-6 | 4-6 |
return_visit |
2-3 | 6-9 | 12-18 | 12-18 |
Estimated monologue line count: 160-250 authored lines. Plus the 30-50 tell lines. Call it 200-300 monologue lines total — consistent with the D-028 workshop estimate.
These are authored lines. The 4x generation expansion applies here too, giving ~800-1200 total monologue lines in the game. That should prevent repetition across a 30-minute session.
Layer 8: UI Text & Onboarding
Question: Does v0.1 need onboarding text, or can the monologue system serve as the tutorial (D-016 "diegetic tutorial")?
Answer: Monologue IS the tutorial. No separate onboarding text needed for v0.1.
Here's how it works mechanically:
Diegetic Tutorial Through Monologue
The player's first 2-3 minutes produce a sequence of monologue lines that teach by narrating:
| Player Action | Monologue Tutorial | What It Teaches |
|---|---|---|
| Game starts | "Another day at [station]. Better check the schedule." (Smuggler) / "Precinct forwarded the case file. Time to start." (Detective) | You have a purpose. You're a person. |
| Player moves | "Quiet corridor. Nobody around." | Vision cone — you can see what's in front of you. |
| Player approaches fog edge | "Something around the corner. Can't see from here." | Fog = limited perception. Move to see more. |
| Player hears sound through wall | "Voices. Can't make out what they're saying from here." | Sound carries through walls. Get closer. |
| Player sees first NPC | "That's [Name]. [Brief relationship context]." (Smuggler) / "Unknown civilian. Standard profile." (Detective) | You know (or don't know) people. Character relationships matter. |
| Player talks to NPC | (Dialogue system handles this) | Conversation exists. Different people tell you different things. |
| Player checks insert | "Let's see... [location info]." | The minimap/insert exists and is diegetic. |
No "Press WASD to move" text. No tooltip overlays. The character's thoughts teach the player by reacting to what the player does naturally.
What this requires from Mellanie: A special opening-hook.yaml per character with 10-15 tightly sequenced monologue lines that fire in response to the player's first actions. These are the most important lines in the entire game — they set voice, teach mechanics, and establish motivation simultaneously.
UI Text That IS Needed
Even with diegetic tutorial, some UI text is unavoidable:
| UI Element | Text Needed | Volume |
|---|---|---|
| Main menu | New Game, Continue, Settings, Quit | 4-6 strings |
| Character select | Smuggler description, Detective description | 2 paragraphs |
| Pause menu | Resume, Save, Load, Settings, Quit | 5-6 strings |
| Insert/minimap labels | POI names, distance indicators | ~10-15 strings |
| Dialogue UI | "Talk", "Leave", topic selection labels | ~5-10 strings |
| Time display | Day phase indicator, clock format | 4-5 strings |
Total UI text: ~40-50 strings. Trivial volume. Can be authored in an afternoon.
Layer 9: Audio Direction
Question: Does the three-range sound model need audio content to prove itself, or can it work with system beeps and text?
Answer: Text-only sound is mechanically sufficient for v0.1. Audio content is a wow multiplier, not a proof requirement.
Here's why:
How Sound Works Without Audio Files
The three-range model (D-018) is fundamentally an INFORMATION system, not an audio system. What matters is:
| Range | What the player needs to know | Text-only delivery |
|---|---|---|
| Close | "I can hear this clearly" | Monologue: "Footsteps behind me. Two people." |
| Medium | "Something's happening nearby but I can't see it" | Visual indicator at fog edge + monologue: "Voices from the next room." |
| Long | "Information arrived through my insert" | Insert notification text: "Alert: disturbance reported in Sector 7" |
All three ranges work through text + visual indicators. The SYSTEM is provable without a single audio file.
What Audio WOULD Add
Audio adds emotional texture that text can't match:
- Close range: actual footstep sounds create spatial awareness and tension
- Medium range: muffled voices through walls create curiosity and dread
- Fog edge: ambient hum vs silence communicates "something's there" vs "empty"
Recommendation: Defer ALL authored/designed audio to a later sprint. For v0.1, use at most:
- 1 ambient drone per location type (3 total — can be freely licensed or generated)
- 1 footstep sound for close-range feedback
- 1 "notification chime" for insert alerts
That's 5 sound files. The rest is text + visual indicators. If even this is too much, zero audio is acceptable. The monologue system can carry the entire perceptual load.
But the system architecture must still support audio. The sound event system (#124) should emit events regardless of whether audio content exists. The client receives "sound event at coordinates X,Y with type FOOTSTEPS" — whether it plays a wav file or shows a visual indicator is a client rendering decision. Don't build the system around text; build it around events and render text as the v0.1 fallback.
Cross-Layer Synthesis: What Gestalt Thinks the Content Team Needs
Priority-Ordered Content Work
| Priority | Deliverable | Owner | Depends On | Lines/Volume |
|---|---|---|---|---|
| 1 | Line pool format specification (this document) | Gestalt (done) | Nothing | Spec only |
| 2 | Dual Lens Authoring Guide | Paula | Layer 2 access tier model (above) | ~10 pages |
| 3 | Station district setting brief | Miri | Nothing | ~2-3 pages |
| 4 | Character voice kits (smuggler + detective) | Mellanie | Dual Lens Guide | 20-30 sample lines per character |
| 5 | Opening hook content (per character) | Mellanie | Voice kits | 10-15 lines per character |
| 6 | NPC profiles (15 NPCs) | Paula + Mellanie | Setting brief, character builds | 1 page per NPC |
| 7 | Logistics Hub content pack (#190) | Mellanie | NPC profiles, line pool format | ~55-70 dialogue + ~30-40 monologue lines |
| 8 | Bar content pack (#191) | Mellanie | NPC profiles, line pool format | ~55-70 dialogue + ~30-40 monologue lines |
| 9 | Smuggling Ring content pack (#192) | Mellanie | NPC profiles, line pool format | ~55-70 dialogue + ~30-40 monologue lines |
| 10 | Tell monologue lines | Mellanie | NPC profiles, tell categories | 30-50 lines |
| 11 | Environmental text | Mellanie + Araminta | Setting brief | ~30-50 strings |
| 12 | UI text | Mellanie | Character descriptions | ~40-50 strings |
The Critical Path
Dual Lens Guide (Paula)
+ Station Setting (Miri)
+ Line Pool Format (Gestalt - this document)
→ Character Voice Kits (Mellanie)
→ Opening Hooks (Mellanie)
→ NPC Profiles (Paula + Mellanie)
→ Content Packs x3 (Mellanie)
→ Tell Lines + Environmental (Mellanie)
Nothing blocks the line pool format — it's spec work. The Dual Lens Guide and Station Setting can proceed in parallel. Once those two exist, Mellanie can start writing. The content packs are the bulk of the work and should start as soon as the voice kits feel right.
One Last Mechanical Note
The line previewer (#193) is critical. Mellanie cannot efficiently author 500+ tagged lines without a tool that shows "given this NPC, this access tier, this mood, this situation — what line would fire?" The previewer doesn't need to be pretty. It needs to load a YAML file, accept filter parameters, and show the selected line. A CLI tool. Tyre can build this as a Rust binary that reads the YAML and applies the selection pipeline.
Without the previewer, Mellanie is writing blind. Tag errors won't surface until integration. That's a recipe for rework.
Gestalt out. The format is proposed, the tags are defined, the pipeline is mapped. Now we need Paula's lens guide, Miri's setting, and Mellanie's voice. The systems are ready for content.