16 d2 diagrams covering architecture (IPC bridge, system tiers, testability, audio bus), data flow (perception, dialogue, eavesdrop pipelines), entity (knowledge graph, NPC generation, dialogue tags), state (simulation tiers, movement stances, knowledge confidence), and UI (HUD layout, interaction flow, fog layers). PNG output for universal viewer compatibility. Removes test SVG from font debugging. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
172 lines
5.1 KiB
Plaintext
172 lines
5.1 KiB
Plaintext
# Dialogue Pipeline — D-028, D-062, D-063, D-064, D-075
|
|
# Four relational layers, two-phase verb computation, invisible locks,
|
|
# confrontation weight, walk-away consequences.
|
|
|
|
vars: {
|
|
color-bg: "#2a3040"
|
|
color-stroke: "#333340"
|
|
color-text: "#c8d0e0"
|
|
color-accent: "#c8d8f0"
|
|
color-dim: "#1a1e24"
|
|
}
|
|
|
|
direction: down
|
|
|
|
player_action: Player Initiates Interaction {
|
|
shape: oval
|
|
style.fill: ${color-bg}
|
|
style.stroke: ${color-accent}
|
|
style.font-color: ${color-text}
|
|
}
|
|
|
|
verb_phase1: Phase 1 — Simulation\n(no KnowledgeGraph read) {
|
|
style.fill: ${color-bg}
|
|
style.stroke: ${color-stroke}
|
|
style.font-color: ${color-text}
|
|
style.border-radius: 4
|
|
|
|
object_type: ObjectType component\n→ max possible verb set {
|
|
style.fill: ${color-dim}
|
|
style.stroke: ${color-stroke}
|
|
style.font-color: ${color-text}
|
|
}
|
|
}
|
|
|
|
verb_phase2: Phase 2 — Observer\n(reads KnowledgeGraph) {
|
|
style.fill: ${color-bg}
|
|
style.stroke: ${color-accent}
|
|
style.font-color: ${color-text}
|
|
style.border-radius: 4
|
|
|
|
kg_filter: Filter by KG confidence\n(Confront requires KnowsDetails+) {
|
|
style.fill: ${color-dim}
|
|
style.stroke: ${color-accent}
|
|
style.font-color: ${color-text}
|
|
}
|
|
poi_flip: POI priority flip\n+ contradiction markers {
|
|
style.fill: ${color-dim}
|
|
style.stroke: ${color-stroke}
|
|
style.font-color: ${color-text}
|
|
}
|
|
archetype_filter: Archetype filter rules\n(same crate: smuggler→Stash · detective→Flag) {
|
|
style.fill: ${color-dim}
|
|
style.stroke: ${color-stroke}
|
|
style.font-color: ${color-text}
|
|
}
|
|
}
|
|
|
|
layer_filter: Four Relational Layers (D-028) {
|
|
style.fill: ${color-dim}
|
|
style.stroke: ${color-stroke}
|
|
style.font-color: ${color-text}
|
|
|
|
l1: Layer 1 — Access Tier\n(RelationshipState only) {
|
|
style.fill: ${color-bg}
|
|
style.stroke: ${color-stroke}
|
|
style.font-color: ${color-text}
|
|
}
|
|
l2: Layer 2 — Relationship History\n(interaction log: greeting + topic) {
|
|
style.fill: ${color-bg}
|
|
style.stroke: ${color-stroke}
|
|
style.font-color: ${color-text}
|
|
}
|
|
l3: Layer 3 — Trust-gated Gossip\n(RelationshipState AND KnowledgeConfidence — D-075) {
|
|
style.fill: ${color-bg}
|
|
style.stroke: ${color-accent}
|
|
style.font-color: ${color-text}
|
|
}
|
|
l4: Layer 4 — Unprompted Disclosure\n(weighted by trust + mood) {
|
|
style.fill: ${color-bg}
|
|
style.stroke: ${color-stroke}
|
|
style.font-color: ${color-text}
|
|
}
|
|
}
|
|
|
|
invisible_locks: Invisible Locked Options (D-062) {
|
|
style.fill: ${color-bg}
|
|
style.stroke: ${color-stroke}
|
|
style.font-color: ${color-text}
|
|
style.border-radius: 4
|
|
|
|
rule: Locked options = completely invisible\nNo grayed-out · no lock icons · no hints {
|
|
style.fill: ${color-dim}
|
|
style.stroke: ${color-stroke}
|
|
style.font-color: ${color-text}
|
|
}
|
|
reveal: New options appearing on repeat visits\n= the reward (dopamine) {
|
|
style.fill: ${color-dim}
|
|
style.stroke: ${color-accent}
|
|
style.font-color: ${color-text}
|
|
}
|
|
}
|
|
|
|
confrontation: Confrontation Weight (D-063) {
|
|
style.fill: ${color-bg}
|
|
style.stroke: ${color-accent}
|
|
style.font-color: ${color-text}
|
|
style.border-radius: 4
|
|
|
|
voice: Written in character's internal voice\n(italicized first-person) {
|
|
style.fill: ${color-dim}
|
|
style.stroke: ${color-stroke}
|
|
style.font-color: ${color-text}
|
|
}
|
|
monologue_beat: Pre-delivery monologue beat\n1-2s: "No taking it back." {
|
|
style.fill: ${color-dim}
|
|
style.stroke: ${color-stroke}
|
|
style.font-color: ${color-text}
|
|
}
|
|
world_reacts: World reacts\n(NPC Tier 2 anim · D-033 fade · monologue spikes) {
|
|
style.fill: ${color-dim}
|
|
style.stroke: ${color-stroke}
|
|
style.font-color: ${color-text}
|
|
}
|
|
}
|
|
|
|
walk_away: Walk-away (D-064)\nWASD during conversation {
|
|
shape: diamond
|
|
style.fill: ${color-bg}
|
|
style.stroke: ${color-accent}
|
|
style.font-color: ${color-text}
|
|
}
|
|
|
|
walk_away_phases: Walk-away Consequences {
|
|
style.fill: ${color-dim}
|
|
style.stroke: ${color-stroke}
|
|
style.font-color: ${color-text}
|
|
|
|
immediate: 1 — Dialogue fades 300ms\n(no close button) {
|
|
style.fill: ${color-bg}
|
|
style.stroke: ${color-stroke}
|
|
style.font-color: ${color-text}
|
|
}
|
|
npc_reacts: 2 — NPC reacts\n(animation · may call after player) {
|
|
style.fill: ${color-bg}
|
|
style.stroke: ${color-stroke}
|
|
style.font-color: ${color-text}
|
|
}
|
|
kg_record: 3 — KG records incompleteness\n(per-seed tolerance: no universal safe-to-leave rules) {
|
|
style.fill: ${color-bg}
|
|
style.stroke: ${color-accent}
|
|
style.font-color: ${color-text}
|
|
}
|
|
}
|
|
|
|
player_action -> verb_phase1
|
|
verb_phase1 -> verb_phase2: "max verb set" { style.stroke: ${color-accent} }
|
|
verb_phase2 -> layer_filter: "filtered verb set" { style.stroke: ${color-accent} }
|
|
layer_filter.l1 -> layer_filter.l2
|
|
layer_filter.l2 -> layer_filter.l3
|
|
layer_filter.l3 -> layer_filter.l4
|
|
layer_filter -> invisible_locks: "visible options only\n(max 3 shown)" {
|
|
style.stroke: ${color-accent}
|
|
}
|
|
invisible_locks -> confrontation: "if Confront option present" {
|
|
style.stroke: ${color-stroke}
|
|
style.stroke-dash: 4
|
|
}
|
|
invisible_locks -> walk_away
|
|
walk_away -> walk_away_phases.immediate
|
|
walk_away_phases.immediate -> walk_away_phases.npc_reacts
|
|
walk_away_phases.npc_reacts -> walk_away_phases.kg_record
|