The voice: every game speaks in its own world

Conventions gain a section on in-game language: an image with every
fact, the fact exact, unfolding effects told a turn at a time and naming
the turn they end on, our own words rather than an older version's, and
chronicle wording shipped without a rules revision. new-game.sh points
at it, and the demo game's lines follow it. Born in Waving Hands'
atmospheric chronicle.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0141G6xqLeNRYEtviLWSB5Up
This commit is contained in:
Eric Wagoner
2026-09-24 23:57:59 -04:00
co-authored by Claude Opus 5.5
parent bce01a013a
commit cd9d14ec35
4 changed files with 28 additions and 3 deletions
+23
View File
@@ -158,6 +158,29 @@ emoji in the interface; the words do the work. Phone width first: a sticky
bar for the move if the board runs long, lists that shorten, gutters of
16px, no horizontal scroll.
## The voice
Every game speaks in its own world. Wherever the page tells a player what
happened, it gives an image as well as the fact: not "Corwin takes 5 from
a fireball" but "A fireball bursts over Corwin, for 5". The fact stays
exact and whole (the number, the duration, who is affected, the turn a
thing will happen), and the image carries it.
- **The chronicle** is where the voice matters most. Each move, blow,
enchantment, arrival and death gets its own picture. Something that
unfolds over turns (an illness, a siege, a fuse) is told a turn at a
time, names the turn it ends on when it begins, and warns on the last
turn anything can be done about it.
- **The rest of the surround** speaks the same way: the lobby, the guide,
the status lines, the verdict. Plain words for controls and buttons;
the images belong to what happens, not to what you press.
- **Our own words.** An older implementation's prose is a guide to the
tone, never a source to copy.
- **Changing text is not changing rules.** Chronicle wording is not part
of the ledger, so it ships without a rules revision; the deploy gate
compares outcomes, not sentences. A test that pins a phrase should pin
the fact inside it.
## Things learned the hard way
- Caddy's `try_files` rewrites `/api` before `reverse_proxy` unless the