Dialogue was already plain text, so the gap was never the .yarn files. It was
that the character material a writing session needs was either missing or stored
somewhere a writer could not comfortably work.
Three things were wrong. The writing handbook was not in the repo and was cited
by SC101.yarn as though it were. The best voice material — register, verbal tics,
success/failure/passive samples — was a \n-escaped string inside a JSON field.
The named NPCs had no sheets at all, existing only as their Yarn lines.
writing/ now holds the dialogue-facing layer, at the repo root so it gets no
.meta files and is not a Unity asset:
STYLE.md register, the five tone moves, the ban list, branching
shapes, the Wrong Truth rule, flag families, candidate rules
YARN-PRIMER.md the one page of syntax needed to write a scene
GLOSSARY.md in-world and project vocabulary
voices/ the eleven skill voices, one readable sheet each
characters/ Bartender, Chevalier Cassian Thal, Bradford Kane
scenes/ SC-101's brief: intent, beats, checks, constraints
lore/ the three identity readings and the rules that bind them
STYLE.md is a digest of the Mystery Writing Handbook in the Obsidian vault, with
pointers rather than copies. The vault stays the authoring home for design work,
and Ground Truth — the solution document — deliberately stays out of this repo.
The voice sheets are generated from skill_bible.json but are the source of truth
for the prose. tools/writing/sync_voices.py folds edits back; voicelib.py
guarantees notes -> dict -> notes is identity for all eleven, so --to-json on
unchanged sheets is byte-identical. VoiceSheetSyncTests fails the build on drift
in either direction, and was verified to fail on real drift rather than merely
to pass.
SC101.yarn's header is trimmed from prose rationale to the six rules that bind
while editing that file, with the reasoning moved to the scene brief.
EditMode 42/42. YarnCheck compiles 9 files / 35 nodes.
Co-Authored-By: Claude Opus 5 <[email protected]>
87 lines
1.9 KiB
Markdown
87 lines
1.9 KiB
Markdown
---
|
||
id: SC###
|
||
title: <title>
|
||
act: I
|
||
status: outlined # outlined | drafted | revised | in-engine | tested
|
||
yarn_file: Assets/Dialogue/Scenes/SC###.yarn
|
||
location:
|
||
reenterable: no
|
||
---
|
||
|
||
# SC-### — <title>
|
||
|
||
> One scene, one file, ideally one screen of spec. If this brief does not fit on a page, the
|
||
> scene is doing too much — split it. That discipline is what lets one writer hold a sixty-scene
|
||
> game in their head.
|
||
>
|
||
> This is the **brief**, not the dialogue. The words live in the `.yarn` file.
|
||
|
||
## Purpose
|
||
|
||
One line: what has changed by the end.
|
||
|
||
## Cast
|
||
|
||
Speaking characters, and which voices are prominent. **Cap voice introductions at three.**
|
||
|
||
## Entry conditions
|
||
|
||
Flags required. "None" is a good answer.
|
||
|
||
## Critical outputs
|
||
|
||
Things every build must be able to obtain. Each needs ≥2 independent routes — and independent
|
||
means different trace channels, not two checks in the same conversation.
|
||
|
||
| Clue id | Routes |
|
||
|---|---|
|
||
| | |
|
||
|
||
## Optional outputs
|
||
|
||
Missable by design. One route is fine.
|
||
|
||
## Shape
|
||
|
||
`hub-and-spoke` | `short tree` | `divergent`. Default to the first.
|
||
|
||
## Opening frame
|
||
|
||
2–4 sentences of establishing prose. Sensory, specific, and including one concrete detail that
|
||
does not serve the plot.
|
||
|
||
## Beats
|
||
|
||
3–6. Each beat is one exchange or one discovery.
|
||
|
||
1.
|
||
|
||
## Checks
|
||
|
||
Write **both** outcomes as summaries before writing any prose. If the failure summary is "the
|
||
player doesn't get the thing", delete the check.
|
||
|
||
| # | Voice | Colour/Gate | DC band | Success → | Failure type | Failure → |
|
||
|---|---|---|---|---|---|---|
|
||
| | | | | | | |
|
||
|
||
## Branch points
|
||
|
||
| id | The choice | Reconverges at | Persistent effect |
|
||
|---|---|---|---|
|
||
| | | | |
|
||
|
||
## Exit states
|
||
|
||
Keep to ≤3. More than three means this is a hub, not a scene.
|
||
|
||
## Flags
|
||
|
||
**Sets:**
|
||
**Reads:**
|
||
|
||
## Constraints specific to this scene
|
||
|
||
Anything a later editor must not "fix". Deliberate exceptions to a general rule go here, with
|
||
the reason, so they survive review.
|