Workshop Outcomes: Control & Interaction Scheme
Workshop: Control & Interaction Scheme — "How Does the Player Touch the World?"
Date: 2026-02-13
Rounds: 2 + final lead calls
Participants: Gestalt, Ozzie, Tyre, Stig, Dudley, Paula, Araminta, Nigel
Documenter: Qatux
Full notes: docs/workshops/control-interaction/workshop-notes.md
Decisions Produced
This workshop produced 13 decisions ready for formalization. Suggested D-NNN IDs and domain file assignments below.
D-053: Movement as stance toggle system (scope.md)
- Decision: Movement uses a stance toggle ladder: Sprint / Walk / Careful / Crouch / (Prone future). Toggle-based, not hold-to-activate. Each archetype has a default stance via MovementProfile component. All characters have access to all stances. Prone: toggle out only in normal play; future combat allows "hit the deck" quick-entry.
- Rationale: Stances compose with perception (sprint = tunnel vision, careful = heightened awareness) and with the tile-based eavesdropping system. Toggle avoids modifier-key fatigue.
- Raised by: Lead (final call), building on Gestalt (triad), Dudley (MovementProfile), Nigel (character-defining speed)
- Server values (Dudley): Walk = 1 tile/2 ticks. Sprint = 1 tile/1 tick. Careful = 1 tile/3 ticks. Crouch TBD.
- Perception coupling (Gestalt + Ozzie, endorsed by lead): Sprint suppresses interpretation (monologue at 40%), not data (overlays still render). Careful enhances monologue (150%) and grants "tell notice bonus." Composable via multiplicative formula:
movement_modifier * perception_load_modifier.
- Dissent: None after lead call. Nigel's character-differentiation concern addressed by MovementProfile (different defaults per archetype).
D-054: Tile-based movement with same-tile occupancy (architecture.md)
- Decision: All movement is tile-based (server-authoritative, discrete positions). Client-side Tween interpolation (100-150ms) hides the grid. Same-tile occupancy via TilePresence component (Standing/Prone/Seated/Fixture layers) allows multiple entities on one tile in different postures. Mouse facing is client-side float; server receives facing octant only.
- Rationale: Determinism (D-010). Tile-based enables shadowcasting, pathfinding, and trivial collision. Occupancy system addresses Nigel's emergent positioning needs (doorway blocking, eavesdrop positioning, furniture interaction) within tile-based constraints. ~150 lines server-side.
- Raised by: Tyre (tile-based, non-negotiable), Dudley (tiles-per-tick), Nigel (converted: "tiles are BETTER for replayability — discrete positions = finite meaningful choices")
- Dissent: None. Nigel initially proposed free movement (Round 1) but converted in Round 2 after seeing how tile-based spatial puzzles create replayability.
D-055: Sprint explicitly suppresses interaction buffer (architecture.md)
- Decision: When in Sprint stance, the server explicitly clears the interaction buffer. No interaction verbs are computed or sent to the client during sprint. Anomaly monologue survives sprint (Ozzie's "sprint double-take").
- Rationale: Mouse gymnastics to click during sprint = bad UX. Explicit suppression is cleaner and deterministic. "Sprint double-take" preserves the feel that the character is still aware even when the player can't interact.
- Raised by: Dudley (explicit suppression), Ozzie (anomaly survival)
- Dissent: Gestalt argued physics handles it naturally (player passes through interaction radius too fast to click). Lead ruled explicit suppression for clarity.
D-056: Cursor states — insert-styled geometric (perception.md)
- Decision: Four cursor states using the neural insert's geometric visual language (Araminta's spec):
- Default: four thin inward-pointing ticks, bloom, white-blue #c8d0e0
- Entity hover: ticks expand outward (150ms), corner brackets frame entity, shifts to D-033 relationship color, verb tooltip in insert styling
- Object hover: ticks rotate 45 degrees to X-shape, muted grey #8b8ba0 (amber #e8c547 if flagged)
- Weapon aim: hard transition, ticks extend, center gap widens, lines thicken 1px to 2px, warm white #f0e8d8, NO bloom. Entity in sights tints to D-033 color.
- All transitions 150ms linear, z-layer 7, never changes by zone or narrative state (D-045).
- Cursor changes on LOS, not just proximity (Stig). Click range: ~2 sim tiles (= 1m per D-066). Weapon-selected mode suppresses interaction prompts unless Shift held (Ozzie: "combat intent trumps social intent").
- Rationale: Diegetic — cursor is the insert's own interface element. Consistent with D-048 (insert overlay aesthetic). Entity in weapon sights tinting to D-033 creates moral friction (aiming at a friend should feel wrong).
- Raised by: Araminta (visual spec), Stig (UX rules), Ozzie (weapon suppression)
- Dissent: None.
D-057: Entity interaction — vertical list, insert-styled (perception.md)
- Decision: Entity interactions use a compact vertical list (not radial). 2-4 options max, anchored to entity position. Insert-styled with Araminta's aesthetic. New options (unlocked by knowledge changes) highlighted with gradient glow background. Radial menu reserved for world menu only.
- Rationale: Variable-length text options (e.g., confrontation lines in character voice) break radial spatial memory. List handles 1-4 options cleanly. New-item glow signals "something changed" without the UX hazard of geometry transforming under the cursor. Labels render on z-layer 6 (insert overlay) — diegetic test: labels disappear if insert is off.
- Raised by: Stig (vertical list structure + diegetic test), Araminta (insert aesthetic). Lead resolved in Stig's favor on structure, Araminta's on styling.
- Dissent: Araminta argued for spoke radial (geometry transformation signals qualitative change). Lead rejected — moving goalpost under cursor is bad UX during aiming.
- References: Disco Elysium (world-embedded indicators), Darkwood (minimal cursor), Rimworld (right-click context list).
- Decision: Right-click opens a radial world menu. Four spokes: Observe (eye icon), Insert (phone), Comms (signal), Wait (clock). Drag-release for power users, click-click for newcomers. Insert-styled: geometric lines, thin spokes with icons, nearly transparent. Renders on z-layer 6. v0.1: 2 spokes only (Observe + Insert).
- Rationale: Radial works for world menu because items are fixed categories that don't vary by knowledge state. Spatial memory builds quickly (~10 minutes). Scaling to 5-6 spokes is straightforward.
- Raised by: Stig (structure + implementation), Araminta (insert aesthetic)
- Dissent: None.
D-059: Fog — shader-based, five layers, knowledge-graph-driven (perception.md)
- Decision: Fog is a shader-driven system (not particles) with five distinct layers:
- Clear (vision cone): soft gradient edge 6-8 sim tiles (= 3-4 visual tiles per D-066), no hard line (Darkwood approach)
- Light fog (peripheral): desaturated 40-50%, brightness -30%, animated Perlin noise (8-10s cycle), entity D-033 colors visible but reduced
- Deep fog (explored): near-monochrome, ~10% zone temperature tint (bar=warm, hub=cool, corridor=neutral), more pronounced noise (15-20s cycle)
- Unexplored + maps app: geometric wireframe outlines #333340
- Unexplored, no maps: solid near-black #12141a
- Fog is knowledge-graph-driven: same fog shows different information per character based on their KG. "Fog is not darkness — it's the absence of your attention."
- Sound pings: 2-3 concentric expanding rings (sonar-style), insert white-blue. Loud = 3 rings bright fast, quiet = 1 ring faint slow. Fade over 1.5s.
- Recognized entity in fog: D-033 color glow + faint identifying silhouette feature + 0.8s breathing pulse + half-tile position drift (approximate, not exact).
- Unrecognized entity: neutral grey #555566 blob, no features.
- Performance: <1ms/frame total. Vision cone = PointLight2D. Fog = darkness + noise shader on CanvasGroup (Layer 5).
- Soft perception degradation (diegetic scan-line interference) at high overlay load, replacing hard mode cap.
- Rationale: Fog must be crucial in v0.1 (lead directive). KG-driven fog is the primary replayability mechanism — same corridor, different character, different information visible. Shader approach confirmed technically trivial by Tyre.
- Raised by: Araminta (visual spec), Tyre (technical validation), Nigel (replayability case), Gestalt (signal framework)
- Dissent: None.
D-060: Cognitive delay for fog recognition (perception.md)
- Decision: When the player recognizes a heard/sensed entity in fog, recognition is NOT instant. Single cognitive delay: 0.6s base, 0.3s when observe_anomaly triggers (urgent context). Values are tunable. Monologue fires DURING the delay ("Those footsteps... that's Kael's walk"), not after. Visual transition: grey blob to D-033 color + silhouette over ~0.3s within the cognitive delay window. Natural recognition (organic resolve) feels different from sensor recognition (digital snap with biometric ID).
- Rationale: Recognition should feel like a cognitive event, not a UI update. The delay creates a moment where the player's brain and the character's brain are working together. Context-sensitive urgency (0.3s for anomalies) prevents the delay from feeling sluggish in tense situations.
- Raised by: Ozzie (timing values + urgency split, adopted), Gestalt (longer values, not adopted but playtesting may adjust), Araminta (visual transition spec)
- Dissent: Gestalt proposed 0.8-1.2s (longer, more contemplative). Lead chose Ozzie's shorter values as starting point, tunable.
D-061: Dialogue box — bottom screen, max 20% height, no portraits (perception.md)
- Decision: Dialogue occupies the bottom of the screen, max 20% height, max-width (not percentage-based). Layout: NPC speech top, player response options below, left-aligned. Max 3 response options visible. NO portraits (NPC is on screen). Monologue floats ABOVE the dialogue box on z-layer 7 — spatial separation allows monologue to contradict dialogue visually. Walk-away via WASD, dialogue fades over 300ms, no close button.
- Rationale: Game world stays live above the dialogue box. The player sees the NPC's body language while talking — no portrait needed. Monologue above + dialogue below = the character can think one thing while saying another. Max 3 options + invisible locks = player never knows what they're missing.
- Raised by: Stig (UI spec), Lead (20% height constraint, max-width directive)
- Dissent: Stig initially proposed 25% height and 50% width centered. Lead constrained to 20% height and max-width.
D-062: Invisible locked dialogue options (content.md)
- Decision: Dialogue options the player hasn't unlocked are completely invisible. No grayed-out options. No lock icons. No hint that more options exist. Exception: NPC holding back is communicated via monologue ("She changed the subject. Fast."), not via locked UI elements.
- Rationale: Four reasons (Gestalt): (1) Asymmetry — you don't know what you don't know. (2) Dopamine — new options appearing on repeat visits IS the reward. (3) Anti-metagaming — no checklist to complete. (4) Confrontation surprise — Confront option appearing for the first time is a dramatic moment. Strongest consensus point of the entire workshop.
- Raised by: Gestalt (proposal + rationale), Nigel (emphatic reinforcement: "non-negotiable")
- Dissent: None. Unanimous across all 8 participants.
D-063: Confrontation — same box, different weight (content.md)
- Decision: Confrontation uses the same dialogue UI as casual conversation. No separate confrontation mode. Different weight communicated through: (1) italic text in character's internal voice for confrontation options (regular: "Shift schedule" / confrontation: "I saw you in corridor B-7"), (2) pre-delivery monologue beat (1-2s: "This changes things. No taking it back."), (3) world responds — NPC shifts to Tier 2 animation, entity D-033 color may fade, monologue frequency spikes, available topics narrow. Walk-away mid-confrontation contaminates social space (NPC routine shifts, KG records incompleteness). v0.1 staging: proximity check + audio dip + text styling. Camera tighten deferred.
- Rationale: Confrontation should feel heavy because of what you're saying, not because the UI changed. The weight comes from pacing, voice, and consequence.
- Explicitly NOT: Separate confrontation UI, timed responses, visible relationship meter, correct/incorrect approaches.
- Raised by: Paula (mechanism), Ozzie (physical staging), Stig (UI container)
- Dissent: None.
D-064: Walk-away — three-phase consequences (content.md)
- Decision: Walking away from dialogue (WASD during conversation) triggers three phases: (1) Immediate break — dialogue fades over 300ms, silence. (2) NPC reacts — animation shifts, may call after you, routine may change. (3) KG records — incompleteness is logged (confrontation initiated but not completed), queryable, affects future dialogue/monologue/NPC behavior. Walk-away consequences vary by NPC tolerance threshold per seed — no universal social rules to metagame.
- Rationale: Walking away is an action with meaning. Leaving mid-confrontation is different from leaving mid-smalltalk. The KG recording means the game remembers what you started.
- Raised by: Paula (three phases), Stig (WASD mechanic, 300ms fade), Ozzie (consequences), Nigel (tolerance per seed)
- Dissent: None.
D-065: Smuggler inventory — knowledge-primary with physical evidence (scope.md)
- Decision: Knowledge is the primary "inventory" for all characters. The smuggler additionally gets a minimal physical inventory: 3 specific items in v0.1 (manifest copy, corridor access token, personal comm log). Capacity per archetype: smuggler 3-4 slots, detective 2. Carried items are PRIVATE (info boundary — not visible to other entities unless revealed via search/scan/confrontation). UI: pocket icons bottom-right, 40x40px, no empty slots displayed. Verbs: Take, Place. Server: carried items are world entities with CarriedBy component.
- Evidence presentation differs by archetype (Paula): Detective sees case-file-style (structured, what/where/when/source/confidence, insert suggests links). Smuggler sees personal notebook (organized by person, informal voice, no contradiction flags). Same underlying KG, different presentation layer.
- Rationale: Smuggler's word doesn't carry institutional weight — they need tangible proof. Detective's word IS evidence (institutional authority), so they're mostly KG-only. Three items demonstrate the risk/reward concept and differentiate the smuggler's gameplay loop.
- Raised by: Lead (smuggler needs inventory), Paula (three items + presentation split), Gestalt (knowledge-primary framework), Tyre (minimal implementation), Dudley (server model + info boundary)
- Dissent: Tyre initially argued zero physical items in v0.1 (saves 3-4 sprints). Adapted with SmallVec<3> implementation.
Decisions Endorsed (Confirmed from Prior or This Workshop)
These were raised in the workshop and confirmed, but may overlap with or extend existing decisions:
| Topic |
Status |
Reference |
| Signal/answer framework for information access |
New principle — recommend formalization |
Gestalt R1, Ozzie R1 |
| Eavesdrop: passive base + positioning enhances quality |
Extends D-018 |
Dudley R2 (ListeningFocus) |
| Two-phase verb computation (simulation max then observer filter) |
Architecture pattern |
Dudley R1 |
| SP auto-pause for implant, overlay for MP |
Extends D-009 implications |
Tyre R1, Lead final |
| Implant organized by data type, not quest |
UX principle |
Ozzie R1 |
| No highlights on implant data |
UX principle |
Ozzie R1 |
| Soft perception degradation (diegetic), not hard cap |
Extends D-017 |
Araminta R2, Lead LD-04 |
| MovementProfile per archetype |
Extends D-053 |
Dudley R2 |
| Message history: design KG schema now, build display later |
Scope constraint |
Stig R2, Paula R2, Lead LD-09 |
| Sprint double-take (anomaly monologue survives sprint) |
Extends D-055 |
Ozzie R2 |
v0.1 Minimum Viable Interaction Model
Control Map
| Input |
Action |
Stance/Context |
Notes |
| WASD |
Move |
Current stance |
Tile-based, Tween interpolated 100-150ms |
| Toggle key (TBD) |
Cycle stances |
— |
Sprint / Walk / Careful / Crouch |
| Mouse movement |
Facing direction |
All |
Client-side float, server gets octant |
| Left click |
Default interaction |
Non-weapon |
Context: cursor state determines action |
| Left click |
Fire |
Weapon aim |
Cursor = weapon reticle |
| Right click |
World radial menu |
All |
v0.1: 2 spokes (Observe, Insert) |
| Scroll wheel |
Zoom |
All |
Fog boundaries unchanged |
| WASD during dialogue |
Walk away |
Dialogue open |
300ms fade, 3-phase consequences |
| Shift (with weapon) |
Suppress interaction |
Weapon selected |
Hold to interact while armed |
Stance Table
| Stance |
Speed |
Monologue Rate |
Noise |
Interaction Buffer |
v0.1 |
| Sprint |
1 tile/1 tick |
40% (urgent only) |
Loud |
CLEARED (D-055) |
Yes |
| Walk |
1 tile/2 ticks |
100% (normal) |
Normal |
Active |
Yes |
| Careful |
1 tile/3 ticks |
150% + tell notice bonus |
Quiet |
Active (enhanced) |
Yes |
| Crouch |
TBD |
TBD |
Very quiet |
Active |
Yes (D-054 occupancy) |
| Prone |
TBD |
TBD |
Minimal |
TBD |
No (future) |
Cursor States (D-056)
| State |
Visual |
Color |
z-layer |
| Default |
Four thin inward ticks, bloom |
#c8d0e0 |
7 |
| Entity hover |
Expand outward, corner brackets, verb tooltip |
D-033 color |
7 |
| Object hover |
Rotate 45 degrees (X-shape) |
#8b8ba0 / #e8c547 |
7 |
| Weapon aim |
Extend, gap widens, 2px, NO bloom |
#f0e8d8 |
7 |
Fog Layers (D-059)
| Layer |
Treatment |
Key Values |
| Clear |
Soft gradient edge |
6-8 sim tiles (= 3-4 visual tiles, D-066) |
| Light fog |
Desaturated, Perlin noise |
40-50%, 8-10s cycle |
| Deep fog |
Near-monochrome, zone temperature |
~10% tint, 15-20s cycle |
| Unexplored + maps |
Geometric wireframe |
#333340 |
| Unexplored |
Solid black |
#12141a |
Entity Interaction (D-057)
| Element |
Spec |
| Menu type |
Vertical list, insert-styled |
| Max options |
2-4, anchored to entity position |
| New option highlight |
Gradient glow background |
| Trigger |
LOS + ~2 sim tiles proximity (= 1m, D-066) |
| Diegetic test |
Labels on z-layer 6, disappear if insert off |
| Element |
Spec |
| Menu type |
Radial, 4 spokes (v0.1: 2) |
| v0.1 spokes |
Observe (eye), Insert (phone) |
| Full spokes |
+ Comms (signal), Wait (clock) |
| Interaction |
Drag-release or click-click |
Dialogue (D-061, D-062, D-063, D-064)
| Element |
Spec |
| Position |
Bottom screen, max 20% height |
| Width |
Max-width (not percentage) — value TBD |
| Layout |
NPC speech top, options below, left-aligned |
| Max options |
3 visible |
| Locked options |
Invisible (D-062) |
| Portraits |
None |
| Monologue |
Floats above dialogue (z-layer 7) |
| Confrontation |
Same box, italic voice, 1-2s monologue beat |
| Walk-away |
WASD, 300ms fade, 3-phase consequences |
Smuggler Inventory (D-065)
| Element |
Spec |
| Model |
Knowledge-primary + physical evidence |
| Capacity |
Smuggler 3-4, Detective 2 |
| v0.1 items |
Manifest copy, corridor access token, personal comm log |
| UI |
Pocket icons, bottom-right, 40x40px, no empty slots |
| Verbs |
Take, Place |
| Info boundary |
Carried items private |
Fog Recognition (D-060)
| Element |
Spec |
| Cognitive delay |
0.6s base, 0.3s urgent |
| Monologue timing |
Fires DURING delay, not after |
| Visual transition |
Grey to D-033 color + silhouette over ~0.3s |
| Natural recognition |
Organic resolve |
| Sensor recognition |
Digital snap with biometric ID |
| Position accuracy |
Half-tile drift (approximate) |
Server Performance Budget
| System |
Budget |
Source |
| Full tick pipeline (9 steps) |
<0.5ms/tick |
Dudley |
| Fog rendering |
<1ms/frame |
Tyre |
| Client overlay composition (4 modes) |
~7-11ms/frame |
Tyre |
Implementation Priorities
Priority 1: Core Movement and Interaction (Server)
Estimate: ~5-6 days server (Tyre)
- Stance system (Sprint/Walk/Careful/Crouch) with tick-based movement values
- MovementProfile component per archetype
- Sprint interaction buffer suppression (D-055)
- Same-tile occupancy (TilePresence with posture layers) (~150 lines)
- Two-phase verb computation extension (ObjectType component, KG-gated Phase 2)
- Cognitive delay system for fog recognition (0.6s/0.3s, tunable)
Priority 2: Core UI and Rendering (Client)
Estimate: ~8-10 days client (Tyre)
- Cursor state machine (4 states, Araminta spec, 150ms transitions)
- Fog shader (5-layer Araminta spec, CanvasGroup Layer 5)
- Fog entity visualization (sound pings, recognized/unrecognized, cognitive delay animation)
- Entity interaction vertical list (insert-styled, z-layer 6, diegetic test)
- World radial menu (2 spokes: Observe, Insert)
- Dialogue box (max 20% height, max-width, NPC speech + options + monologue)
- Walk-away mechanic (WASD detection, 300ms fade)
Priority 3: Smuggler Systems
- Minimal inventory (SmallVec or BTreeMap, Take/Place, info boundary)
- Pocket-icon UI (bottom-right, 40x40px, no empty slots)
- Three smuggler items (manifest copy, access token, comm log) — content definition
- Contraband detection (NPC scan checks carried items + KG)
Priority 4: Perception and Audio
- Eavesdrop positioning (ListeningFocus accumulates stationary_ticks) — deferrable per Dudley
- Sprint double-take (anomaly monologue survival)
- 6 new audio assets (cursor hover, weapon mode, fog recognition, implant open/close, dialogue emerge, confrontation dip)
- Confrontation staging (proximity + audio dip + text styling)
Priority 5: Deferred (Design Now, Build Later)
- InteractionMemory KG schema for message history (LD-09)
- Archetype-specific evidence presentation (detective case file vs smuggler notebook)
- Pre-dialogue proximity acknowledgment (NPC turns, ambient line)
- Camera tighten for confrontation staging
- Prone stance
- Perception mode soft degradation (scan-line interference)
Open Questions Deferred to Implementation
These questions were not resolved in the workshop and should be addressed during implementation:
| # |
Question |
Owner Suggestion |
| OQ-01 |
Tile size in world units? Resolved: 0.5m sim tiles, 1m visual tiles (D-066) |
Tyre/Dudley |
| OQ-07 |
No insert = no interaction prompts? (Diegetic test implication) |
Stig/Gestalt |
| OQ-08 |
False-positive fog shapes: gameplay or atmospheric? |
Gestalt/Araminta |
| OQ-09 |
Zone temperature memory: server-tracked or client-only? |
Tyre/Dudley |
| OQ-10 |
Sensor recognition "different monologue voice": text styling or narrator tone? |
Paula/Stig |
| OQ-13 |
No data highlights in implant — how does player know new data was added? |
Ozzie/Stig |
| OQ-14 |
Scan effectiveness varies per character seed: different data or different actions? |
Gestalt/Dudley |
| OQ-18 |
Nigel's dialogue access tiers vs D-041 confidence hierarchy: same or layered? |
Paula/Gestalt |
| OQ-21 |
Archetype evidence presentation: skin on same app or different apps? |
Stig/Paula |
| OQ-24 |
Inventory capacity: 3 slots (Tyre) or 4 (Dudley)? |
Lead call needed |
| OQ-25 |
Stance name: "Careful" or "Sneak"? |
Lead call needed |
| OQ-26 |
Multiplicative perception formula: actual modifier values? |
Gestalt/Dudley |
| OQ-27 |
Soft perception degradation threshold? |
Araminta/Gestalt |
| OQ-28 |
InteractionMemory KG schema design? |
Paula/Dudley |
| OQ-29 |
Dialogue max-width: pixel value? |
Stig/Lead |
| OQ-30 |
14 audio assets: who creates them, when in sprint schedule? |
Inigo/Si |
Suggested Tickets
For SI to process and assign to sprints:
Server Team
| # |
Title |
Scope |
Estimate |
Depends On |
| T-1 |
Implement stance system (Sprint/Walk/Careful/Crouch) |
D-053 |
2-3d |
— |
| T-2 |
MovementProfile component per archetype |
D-053 |
1d |
T-1 |
| T-3 |
Sprint interaction buffer suppression |
D-055 |
0.5d |
T-1 |
| T-4 |
Same-tile occupancy (TilePresence layers) |
D-054 |
1-2d |
— |
| T-5 |
ObjectType component + verb sets per type |
D-057 (server) |
1d |
— |
| T-6 |
Two-phase verb computation: KG-gated Phase 2 |
D-057 (server) |
1-2d |
T-5 |
| T-7 |
Cognitive delay system for fog recognition |
D-060 |
1d |
— |
| T-8 |
Smuggler inventory (BTreeMap/SmallVec, Take/Place, info boundary) |
D-065 |
1-2d |
— |
| T-9 |
Contraband detection (scan + KG check) |
D-065 |
0.5d |
T-8 |
| T-10 |
ListeningFocus (eavesdrop positioning) |
D-053 ext |
1d |
T-1 (deferrable) |
| T-11 |
Walk-away KG recording (confrontation incompleteness) |
D-064 |
0.5d |
— |
| T-12 |
Sprint anomaly monologue (double-take) |
D-055 ext |
0.5d |
T-3 |
Client Team
| # |
Title |
Scope |
Estimate |
Depends On |
| T-13 |
Cursor state machine (4 states, Araminta spec) |
D-056 |
2d |
— |
| T-14 |
Fog shader (5-layer, CanvasGroup Layer 5) |
D-059 |
3-4d |
— |
| T-15 |
Fog entity visualization (pings, recognized/unrecognized, delay anim) |
D-059, D-060 |
2d |
T-14, T-7 |
| T-16 |
Entity interaction vertical list (insert-styled) |
D-057 |
1-2d |
T-13 |
| T-17 |
World radial menu (2 spokes v0.1) |
D-058 |
1d |
— |
| T-18 |
Dialogue box (max 20% height, max-width) |
D-061 |
2d |
— |
| T-19 |
Dialogue response selection (max 3, invisible locks) |
D-062 |
1d |
T-18 |
| T-20 |
Confrontation text styling (italic voice, monologue beat) |
D-063 |
1d |
T-18, T-19 |
| T-21 |
Walk-away mechanic (WASD detect, 300ms fade) |
D-064 |
0.5d |
T-18 |
| T-22 |
Smuggler pocket-icon inventory UI |
D-065 |
1d |
T-8 |
| T-23 |
Stance toggle UI (keybind, HUD indicator) |
D-053 |
0.5d |
T-1 |
Audio Team
| # |
Title |
Scope |
Estimate |
Depends On |
| T-24 |
6 interaction audio assets |
D-059, D-060, D-061 |
2-3d |
— |
Design/Content Team
| # |
Title |
Scope |
Estimate |
Depends On |
| T-25 |
Define 3 smuggler item specs (content/attributes/interactions) |
D-065 |
1d |
— |
| T-26 |
InteractionMemory KG schema design |
D-064, LD-09 |
1d |
— |
| T-27 |
Archetype evidence presentation spec (detective case file vs smuggler notebook) |
D-065 |
1d |
— |
Replayability Validation
Nigel's Round 2 scenario trace validates the v0.1 interaction model against D-027 replayability criteria:
- 10-minute scenario, two characters (smuggler vs detective), same world state
- 12 points of divergence, zero scripted branching
- All divergence emerges from knowledge graph differences interacting with: tile-based positioning, fog visibility, verb sets, dialogue access tiers, evidence presentation, and inventory constraints
- Passes the second-playthrough test: playing again as a different character reveals genuinely different information, interactions, and available actions
Cross-Layer Interaction Chains (Workshop Validated)
Five chains documented in workshop notes demonstrate how the layers compose:
- Eavesdropping Loop: Careful stance > tile positioning > ListeningFocus > monologue > KG update > new dialogue options
- Fog Recognition Loop: Sound/sensor detection > cognitive delay (0.6/0.3s) > monologue during delay > KG query > identity resolution or blob remains
- Confrontation Chain: KG contradiction > monologue signal > approach NPC > pre-dialogue beat > dialogue > confront option (italic) > monologue beat > delivery > world responds > KG records
- Smuggler Evidence Loop: Eavesdrop > KG records discrepancy > terminal access > raw data (no highlights) > player notices > Take physical item > info boundary (private) > risk/leverage
- Sprint Double-Take: Sprint through corridor > interaction suppressed > routine monologue suppressed > anomaly detected > delayed monologue > player decides: double back or continue
Workshop closed. 13 decisions produced (D-053 through D-065). 27 suggested tickets across server, client, audio, and design teams. Full discussion notes at docs/workshops/control-interaction/workshop-notes.md.
Compiled by Qatux.