Delete 64 hand-authored Krenn dialogue/monologue/NPC files superseded by generated NPCs (D-122) and voice pipeline (D-138). Remove detective investigation system dropped in v0.2 pivot (D-117): knowledge catalog, faction, design docs, workshop archives, wireframe detective sections. Clean investigation.* fact_id references from environmental and triangle files. Strip investigation cross-references from overheard.yaml. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
# Insert/HUD Wireframe and Visual Specification — v0.1
|
||||
## Dual Character Variants: Smuggler + Detective
|
||||
|
||||
**Ticket:** #314
|
||||
**Author:** Araminta (Visual Designer)
|
||||
@@ -7,6 +6,8 @@
|
||||
**Status:** Active — feeds #263 (time display client implementation) and #151 (minimap rendering)
|
||||
**Visual grammar reference:** `docs/design/visual-grammar-v01.md` (§7 Neural Insert Overlay)
|
||||
|
||||
> **Sprint 26 / D-117:** Detective archetype removed. Detective-specific sections (§3.3, §4.2, §5.2, §10.2, §10.3) have been deleted. Remaining content reflects the base lattice profile (smuggler/observer). Smuggler variant retained as reference for the tycoon observer insert design.
|
||||
|
||||
---
|
||||
|
||||
## 1. System Architecture
|
||||
@@ -16,20 +17,20 @@ The insert HUD is not a UI panel bolted onto the game. It is the player characte
|
||||
This has direct design consequences:
|
||||
|
||||
- The insert does not appear/disappear — it activates and deactivates. The character's lattice is always there; they choose when to engage it.
|
||||
- Labels use the character's vocabulary, not the game's. The smuggler's insert calls it "The Last Shift." The detective's insert calls it "Licensed Establishment, District 7."
|
||||
- Labels use the character's vocabulary, not the game's. The smuggler's insert calls it "The Last Shift."
|
||||
- The same underlying `ObserverSnapshot` feeds both variants. One parameterized system: `lattice_profile` on the snapshot determines which visual mode renders. Stig builds one HUD framework, not two. The variants are rendering configurations, not separate systems.
|
||||
|
||||
### 1.1 Technical Parameters
|
||||
|
||||
| Parameter | Smuggler | Detective |
|
||||
|-----------|----------|-----------|
|
||||
| `lattice_profile` | `lattice_baseline` | `lattice_augmented` |
|
||||
| Line weight | 1px | 1–2px |
|
||||
| Annotation density | Sparse — essential markers only | Dense — more markers, connection lines |
|
||||
| Passive opacity | 60% | 80% |
|
||||
| Active opacity | 85% | 100% |
|
||||
| Bloom | 2–3px gaussian at 40% blend | 2–3px gaussian at 40% blend |
|
||||
| Chrome color | `#c8d0e0` | `#c8d0e0` |
|
||||
| Parameter | Value |
|
||||
|-----------|-------|
|
||||
| `lattice_profile` | `lattice_baseline` |
|
||||
| Line weight | 1px |
|
||||
| Annotation density | Sparse — essential markers only |
|
||||
| Passive opacity | 60% |
|
||||
| Active opacity | 85% |
|
||||
| Bloom | 2–3px gaussian at 40% blend |
|
||||
| Chrome color | `#c8d0e0` |
|
||||
|
||||
### 1.2 Z-Layer Position
|
||||
|
||||
@@ -104,39 +105,13 @@ Single line: the time. Informal, just the clock.
|
||||
|
||||
No annotation. The smuggler's lattice gives them the time. That's it.
|
||||
|
||||
### 3.3 Detective Variant
|
||||
|
||||
Two lines: clock on top, shift indicator below. The detective thinks in shifts.
|
||||
|
||||
```
|
||||
09:42
|
||||
SHIFT A ·
|
||||
```
|
||||
|
||||
| Element | Value |
|
||||
|---------|-------|
|
||||
| Time text | `{HH}:{MM}` — Michroma 20px, `#c8d0e0` at 80% passive, y: 26px in container |
|
||||
| Phase label | `SHIFT {X}` — Michroma 11px, `#c8d0e0` at 60%, y: 50px in container |
|
||||
| Phase dot | 4px circle, phase-color (see below), same y as phase label |
|
||||
|
||||
**Day phase to shift mapping:**
|
||||
|
||||
| Game time | Shift label | Dot color |
|
||||
|-----------|-------------|-----------|
|
||||
| 05:00–12:00 | `SHIFT A` | `#c8d0e0` (chrome, neutral) |
|
||||
| 12:00–18:00 | `SHIFT B` | `#c8d0e0` (chrome, neutral) |
|
||||
| 18:00–22:00 | `SHIFT C` | `#e8c547` (amber — social hours, higher risk of contacts) |
|
||||
| 22:00–05:00 | `SHIFT OFF` | `#4a9ebb` (teal — night, lower routine activity) |
|
||||
|
||||
The dot is a subtle visual cue, not a state machine icon. It gives the detective's lattice a slightly more annotated feel than the smuggler's plain clock.
|
||||
|
||||
### 3.4 Insert-Off Behavior
|
||||
### 3.3 Insert-Off Behavior
|
||||
|
||||
When `insert_active == false`:
|
||||
- Time display dims to 50% of passive opacity
|
||||
- Background panel disappears entirely
|
||||
- Text remains — the character always knows what time it is, even without active lattice engagement. Time is ambient lattice output, not targeting output.
|
||||
- Phase label (detective) also dims to 50%
|
||||
|
||||
|
||||
The time display is the one persistent insert element. Everything else goes dark on insert deactivation.
|
||||
|
||||
@@ -188,59 +163,6 @@ Named NPCs (Kael, Lera, Sera, etc.) always show a casual label. Generic NPCs sho
|
||||
|
||||
The smuggler does not see "Person of Interest." To them, amber means "something's off about this person" — not a case file designation.
|
||||
|
||||
### 4.2 Detective Variant — Investigation Overlay
|
||||
|
||||
The detective sees their world as a case map. Known individuals are flagged. Locations have institutional labels. The overlay is denser and more annotated.
|
||||
|
||||
**Named NPC marker specification:**
|
||||
|
||||
| NPC type | Shape | Size | Color |
|
||||
|----------|-------|------|-------|
|
||||
| Person of Interest | Diamond (rotated square) | 10px × 10px | `#e8c547` amber |
|
||||
| Known/Friendly | Filled circle | 6px | `#6bc9a6` green |
|
||||
| Unknown | Filled circle | 6px | `#4a9ebb` teal |
|
||||
| Hostile / Suspect | Diamond | 10px × 10px | `#d45d5d` red |
|
||||
|
||||
The diamond shape is the detective's POI designation — it communicates "flagged" without text. The smuggler's variant uses only circles because their lattice doesn't have case-file designation logic.
|
||||
|
||||
**Label specification:**
|
||||
|
||||
| Property | Value |
|
||||
|----------|-------|
|
||||
| Typeface | Michroma 11px |
|
||||
| Color | `#c8d0e0` at 80% passive, 100% on hover |
|
||||
| Position | 10px above the marker, right-aligned to marker center |
|
||||
| NPC label format | `POI: K. Davan` (formal: last name initial + surname) |
|
||||
| NPC label format | `K. Davan` for Known/non-POI |
|
||||
| Location label | See §5 |
|
||||
|
||||
**Evidence annotation:**
|
||||
|
||||
When the detective has logged evidence associated with an entity, a small square appears adjacent to their marker:
|
||||
|
||||
| Property | Value |
|
||||
|----------|-------|
|
||||
| Shape | Filled square |
|
||||
| Size | 4px × 4px |
|
||||
| Position | 4px right of the primary marker |
|
||||
| Color | `#e8c547` amber |
|
||||
| Opacity | 60% passive, 100% on hover |
|
||||
|
||||
This is the insert's way of flagging "you have something on this person." It doesn't say what.
|
||||
|
||||
**Commission grid overlay (Detective only):**
|
||||
|
||||
The detective's augmented lattice renders a very faint reference grid across the viewport. This is the "commission-style" aesthetic — the world read as a site map.
|
||||
|
||||
| Property | Value |
|
||||
|----------|-------|
|
||||
| Grid lines | Horizontal + vertical, every 5 visual tiles (~320px) |
|
||||
| Line color | `#333340` at 20% opacity |
|
||||
| Line weight | 1px |
|
||||
| Behavior | Always visible when insert active, disappears on insert-off |
|
||||
|
||||
The grid does not animate, pulse, or react. It is a passive reference overlay. Five lines across the width, five down the height, making a 5×5 grid of reference squares. It is barely visible — felt as structure, not seen as decoration.
|
||||
|
||||
---
|
||||
|
||||
## 5. Location Labels
|
||||
@@ -265,25 +187,6 @@ Casual labels, written in the smuggler's vocabulary. These are their personal pi
|
||||
| Position | Centered on location anchor, 16px above entity-level (below any entity markers at that location) |
|
||||
| Visibility | Always visible for known locations, fades in on discovery |
|
||||
|
||||
### 5.2 Detective Variant
|
||||
|
||||
Institutional labels, written in Commission case file format.
|
||||
|
||||
| Location | Label text |
|
||||
|----------|-----------|
|
||||
| The Last Shift (bar) | `Licensed Establishment · District 7` |
|
||||
| The Terminal (logistics hub) | `Freight Operations Hub · Level 2` |
|
||||
| Maintenance corridor | `Restricted Access — Corridor B-7` |
|
||||
| Kael's regular position | `K. Davan – Last Sighted` |
|
||||
|
||||
| Property | Value |
|
||||
|----------|-------|
|
||||
| Typeface | Michroma 11px |
|
||||
| Color | `#c8d0e0` at 70% — slightly more prominent than smuggler's labels |
|
||||
| Position | Same as smuggler, centered on anchor |
|
||||
| Secondary text | Dot separator `·` between primary name and category/district |
|
||||
| Visibility | Always visible for known/case-file locations |
|
||||
|
||||
---
|
||||
|
||||
## 6. Border Arrows (Off-Screen Navigation)
|
||||
@@ -307,10 +210,9 @@ When a known POI or tracked entity is outside the current viewport, a border arr
|
||||
|
||||
**Decay:** If the character has only `Suspects` confidence about a location (not `KnowsOf`), the border arrow renders at 30% opacity with a dashed border (1px alternating 2px on / 2px off). "Something might be there."
|
||||
|
||||
### 6.2 Smuggler vs Detective
|
||||
### 6.2 Arrow Behavior
|
||||
|
||||
- **Smuggler:** Border arrows appear for Known/Friendly NPCs and personal pins. The arrow color is the NPC's relationship color. The label is casual. Unknown NPCs do not generate border arrows.
|
||||
- **Detective:** Border arrows appear for all case-file entries, POIs, and known locations regardless of relationship state. Evidence-flagged entities show the amber evidence square (4px) adjacent to the arrow.
|
||||
Border arrows appear for Known/Friendly NPCs and personal pins. The arrow color is the NPC's relationship color. The label is casual. Unknown NPCs do not generate border arrows.
|
||||
|
||||
---
|
||||
|
||||
@@ -334,8 +236,6 @@ Per D-065: the smuggler can carry up to 3–4 physical items. Icons appear in th
|
||||
|
||||
Icons do not disappear when insert is off — they are physical items, not lattice annotations. The character still has pockets whether or not their insert is active.
|
||||
|
||||
**Detective inventory:** The detective has 2 inventory slots but they are knowledge-only in v0.1 (D-065). No inventory icons display for the detective in v0.1.
|
||||
|
||||
---
|
||||
|
||||
## 8. Stance Indicator
|
||||
@@ -369,8 +269,6 @@ When `insert_active == false`:
|
||||
| Entity markers | Hidden |
|
||||
| Location labels | Hidden |
|
||||
| Border arrows | Hidden |
|
||||
| Commission grid (detective) | Hidden |
|
||||
| Evidence annotations | Hidden |
|
||||
| Bloom | Off — no gaussian pass |
|
||||
| Time display | Dims to 50% of passive opacity, background panel disappears |
|
||||
| Stance indicator | Remains — 30% opacity |
|
||||
@@ -459,60 +357,6 @@ The Last Shift = location label (Michroma 12px, 50% chrome)
|
||||
CAREFUL = stance (Michroma 11px, lower-left, 50%)
|
||||
```
|
||||
|
||||
### 10.2 Detective Variant — Same Location, Same Time
|
||||
|
||||
The detective is outside the bar, watching the entrance. Kael is inside, behind a wall — the lattice shows his last known position as a dim marker. A POI is approaching from the corridor (off-screen right).
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────────────┐
|
||||
│ WALK [ANALYT] 09:42 │
|
||||
│ SHIFT C · │
|
||||
│ +·····+·····+·····+·····+·····+·····+·····+·····+·····+·····+ │
|
||||
│ · ·│
|
||||
│ · ◆ [player] → ·│
|
||||
│ · K. Davan (blue-wh) [POI: arrow, amber, off-screen]·│
|
||||
│ · (amber diamond) ·│
|
||||
│ · ·│
|
||||
│ · Licensed Establishment · District 7 ·│
|
||||
│ +·····+·····+·····+·····+·····+·····+·····+·····+·····+·····+ │
|
||||
│ · ·│
|
||||
│ · ·│
|
||||
│ │
|
||||
│ WALK │
|
||||
├─────────────────────────────────────────────────────────────────────────┤
|
||||
│ [dialogue box — inactive] │
|
||||
└─────────────────────────────────────────────────────────────────────────┘
|
||||
|
||||
Legend:
|
||||
◆ = POI diamond marker (10×10px) K. Davan = formal label (Michroma 11px)
|
||||
+·····+ = commission grid overlay (Michroma thin, 20% opacity)
|
||||
→ = border arrow (off-screen POI, amber — K. Davan connection)
|
||||
Licensed Establishment · District 7 = institutional location label
|
||||
09:42 / SHIFT C · = time display + shift with amber phase dot
|
||||
[ANALYT] = perception mode indicator (placeholder position, upper-center-right)
|
||||
```
|
||||
|
||||
### 10.3 Entity Hover State — Detective, POI Hover
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────────────┐
|
||||
│ WALK [ANALYT] 09:42 │
|
||||
│ SHIFT C · │
|
||||
│ │
|
||||
│ Talk │
|
||||
│ Observe │
|
||||
│ ◆ Confront ←─ interaction verbs (amber, 13px) │
|
||||
│ K. Davan │
|
||||
│ [■]◆ (brightened, 100%, bloom 60%) │
|
||||
│ │
|
||||
│ all other markers at 40% opacity ─────────────────────────→ │
|
||||
│ ● │
|
||||
│ (40%) │
|
||||
└─────────────────────────────────────────────────────────────────────────┘
|
||||
|
||||
[■] = evidence annotation (4×4px amber square, adjacent to diamond)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 11. Color Reference Summary
|
||||
@@ -526,8 +370,7 @@ All colors from `visual-grammar-v01.md` §1.5 and §3.2. Reproduced here for imp
|
||||
| Entity — Known/Friendly | `#6bc9a6` | Soft green. Trusted network. |
|
||||
| Entity — POI | `#e8c547` | Warm amber. Flagged. |
|
||||
| Entity — Hostile | `#d45d5d` | Muted red. Subjective danger. |
|
||||
| Player — Detective | `#e0e8ff` | Cool blue-white. |
|
||||
| Player — Smuggler | `#e8e0d0` | Warm cream. |
|
||||
| Player | `#e8e0d0` | Warm cream. |
|
||||
| Unexplored wireframe | `#333340` | Not used in HUD chrome directly — world layer use |
|
||||
| Time panel background | `#0e1218` at 40% | Barely-there. Matches zone ambient palette. |
|
||||
|
||||
@@ -541,11 +384,9 @@ All text is Michroma Regular 400 (Google Fonts). No exceptions (visual-grammar-v
|
||||
|
||||
| Role | Size | Color | Opacity (passive / active) | Z-layer |
|
||||
|------|------|-------|---------------------------|---------|
|
||||
| Time display | 24px (smuggler) / 20px (detective) | `#c8d0e0` | 80% / 100% | 6 |
|
||||
| Phase label (detective) | 11px | `#c8d0e0` | 60% / 80% | 6 |
|
||||
| Time display | 24px | `#c8d0e0` | 80% / 100% | 6 |
|
||||
| Entity label (hover) | 11px | `#c8d0e0` | 70% / 100% | 6 |
|
||||
| Location label (smuggler) | 12px | `#c8d0e0` | 50% / 70% | 6 |
|
||||
| Location label (detective) | 11px | `#c8d0e0` | 70% / 90% | 6 |
|
||||
| Location label | 12px | `#c8d0e0` | 50% / 70% | 6 |
|
||||
| Interaction verb | 13px | D-033 target color | 95% (always active) | 6 |
|
||||
| Stance indicator | 11px | `#c8d0e0` | 50% / 60% | 6 |
|
||||
| Border arrow label (hover) | 10px | `#c8d0e0` | 0% / 100% (hover-only) | 6 |
|
||||
@@ -575,15 +416,12 @@ These are deliberately out of scope for #314. Separate tickets own them.
|
||||
3. Time display text must be **right-aligned** within the container. Don't center it — it should feel like a readout in the upper-right corner.
|
||||
4. The background panel (`#0e1218` at 40%) should be a simple NinePatchRect or ColorRect — minimal, no rounded corners.
|
||||
5. When `insert_active == false`: set time display `modulate.a = 0.5 * passive_opacity` and hide the background panel. The text stays; the container chrome disappears.
|
||||
6. For the detective's phase label: drive the shift string from a simple range lookup on the game hour (see §3.3 table above). The dot color is a color constant mapped from phase — not dynamic.
|
||||
7. The phase label is visible only on `lattice_profile == lattice_augmented`. Single boolean check in the time display node.
|
||||
|
||||
**For the entity marker system (future tickets):**
|
||||
|
||||
- One marker scene, parametrized by shape (circle vs diamond), size, color, bloom intensity
|
||||
- The `lattice_profile` drives shape selection: baseline = circles always, augmented = diamonds for POI state, circles for other states
|
||||
- Evidence annotation (`■`) is a separate child node, shown/hidden based on KnowledgeGraph query for evidence entries on this entity
|
||||
- Commission grid is a separate CanvasLayer node, only visible when `lattice_profile == lattice_augmented` and `insert_active == true`
|
||||
- One marker scene, parametrized by shape (circle), size, color, bloom intensity
|
||||
- All entity markers use the baseline dot (circle) — no diamond/POI shapes in the base profile
|
||||
- Bloom intensity driven by relationship color from D-033
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user