hayao 0.4.1 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/design/00-process/README.md +49 -0
- package/design/00-process/composition.md +148 -0
- package/design/00-process/core-loop.md +146 -0
- package/design/00-process/intent-to-brief.md +128 -0
- package/design/00-process/pillars.md +139 -0
- package/design/00-process/refine-and-handoff.md +156 -0
- package/design/00-process/the-twist.md +108 -0
- package/design/10-anchors/README.md +99 -0
- package/design/10-anchors/age-of-empires.md +103 -0
- package/design/10-anchors/baba-is-you.md +127 -0
- package/design/10-anchors/balatro.md +132 -0
- package/design/10-anchors/celeste.md +136 -0
- package/design/10-anchors/civilization.md +101 -0
- package/design/10-anchors/dead-cells.md +125 -0
- package/design/10-anchors/factorio.md +100 -0
- package/design/10-anchors/hades.md +127 -0
- package/design/10-anchors/into-the-breach.md +125 -0
- package/design/10-anchors/it-takes-two.md +104 -0
- package/design/10-anchors/loop-hero.md +131 -0
- package/design/10-anchors/nuclear-throne.md +130 -0
- package/design/10-anchors/outer-wilds.md +107 -0
- package/design/10-anchors/overcooked.md +102 -0
- package/design/10-anchors/peggle.md +133 -0
- package/design/10-anchors/reigns.md +99 -0
- package/design/10-anchors/return-of-the-obra-dinn.md +108 -0
- package/design/10-anchors/rimworld.md +101 -0
- package/design/10-anchors/shadow-of-mordor.md +106 -0
- package/design/10-anchors/slay-the-spire.md +127 -0
- package/design/10-anchors/starcraft.md +98 -0
- package/design/10-anchors/stardew-valley.md +103 -0
- package/design/10-anchors/tetris.md +122 -0
- package/design/10-anchors/vampire-survivors.md +122 -0
- package/design/20-genres/README.md +62 -0
- package/design/20-genres/action-adventure.md +126 -0
- package/design/20-genres/auto-battler.md +121 -0
- package/design/20-genres/bullet-hell.md +123 -0
- package/design/20-genres/city-builder.md +124 -0
- package/design/20-genres/coop-chaos.md +124 -0
- package/design/20-genres/deckbuilder.md +122 -0
- package/design/20-genres/exploration.md +131 -0
- package/design/20-genres/farming-sim.md +122 -0
- package/design/20-genres/grid-puzzle.md +126 -0
- package/design/20-genres/horde-survival.md +128 -0
- package/design/20-genres/incremental.md +120 -0
- package/design/20-genres/match3.md +120 -0
- package/design/20-genres/metroidvania.md +132 -0
- package/design/20-genres/narrative-decisions.md +122 -0
- package/design/20-genres/physics-arcade.md +124 -0
- package/design/20-genres/precision-platformer.md +127 -0
- package/design/20-genres/racing.md +126 -0
- package/design/20-genres/rhythm.md +125 -0
- package/design/20-genres/roguelike.md +122 -0
- package/design/20-genres/rts.md +169 -0
- package/design/20-genres/stealth.md +125 -0
- package/design/20-genres/survival-horror.md +124 -0
- package/design/20-genres/tactics.md +123 -0
- package/design/20-genres/tower-defense.md +120 -0
- package/design/30-systems/README.md +69 -0
- package/design/30-systems/accessibility.md +110 -0
- package/design/30-systems/boss-design.md +126 -0
- package/design/30-systems/build-diversity.md +120 -0
- package/design/30-systems/collectibles.md +108 -0
- package/design/30-systems/combat-model.md +113 -0
- package/design/30-systems/coop-and-competition.md +118 -0
- package/design/30-systems/counter-systems.md +115 -0
- package/design/30-systems/crafting.md +115 -0
- package/design/30-systems/difficulty-and-dda.md +114 -0
- package/design/30-systems/economy.md +117 -0
- package/design/30-systems/emergent-systems.md +114 -0
- package/design/30-systems/encounter-design.md +107 -0
- package/design/30-systems/enemy-ai.md +121 -0
- package/design/30-systems/enemy-archetypes.md +117 -0
- package/design/30-systems/faction-asymmetry.md +144 -0
- package/design/30-systems/grace.md +124 -0
- package/design/30-systems/mastery-curve.md +116 -0
- package/design/30-systems/meta-progression.md +114 -0
- package/design/30-systems/onboarding.md +115 -0
- package/design/30-systems/procgen-design.md +118 -0
- package/design/30-systems/progression.md +120 -0
- package/design/30-systems/resource-loops.md +112 -0
- package/design/30-systems/reward-schedules.md +124 -0
- package/design/30-systems/save-and-checkpoint.md +113 -0
- package/design/30-systems/session-structure.md +113 -0
- package/design/30-systems/skill-trees.md +111 -0
- package/design/30-systems/status-effects.md +111 -0
- package/design/30-systems/tech-tree.md +112 -0
- package/design/30-systems/telegraphs.md +106 -0
- package/design/30-systems/unit-rosters.md +123 -0
- package/design/40-worldbuilding/README.md +49 -0
- package/design/40-worldbuilding/aesthetic-direction.md +155 -0
- package/design/40-worldbuilding/faction-identity.md +136 -0
- package/design/40-worldbuilding/naming-and-tone.md +130 -0
- package/design/40-worldbuilding/narrative-delivery.md +129 -0
- package/design/40-worldbuilding/theme-vectors.md +134 -0
- package/design/40-worldbuilding/worldbuilding-scaffold.md +132 -0
- package/design/50-patterns/README.md +54 -0
- package/design/50-patterns/anti-frustration.md +121 -0
- package/design/50-patterns/emergence.md +121 -0
- package/design/50-patterns/feedback-loops.md +121 -0
- package/design/50-patterns/juice-choreography.md +124 -0
- package/design/50-patterns/mastery-and-flow.md +121 -0
- package/design/50-patterns/pacing-and-tension.md +120 -0
- package/design/50-patterns/readability.md +121 -0
- package/design/50-patterns/risk-reward.md +120 -0
- package/design/CONTRIBUTING.md +183 -0
- package/design/INDEX.md +133 -0
- package/design/README.md +86 -0
- package/design/_TEMPLATE.md +69 -0
- package/design/index.json +2720 -0
- package/package.json +2 -1
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: system-unit-rosters
|
|
3
|
+
title: Unit Rosters — a legible roster
|
|
4
|
+
kind: system
|
|
5
|
+
tags: [units, roster, roles, tiers, diversity, rts, redundancy]
|
|
6
|
+
summary: A roster of units whose roles are legible and distinct — every unit earns its slot, overlap is intentional, and redundancy is culled.
|
|
7
|
+
use-when: You have a set of units/troops/pieces the player commands and need each to have a clear, non-redundant job.
|
|
8
|
+
composes-with: [system-counter-systems, system-faction-asymmetry, system-enemy-archetypes, system-combat-model, system-tech-tree]
|
|
9
|
+
anchors: [anchor-starcraft, anchor-age-of-empires]
|
|
10
|
+
verify-with: docs/FUN.md#9-rts-lite
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Unit Rosters — a legible roster
|
|
14
|
+
|
|
15
|
+
**What it is.** The **cast of pieces** the player fields — the units of an RTS, the
|
|
16
|
+
troops of an auto-battler, the summons of a tactics game — organized so every one has
|
|
17
|
+
a *readable job* and *earns its slot*. A roster is the vocabulary that
|
|
18
|
+
[[system-counter-systems]] connects and [[system-faction-asymmetry]] differentiates.
|
|
19
|
+
|
|
20
|
+
**Player fantasy / why it's fun.** "I know exactly what each of these does, and I'm
|
|
21
|
+
choosing the right mix." A legible roster makes composition a pleasure — you read
|
|
22
|
+
the enemy, pick your answer, and the units do what their silhouette promised.
|
|
23
|
+
|
|
24
|
+
## When to use / when NOT
|
|
25
|
+
|
|
26
|
+
| Use a designed roster when… | Skip when… |
|
|
27
|
+
|---|---|
|
|
28
|
+
| Player fields multiple unit types | One avatar / one active unit |
|
|
29
|
+
| Composition is a decision | Units are just reskinned HP bars |
|
|
30
|
+
| Counters/tech/factions need pieces | The "roster" is enemies only ([[system-enemy-archetypes]]) |
|
|
31
|
+
|
|
32
|
+
## The role alphabet
|
|
33
|
+
|
|
34
|
+
Most rosters are built from a small set of **functional roles**. Legibility comes
|
|
35
|
+
from each unit reading as *one* role, not a blur of three.
|
|
36
|
+
|
|
37
|
+
| Role | Job | Reads as |
|
|
38
|
+
|---|---|---|
|
|
39
|
+
| **Frontline / tank** | absorb, hold the line | big, slow, tough |
|
|
40
|
+
| **DPS / line** | deal the damage | mid, fragile-ish |
|
|
41
|
+
| **Skirmisher** | fast, harass, flank | small, quick, hits-and-runs |
|
|
42
|
+
| **Artillery / siege** | range, area, anti-clump | long range, slow, glass |
|
|
43
|
+
| **Support** | heal/buff/detect | non-combat, force-multiplier |
|
|
44
|
+
| **Specialist** | one job (anti-air, cloak, transport) | the answer to a specific threat |
|
|
45
|
+
|
|
46
|
+
A roster is *legible* when a new player can name each unit's role from its
|
|
47
|
+
silhouette and speed alone — the [[pattern-readability]] test applied to the army.
|
|
48
|
+
|
|
49
|
+
## Tiers vs. sidegrades
|
|
50
|
+
|
|
51
|
+
| Structure | What it is | Watch for |
|
|
52
|
+
|---|---|---|
|
|
53
|
+
| **Tiers** | later units strictly stronger (T1→T3) | early units become dead weight — give them a lasting niche (cost, speed) |
|
|
54
|
+
| **Sidegrades** | same tier, different role, no strict winner | the healthiest for diversity |
|
|
55
|
+
| **Tech gates** | roster unlocks via [[system-tech-tree]] | pace the reveal; no unlock deserts (FUN.md §14 logic) |
|
|
56
|
+
|
|
57
|
+
Prefer sidegrades within a tier and *role* differences across tiers. A pure linear
|
|
58
|
+
tier ladder quietly kills half the roster.
|
|
59
|
+
|
|
60
|
+
## Tuning levers
|
|
61
|
+
|
|
62
|
+
| Lever | Does | Healthy range |
|
|
63
|
+
|---|---|---|
|
|
64
|
+
| **Roster size** | how many units | enough for a matrix, few enough to hold in the head (~6–12 per side) |
|
|
65
|
+
| **Role coverage** | each role represented | no gap the counter-matrix needs filled |
|
|
66
|
+
| **Overlap** | two units, similar job | intentional (a cheap and a premium tank) — not accidental |
|
|
67
|
+
| **Cost curve** | resource/time per unit | maps to power; no unit both cheapest and best |
|
|
68
|
+
| **Skill expression** | micro reward per unit | some reward control (skirmishers), some don't (tanks) |
|
|
69
|
+
|
|
70
|
+
## Overlap vs. redundancy — the culling rule
|
|
71
|
+
|
|
72
|
+
- **Overlap** is two units doing a similar job *for a reason*: a cheap disposable
|
|
73
|
+
tank and an expensive durable one give the player a real cost/quality choice.
|
|
74
|
+
- **Redundancy** is two units doing the same job with no distinguishing decision —
|
|
75
|
+
one strictly dominates or they're interchangeable. **Cull it.** Every unit must
|
|
76
|
+
answer "when would I build *this* over its neighbor?" If it can't, merge or cut.
|
|
77
|
+
|
|
78
|
+
The test: remove a unit. If no strategy got weaker, it was redundant.
|
|
79
|
+
|
|
80
|
+
## How it wires to Hayao
|
|
81
|
+
|
|
82
|
+
- **Roles are proven by duels.** Pure state + `world.rng` → clone the world, run the
|
|
83
|
+
unit in its intended matchup, read the result (FUN.md law 7). Assert the tank
|
|
84
|
+
*tanks* and the counter unit *counters* (FUN.md §9 NvN edges).
|
|
85
|
+
- **Mass command needs flow fields** — one BFS per goal tile, cached outside
|
|
86
|
+
`world.state`, gives the whole roster wall-aware pathing (FUN.md §9). Grep
|
|
87
|
+
[`docs/API.md`](../../docs/API.md) for `astarGrid`/`floodFill` before citing.
|
|
88
|
+
- **Export behavioural tolerances** (arrival radius, aggro range) as API so tests
|
|
89
|
+
share the sim's constants (FUN.md §9) — the roster's numbers live in one place.
|
|
90
|
+
- **Redundancy is a lint.** The "remove-a-unit, did any strategy weaken?" check is a
|
|
91
|
+
skill-delta test (FUN.md law 2) you can script.
|
|
92
|
+
|
|
93
|
+
## Fails when…
|
|
94
|
+
|
|
95
|
+
- **Silhouette lies.** A "tank" that dies fast, a "skirmisher" that's slow — the read
|
|
96
|
+
breaks and composition becomes memorization ([[pattern-readability]]).
|
|
97
|
+
- **Redundant units.** Dead slots the player never builds; the roster looks bigger
|
|
98
|
+
than it plays.
|
|
99
|
+
- **A dominant unit.** One piece answers everything — the roster collapses to a spam
|
|
100
|
+
([[system-build-diversity]] and [[system-counter-systems]] both die).
|
|
101
|
+
- **Tier rot.** Early units strictly obsolete by mid-game, so half the cast is a
|
|
102
|
+
museum. Give each a lasting niche.
|
|
103
|
+
|
|
104
|
+
## Verify
|
|
105
|
+
|
|
106
|
+
- **[FUN.md §9](../../docs/FUN.md)** — every counter edge wins its NvN duel; commander
|
|
107
|
+
bot wins; walled units route around; ms/step at peak.
|
|
108
|
+
- **[FUN.md law 2](../../docs/FUN.md)** — the redundancy lint: removing a unit weakens
|
|
109
|
+
some strategy; a mixed roster beats a mono spam.
|
|
110
|
+
- Determinism: golden hash of a scripted battle across the roster.
|
|
111
|
+
|
|
112
|
+
## Composes with
|
|
113
|
+
|
|
114
|
+
- [[system-counter-systems]] — the matrix that connects the pieces into decisions.
|
|
115
|
+
- [[system-faction-asymmetry]] — each faction is a distinct roster over shared roles.
|
|
116
|
+
- [[system-enemy-archetypes]] — the enemy-side vocabulary; rosters and archetypes rhyme.
|
|
117
|
+
- [[system-tech-tree]] — how the roster reveals over a match.
|
|
118
|
+
|
|
119
|
+
## See also
|
|
120
|
+
|
|
121
|
+
- [`docs/FUN.md`](../../docs/FUN.md) §9 — mass under command; duels as the balance test.
|
|
122
|
+
- [[anchor-starcraft]], [[anchor-age-of-empires]] — legible rosters with role clarity.
|
|
123
|
+
- [`sandboxes/pathfinding-demo`](../../sandboxes/pathfinding-demo) — the pathing the roster shares.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# 40-worldbuilding — theme, lore, faction, look
|
|
2
|
+
|
|
3
|
+
The **SHAPE** stage's fiction half. Once the mechanic and the twist are set,
|
|
4
|
+
these six kits give the design a *world* and a *look* — a setting that recolours
|
|
5
|
+
the systems, the minimum viable lore that holds it together, factions that read
|
|
6
|
+
at a glance, names in the house register, an art brief that survives the vision
|
|
7
|
+
judge, and a way to tell the story with almost no text. Design here; **prove the
|
|
8
|
+
look** in [`docs/JUDGE.md`](../../docs/JUDGE.md) and the `npm run palette` /
|
|
9
|
+
`npm run feel` gates. The house aesthetic is **Kentō woodblock / Miyazaki-16** —
|
|
10
|
+
elegant ink-and-washi craft, AA-verified — a consistent starting point, never a
|
|
11
|
+
cage.
|
|
12
|
+
|
|
13
|
+
The golden rule of the section: **the fiction must rhyme with the mechanic.** A
|
|
14
|
+
theme, faction, or name that could be swapped out with zero mechanical change is
|
|
15
|
+
a skin — bend deeper.
|
|
16
|
+
|
|
17
|
+
| id | title | summary |
|
|
18
|
+
|---|---|---|
|
|
19
|
+
| [world-theme-vectors](theme-vectors.md) | Theme Vectors | Choosing a setting that *recolours* the systems, not skins them; theme as a twist vector — pick where fiction and mechanic rhyme. |
|
|
20
|
+
| [world-worldbuilding-scaffold](worldbuilding-scaffold.md) | Worldbuilding Scaffold | From a setting to a coherent world — premise, rules, stakes, role, fantasy; the minimum viable lore a small game needs. |
|
|
21
|
+
| [world-faction-identity](faction-identity.md) | Faction Identity | Making sides feel distinct in fiction — silhouette, values, colour, motif; the fiction companion to `system-faction-asymmetry`. |
|
|
22
|
+
| [world-naming-and-tone](naming-and-tone.md) | Naming & Tone | Names, voice, register; the Kentō one-word restraint (lanternway, rootward, tarnholm, kintsugi) and text that trusts the player. |
|
|
23
|
+
| [world-aesthetic-direction](aesthetic-direction.md) | Aesthetic Direction | Briefing the Kentō woodblock look — palette, contrast, depth, silhouette — to pass the readability + six-axis JUDGE bars. |
|
|
24
|
+
| [world-narrative-delivery](narrative-delivery.md) | Narrative Delivery | Environmental / systemic / embedded storytelling with little text; show-don't-tell; let the systems author the story. |
|
|
25
|
+
|
|
26
|
+
## The through-line
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
theme-vectors ─▶ worldbuilding-scaffold ─▶ naming-and-tone
|
|
30
|
+
│ │ │
|
|
31
|
+
└──▶ aesthetic-direction ◀── faction-identity
|
|
32
|
+
│
|
|
33
|
+
└──▶ narrative-delivery ──▶ (JUDGE / palette / feel)
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Pick the theme, scaffold the world, name it, brief the look (splitting factions
|
|
37
|
+
by hue and silhouette if there are sides), then let place and systems tell the
|
|
38
|
+
story. Every arrow ends where the proof playbook begins.
|
|
39
|
+
|
|
40
|
+
## See also
|
|
41
|
+
|
|
42
|
+
- [`00-process/the-twist`](../00-process/the-twist.md) — theme is one of its six
|
|
43
|
+
vectors; this section is the deep dive on the fiction half.
|
|
44
|
+
- [`30-systems/faction-asymmetry`](../30-systems/faction-asymmetry.md) — the
|
|
45
|
+
mechanical partner to `world-faction-identity`.
|
|
46
|
+
- [`50-patterns/readability`](../50-patterns/readability.md) — the salience floor
|
|
47
|
+
every aesthetic brief must clear.
|
|
48
|
+
- [`docs/JUDGE.md`](../../docs/JUDGE.md) · `docs/CONVENTIONS.md` (Kentō palette) —
|
|
49
|
+
where the look is proven.
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: world-aesthetic-direction
|
|
3
|
+
title: Aesthetic Direction — briefing the Kentō woodblock look
|
|
4
|
+
kind: worldbuilding
|
|
5
|
+
tags: [art-direction, palette, kento, woodblock, readability, contrast, look, judge]
|
|
6
|
+
summary: Art direction — the Kentō woodblock palette and how to brief a look that passes the readability + JUDGE bars (findable avatar, depth, one-world colour).
|
|
7
|
+
use-when: You need to turn a theme into a concrete visual brief — palette, contrast, depth, silhouette — that survives the vision judge.
|
|
8
|
+
composes-with: [world-theme-vectors, world-faction-identity, world-naming-and-tone]
|
|
9
|
+
verify-with: docs/JUDGE.md
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Aesthetic Direction — briefing the Kentō woodblock look
|
|
13
|
+
|
|
14
|
+
**What it is.** The **art brief**: the palette, contrast rules, depth plan, and
|
|
15
|
+
silhouette language that give a game one coherent look. The house default is
|
|
16
|
+
**Kentō woodblock / Miyazaki-16** — a small set of traditional-Japanese hues,
|
|
17
|
+
AA-gated, that reads as elegant ink-and-washi craft. This module is how you brief
|
|
18
|
+
a look that clears both the [[pattern-readability]] floor and the six-axis vision
|
|
19
|
+
judge (`docs/JUDGE.md`), not just how to pick pretty colours.
|
|
20
|
+
|
|
21
|
+
**Player fantasy / why it's fun.** The look is the *first* thing the player
|
|
22
|
+
believes about the world — before a single mechanic fires. A frame that reads as
|
|
23
|
+
*shipped, not debug* earns trust; a flat grey grid loses it in a second.
|
|
24
|
+
|
|
25
|
+
## The Kentō palette
|
|
26
|
+
|
|
27
|
+
Import `KENTO`, `MEADOW` (light), `DUSK` (dark) from `@hayao`
|
|
28
|
+
([`docs/API.md`](../../docs/API.md)). It fuses the site's washi/sumi ink tokens
|
|
29
|
+
with landscape hues loosely from Miyazaki-16. **Eight named accents**, each with
|
|
30
|
+
a `Deep` tone for light grounds and a bright tone for dark:
|
|
31
|
+
|
|
32
|
+
| Hue | Name | Reads as |
|
|
33
|
+
|---|---|---|
|
|
34
|
+
| vermilion | **shu** | alarm, aggression, sacred |
|
|
35
|
+
| persimmon | **kaki** | warmth, harvest, rust |
|
|
36
|
+
| ochre-gold | **ko** | wealth, age, earth |
|
|
37
|
+
| pine green | **matsu** | life, growth, calm |
|
|
38
|
+
| teal-cyan | **asagi** | water, cool, clarity |
|
|
39
|
+
| indigo | **ai** | night, order, depth |
|
|
40
|
+
| wisteria violet | **fuji** | magic, dusk, mystery |
|
|
41
|
+
| dusty rose | **saku** | tenderness, transience |
|
|
42
|
+
|
|
43
|
+
Neutrals run from shell-white *gofun* → *washi* → *kinako* → *stone* → body-ink
|
|
44
|
+
*sumiSoft* → *sumi* → deepest *kuro*/*yohaku*. Pick **5–6 hues plus a ground** per
|
|
45
|
+
game; alpha/tone variants via `withAlpha`/`mix` are welcome. **Every pairing is
|
|
46
|
+
WCAG-AA verified — `npm run palette` is the gate.** The engine stays
|
|
47
|
+
palette-agnostic; Kentō is a consistent starting point, never a restriction
|
|
48
|
+
(`docs/CONVENTIONS.md`).
|
|
49
|
+
|
|
50
|
+
## Vectors / options — dialing the look to the theme
|
|
51
|
+
|
|
52
|
+
The palette is fixed-ish; the *composition* is where you express theme:
|
|
53
|
+
|
|
54
|
+
| Lever | Poles | Serves |
|
|
55
|
+
|---|---|---|
|
|
56
|
+
| **Ground** | light `MEADOW` (washi) ↔ dark `DUSK` (sumi/kuro) | daytime/cosy ↔ night/dread; sets the whole mood |
|
|
57
|
+
| **Accent count** | 2 (austere) ↔ 6 (rich) | tension of a lean frame vs a busy world |
|
|
58
|
+
| **Value range** | wide (ink→shell) ↔ narrow | drama & focal points ↔ flat/foggy atmosphere |
|
|
59
|
+
| **Line weight** | heavy ink outline ↔ soft edge | woodblock boldness ↔ painterly softness |
|
|
60
|
+
| **Light** | flat ambient ↔ `LightLayer`+`PointLight` pools | even scene ↔ carved-out focal depth |
|
|
61
|
+
|
|
62
|
+
Warm accents (*shu*, *kaki*, *ko*) push a scene toward harvest/dread/desperation;
|
|
63
|
+
cool accents (*asagi*, *ai*, *fuji*) toward night/order/calm. Let the theme's
|
|
64
|
+
register from [[world-theme-vectors]] pick the corner.
|
|
65
|
+
|
|
66
|
+
## Method
|
|
67
|
+
|
|
68
|
+
1. **Choose the ground** (`MEADOW` vs `DUSK`) from the theme's tone. This decision
|
|
69
|
+
colours everything after it.
|
|
70
|
+
2. **Pick 5–6 accents** by *meaning*, not prettiness — one alarm hue, one focal
|
|
71
|
+
hue for the avatar, the rest for world & factions
|
|
72
|
+
([[world-faction-identity]]). Reserve the highest-contrast pairing for the
|
|
73
|
+
player so the avatar out-contrasts the scenery (JUDGE axis 1).
|
|
74
|
+
3. **Plan depth in three layers** — background / midground / foreground — *before*
|
|
75
|
+
placing anything. Emptiness (objects floating in a void) is the JUDGE's most
|
|
76
|
+
common failure (axis 2). Grade a sky, pin a horizon, layer ridges.
|
|
77
|
+
4. **Give interactables an ink edge.** Pickups/actors carry a dark outline
|
|
78
|
+
(`stroke: KENTO.sumi` on light, `KENTO.gofun` rim on dark) plus a glow/pulse —
|
|
79
|
+
contrast lives in the *edge*, not the fill (`docs/CONVENTIONS.md`).
|
|
80
|
+
5. **Set the silhouette language** — the shape rules that make avatar, enemies,
|
|
81
|
+
and pickups readable as black shapes ([[pattern-readability]]).
|
|
82
|
+
6. **If lit, own the light.** A real `LightLayer` + `PointLight` carves a focal
|
|
83
|
+
point out of ambient dark; but multiply-lighting lowers contrast, so the
|
|
84
|
+
Kentō AA guarantee holds only *pre*-lighting — judge lit contrast from the
|
|
85
|
+
rendered PNG, and let the `lightingIssues` feel-gate (`npm run feel`) own it.
|
|
86
|
+
7. **Render and judge.** Run `npm run judge <slug>`, *look* at the pixels, fix
|
|
87
|
+
every high-severity finding cosmetically (the golden hash must stay
|
|
88
|
+
unchanged), re-render until it reads shipped.
|
|
89
|
+
|
|
90
|
+
## The JUDGE bar — brief to pass all six axes
|
|
91
|
+
|
|
92
|
+
| Axis | The brief that passes it |
|
|
93
|
+
|---|---|
|
|
94
|
+
| **Readability** | Avatar on the reserved high-contrast pairing; threats warm-loud, pickups ink-edged |
|
|
95
|
+
| **Depth & composition** | Three real layers; a focal point; breathing room — never a void |
|
|
96
|
+
| **Palette harmony** | Every hue from the *one* Kentō set; a controlled value range, not all mid-tone |
|
|
97
|
+
| **Juice restraint** | Particles/shake that *punctuate*; nothing seizure-bright ([[pattern-juice-choreography]]) |
|
|
98
|
+
| **Motion clarity** | The eye tracks the important thing frame to frame |
|
|
99
|
+
| **Chrome & finish** | HUD framed as DOM overlay; consistent margins; nothing clipped; the title invites |
|
|
100
|
+
|
|
101
|
+
## Worked example — *lanternway*'s neighbourhood
|
|
102
|
+
|
|
103
|
+
**Theme:** a keeper walking into the dusk (elegiac, small-scale).
|
|
104
|
+
|
|
105
|
+
- **Ground:** `DUSK` — a graded night sky, pinned horizon, layered ridges (the
|
|
106
|
+
depth the JUDGE demands; the updrift lesson in `docs/JUDGE.md`).
|
|
107
|
+
- **Accents:** *ko* (warm lantern glow, the focal/avatar hue) against *ai*/*fuji*
|
|
108
|
+
night; *shu* reserved for danger only. Five hues, one world.
|
|
109
|
+
- **Light:** each lantern is a `PointLight` pool carving warmth out of the dark —
|
|
110
|
+
depth *and* the mechanic in one visual. Contrast judged from the PNG.
|
|
111
|
+
- **Edges:** lanterns and the keeper carry a *gofun* rim so they read against the
|
|
112
|
+
dark ground.
|
|
113
|
+
- **Result:** a frame that reads as an atmospheric ascent, not a debug void —
|
|
114
|
+
the exact gap the vision judge exists to close.
|
|
115
|
+
|
|
116
|
+
## Aesthetic hook
|
|
117
|
+
|
|
118
|
+
*This whole module is the aesthetic hook.* The one thing to internalise: **Kentō
|
|
119
|
+
gives you harmony and AA for free, but not depth or contrast-under-light** — those
|
|
120
|
+
you compose per scene and *prove from the rendered pixels*, never from the hexes
|
|
121
|
+
(`docs/JUDGE.md` axis 2). Design in the palette; judge in the PNG.
|
|
122
|
+
|
|
123
|
+
## Traps
|
|
124
|
+
|
|
125
|
+
- **The debug void.** Objects on a flat grey field. Plan three layers first;
|
|
126
|
+
emptiness is the #1 judge failure.
|
|
127
|
+
- **Palette clash.** Reaching outside the Kentō set for "one perfect blue."
|
|
128
|
+
Break the one-world rule and every frame muddies. Swap the *whole* palette or
|
|
129
|
+
stay in it.
|
|
130
|
+
- **Contrast from hexes.** Trusting `npm run palette` AA under a `LightLayer` —
|
|
131
|
+
multiply kills it. Judge lit scenes from the PNG; let `lightingIssues` gate it.
|
|
132
|
+
- **Fill without edge.** An accent shape flat on a same-family floor vanishes.
|
|
133
|
+
Ink outline + glow on anything interactive.
|
|
134
|
+
- **Mid-tone mush.** All hues at one value = no focal point. Reserve the widest
|
|
135
|
+
value range for what matters most.
|
|
136
|
+
- **Skipping the judge.** "Passes the gates" ≠ "looks shipped." Run
|
|
137
|
+
`npm run judge` and actually look.
|
|
138
|
+
|
|
139
|
+
## Composes with
|
|
140
|
+
|
|
141
|
+
- [[world-theme-vectors]] — supplies the register that picks the palette's corner.
|
|
142
|
+
- [[world-faction-identity]] — each faction's owning hue is assigned from this
|
|
143
|
+
set; silhouette rules are briefed here.
|
|
144
|
+
- [[pattern-readability]] — the salience floor this brief must clear.
|
|
145
|
+
- [[pattern-juice-choreography]] — feedback that punctuates without smothering
|
|
146
|
+
(JUDGE axis 4).
|
|
147
|
+
|
|
148
|
+
## See also
|
|
149
|
+
|
|
150
|
+
- [`docs/JUDGE.md`](../../docs/JUDGE.md) — the six-axis rubric this module briefs
|
|
151
|
+
to; the `/judge` loop (`.claude/skills/judge/`).
|
|
152
|
+
- `docs/CONVENTIONS.md` "Default palette is Kentō" — the palette, the ink-edge
|
|
153
|
+
rule, DOM chrome, and the `npm run palette` AA gate.
|
|
154
|
+
- [`docs/API.md`](../../docs/API.md) — `KENTO`, `MEADOW`, `DUSK`, `withAlpha`,
|
|
155
|
+
`mix`, `LightLayer`, `PointLight`.
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: world-faction-identity
|
|
3
|
+
title: Faction Identity — making sides feel distinct in fiction
|
|
4
|
+
kind: worldbuilding
|
|
5
|
+
tags: [faction, identity, silhouette, motif, colour, values, fiction, asymmetry]
|
|
6
|
+
summary: Making factions feel distinct in FICTION — silhouette, values, colour, motif; the fiction companion to system-faction-asymmetry's mechanical difference.
|
|
7
|
+
use-when: Your design has two or more sides/factions and you need them to read as different worlds at a glance, not palette-swaps.
|
|
8
|
+
composes-with: [world-aesthetic-direction, world-naming-and-tone, world-theme-vectors]
|
|
9
|
+
anchors: [anchor-starcraft, anchor-shadow-of-mordor]
|
|
10
|
+
verify-with: docs/JUDGE.md
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Faction Identity — making sides feel distinct in fiction
|
|
14
|
+
|
|
15
|
+
**What it is.** [[system-faction-asymmetry]] makes factions play differently.
|
|
16
|
+
This module makes them *feel* like different peoples. A faction reads when its
|
|
17
|
+
**silhouette, values, colour, and motif** all say the same thing — so a player
|
|
18
|
+
knows which side they're looking at from one frame, and knows what that side
|
|
19
|
+
*believes* from one unit. Mechanical asymmetry without fictional identity is a
|
|
20
|
+
stat-sheet; fictional identity without asymmetry is a costume.
|
|
21
|
+
|
|
22
|
+
**Player fantasy / why it's fun.** Players don't main a faction for its numbers;
|
|
23
|
+
they main it because it's *theirs*. Identity is what they're loyal to. A distinct
|
|
24
|
+
faction is a distinct fantasy: the swarm, the disciplined line, the desperate
|
|
25
|
+
salvagers.
|
|
26
|
+
|
|
27
|
+
## The four identity channels
|
|
28
|
+
|
|
29
|
+
Every faction needs a coherent answer on all four. When they agree, the faction
|
|
30
|
+
is legible; when they clash, it's noise.
|
|
31
|
+
|
|
32
|
+
| Channel | The question | Read at a glance? |
|
|
33
|
+
|---|---|---|
|
|
34
|
+
| **Silhouette** | Could you name the faction from a black shape? | Yes — shape is the fastest read |
|
|
35
|
+
| **Values** | What does this people believe / fear / want? | Slower — read through behaviour & lore |
|
|
36
|
+
| **Colour** | Which Kentō hue *owns* this faction? | Yes — one accent per side |
|
|
37
|
+
| **Motif** | The repeated visual/verbal signature (a shape, a word, a ritual) | Yes — the thing that recurs |
|
|
38
|
+
|
|
39
|
+
The strongest factions **map a value onto a mechanic onto a look** in one line:
|
|
40
|
+
*the disciplined line* believes in order → fights in formation (mechanic) →
|
|
41
|
+
straight silhouettes, indigo *ai* (look). Change any one and the other two feel
|
|
42
|
+
wrong.
|
|
43
|
+
|
|
44
|
+
## Vectors / options — where to source contrast
|
|
45
|
+
|
|
46
|
+
Pick a *primary axis of difference* and let all four channels express it:
|
|
47
|
+
|
|
48
|
+
| Contrast axis | Faction A pole | Faction B pole | Expresses through |
|
|
49
|
+
|---|---|---|---|
|
|
50
|
+
| **Order ↔ chaos** | rigid, geometric, few | teeming, organic, many | silhouette density; formation vs swarm |
|
|
51
|
+
| **Growth ↔ decay** | living, verdant, *matsu* | rusted, salvaged, *kaki*/*ko* | material & motif |
|
|
52
|
+
| **Sky ↔ earth** | tall, pale, airy | low, heavy, grounded | silhouette height; ground vs flight |
|
|
53
|
+
| **Old ↔ new** | weathered, ritual, ink | sharp, forged, bright | tone & naming register |
|
|
54
|
+
| **Predator ↔ prey** | angular, forward, few | rounded, defensive, many | shape language; posture |
|
|
55
|
+
|
|
56
|
+
Two factions should sit at *opposite poles of the same axis* — that's what makes
|
|
57
|
+
them read as a pair rather than two unrelated design docs. StarCraft's three sit
|
|
58
|
+
on order↔chaos↔hybrid; each is a clean silhouette and a clean fantasy.
|
|
59
|
+
|
|
60
|
+
## Method
|
|
61
|
+
|
|
62
|
+
1. **Pick the contrast axis** that matches your mechanical asymmetry
|
|
63
|
+
([[system-faction-asymmetry]]). If Faction A masses cheap units and B fields
|
|
64
|
+
few elites, your axis is *chaos ↔ order* — build fiction on that.
|
|
65
|
+
2. **Write each faction's value in one sentence** — what they believe and fear.
|
|
66
|
+
This drives naming ([[world-naming-and-tone]]) and behaviour.
|
|
67
|
+
3. **Assign one owning hue per faction** from the Kentō set. One accent each,
|
|
68
|
+
never shared — colour is the fastest faction read (see hook).
|
|
69
|
+
4. **Design the silhouette rule.** A shape language each faction obeys:
|
|
70
|
+
straight-and-tall vs low-and-organic. Test it as black shapes — if you can't
|
|
71
|
+
tell them apart in silhouette, neither can the player mid-fight.
|
|
72
|
+
5. **Choose the motif** — one recurring signature (a broken-lantern crest, a word
|
|
73
|
+
that only they use, a ritual gesture). It appears on units, HUD, and lore.
|
|
74
|
+
6. **Cross-check the triangle.** Value ↔ mechanic ↔ look must agree for each
|
|
75
|
+
faction. A "peaceful" faction with the aggressive kit is a contradiction the
|
|
76
|
+
player feels but can't name.
|
|
77
|
+
|
|
78
|
+
## Worked example
|
|
79
|
+
|
|
80
|
+
**Axis:** growth ↔ decay, on a drowned-coast world.
|
|
81
|
+
|
|
82
|
+
| | The Tidewardens | The Wracksalvage |
|
|
83
|
+
|---|---|---|
|
|
84
|
+
| **Value** | *keep the light; hold the line* | *take what the sea gives; owe nothing* |
|
|
85
|
+
| **Silhouette** | tall, straight lanterns & robes | low, hunched, jury-rigged hulls |
|
|
86
|
+
| **Colour** | indigo *ai* + shell *gofun* | persimmon *kaki* + rust *ko* |
|
|
87
|
+
| **Motif** | the unbroken flame | the scavenged hook |
|
|
88
|
+
| **Mechanic** | few, durable, defensive (holds ground) | many, cheap, opportunistic (swarms wrecks) |
|
|
89
|
+
|
|
90
|
+
You can tell them apart as black shapes; you can tell them apart by a single
|
|
91
|
+
hue; and each look *is* the mechanic. That's a legible pair.
|
|
92
|
+
|
|
93
|
+
## Aesthetic hook
|
|
94
|
+
|
|
95
|
+
Colour is the fastest faction read the JUDGE has an axis for (palette harmony).
|
|
96
|
+
Give each faction **one owning accent** from Kentō's eight — indigo *ai* reads as
|
|
97
|
+
disciplined and cool, persimmon *kaki* and rust *ko* as desperate and warm, pine
|
|
98
|
+
*matsu* as living, vermilion *shu* as aggressive. Because all eight belong to one
|
|
99
|
+
harmonised set (`npm run palette`, AA-gated), factions can be *distinct* without
|
|
100
|
+
*clashing* — the whole frame stays one world, which is exactly the JUDGE's
|
|
101
|
+
palette-harmony bar (`docs/JUDGE.md` axis 3). Keep silhouette contrast doing the
|
|
102
|
+
heavy lifting so the sides read even where their pooled sprites share a lit
|
|
103
|
+
scene — contrast lives in the *edge and shape*, not only the fill
|
|
104
|
+
(`docs/CONVENTIONS.md`). Pair with [[world-aesthetic-direction]] to brief the
|
|
105
|
+
look and [[pattern-readability]] to keep both sides salient in a crowd.
|
|
106
|
+
|
|
107
|
+
## Traps
|
|
108
|
+
|
|
109
|
+
- **Palette-swap factions.** Same silhouette, different hue. Players read them as
|
|
110
|
+
the same side in two colours. Silhouette first, colour second.
|
|
111
|
+
- **Look that fights the mechanic.** A "gentle" faction with a hyper-aggressive
|
|
112
|
+
kit. The triangle (value ↔ mechanic ↔ look) must close.
|
|
113
|
+
- **Shared accent.** Two factions on the same hue are indistinguishable at
|
|
114
|
+
distance. One owning accent each.
|
|
115
|
+
- **Motif overload.** Five crests and three slogans dilute the one that matters.
|
|
116
|
+
One motif per faction, repeated.
|
|
117
|
+
- **Fiction with no mechanical asymmetry.** If the sides play identically, the
|
|
118
|
+
identity is a costume — pair with [[system-faction-asymmetry]] or drop to one
|
|
119
|
+
faction.
|
|
120
|
+
|
|
121
|
+
## Composes with
|
|
122
|
+
|
|
123
|
+
- [[system-faction-asymmetry]] — the mechanical difference this module dresses;
|
|
124
|
+
they must be authored together.
|
|
125
|
+
- [[world-aesthetic-direction]] — turns each faction's colour/silhouette rule
|
|
126
|
+
into a briefed, JUDGE-passing look.
|
|
127
|
+
- [[world-naming-and-tone]] — faction names and the words only they use.
|
|
128
|
+
- [[pattern-readability]] — keeps competing factions salient in a busy frame.
|
|
129
|
+
|
|
130
|
+
## See also
|
|
131
|
+
|
|
132
|
+
- [`docs/JUDGE.md`](../../docs/JUDGE.md) — readability & palette-harmony axes:
|
|
133
|
+
can you find and name each side instantly, in one world's colours?
|
|
134
|
+
- [[anchor-starcraft]] — three rosters, one balance, three unmistakable
|
|
135
|
+
silhouettes. [[anchor-shadow-of-mordor]] — factions of *individuals* whose
|
|
136
|
+
identity is emergent memory.
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: world-naming-and-tone
|
|
3
|
+
title: Naming & Tone — the Kentō house restraint
|
|
4
|
+
kind: worldbuilding
|
|
5
|
+
tags: [naming, tone, voice, register, restraint, copy, evocative, ux-text]
|
|
6
|
+
summary: Names, voice, and register — the Kentō house restraint of one-word evocative titles (lanternway, rootward, tarnholm, kintsugi) and text that trusts the player.
|
|
7
|
+
use-when: You need to name the game, its places, factions, and mechanics — and set the voice for the little text a small game shows.
|
|
8
|
+
composes-with: [world-worldbuilding-scaffold, world-faction-identity, world-narrative-delivery]
|
|
9
|
+
verify-with: none
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Naming & Tone — the Kentō house restraint
|
|
13
|
+
|
|
14
|
+
**What it is.** The **name** is the smallest, most-seen piece of worldbuilding —
|
|
15
|
+
the title on the first screen, the word on every place and mechanic. **Tone** is
|
|
16
|
+
the register of every string the game shows. The house style is *restraint*: one
|
|
17
|
+
evocative word over a compound sentence, an implied world over an explained one,
|
|
18
|
+
text that trusts the player to feel it. The examples name themselves in a breath
|
|
19
|
+
— *lanternway*, *rootward*, *tarnholm*, *kintsugi* — and say almost nothing else.
|
|
20
|
+
|
|
21
|
+
**Player fantasy / why it's fun.** A good name is a whole world compressed. Say
|
|
22
|
+
*rootward* and the player already feels down, inward, growing. The name does the
|
|
23
|
+
worldbuilding the text doesn't have to.
|
|
24
|
+
|
|
25
|
+
## The house rule: one evocative word
|
|
26
|
+
|
|
27
|
+
The Hayao lean is a **single coined or weathered word** that implies a direction
|
|
28
|
+
or a place. It reads on a title screen, survives in a URL, and carries a mood
|
|
29
|
+
without a subtitle.
|
|
30
|
+
|
|
31
|
+
| Name | How it's built | What it implies at a glance |
|
|
32
|
+
|---|---|---|
|
|
33
|
+
| **lanternway** | lantern + way (a path) | a lit route through dark; keeping, walking |
|
|
34
|
+
| **rootward** | root + -ward (toward) | descent, growth, inward, earth |
|
|
35
|
+
| **tarnholm** | tarn (mountain lake) + holm (island) | a cold, small, isolated place |
|
|
36
|
+
| **kintsugi** | the craft of gold-mending broken pottery | repair as beauty; breakage that heals |
|
|
37
|
+
|
|
38
|
+
The technique: **fuse two small, concrete morphemes** (a thing + a direction, or
|
|
39
|
+
a place + a place), or **borrow a real craft/place word** with the right weather
|
|
40
|
+
on it. Avoid the fantasy-generator failure modes below.
|
|
41
|
+
|
|
42
|
+
## Vectors / options — dialing the register
|
|
43
|
+
|
|
44
|
+
Pick a register and hold it across *every* string, from the title to the
|
|
45
|
+
game-over line:
|
|
46
|
+
|
|
47
|
+
| Register | Feels like | Naming source | Fits themes |
|
|
48
|
+
|---|---|---|---|
|
|
49
|
+
| **Weathered / folk** | old, worn, quiet | real archaic words; place-suffixes (-holm, -mere, -fen) | stewardship, seasonal, elegiac |
|
|
50
|
+
| **Coined-compound** | crafted, precise | two morphemes fused (root+ward) | most house games; clean & ownable |
|
|
51
|
+
| **Craft-loan** | elegant, specific | a real craft term (kintsugi, kentō) | Japanese-craft register; on-brand |
|
|
52
|
+
| **Mythic** | grand, absolute | invented proper nouns, capitalised | large-scale, conqueror-agency worlds |
|
|
53
|
+
| **Plain / wry** | modern, light | ordinary words, a little dry | cosy, comedic, or tonal-twist games |
|
|
54
|
+
|
|
55
|
+
The house default sits in the first three. Mythic and wry are available but pull
|
|
56
|
+
*away* from the Kentō register — use them deliberately, matched to the theme.
|
|
57
|
+
|
|
58
|
+
## Method
|
|
59
|
+
|
|
60
|
+
1. **Name the game last, from the fantasy.** Once [[world-worldbuilding-scaffold]]
|
|
61
|
+
has the premise and role, the name is the compression of that feeling — not a
|
|
62
|
+
thing you pick first and rationalise.
|
|
63
|
+
2. **Try the fuse.** Combine two concrete morphemes from the world (its material,
|
|
64
|
+
its direction, its place). Or borrow one weathered real word. Say it aloud.
|
|
65
|
+
3. **Set one register** and write a *tone sheet* — 3–4 example strings (a title,
|
|
66
|
+
a prompt, a win line, a loss line) that fix the voice. Everything else matches.
|
|
67
|
+
4. **Name places and factions in the same grammar.** If the game is *lanternway*,
|
|
68
|
+
its places are *the Duskmere*, *the Last Lamp* — not *Region 3*. Factions
|
|
69
|
+
inherit their value's register ([[world-faction-identity]]).
|
|
70
|
+
5. **Name mechanics in-world where you can.** "Kindle," "mend," "ward" over
|
|
71
|
+
"activate," "repair," "buff." An in-fiction verb teaches and immerses at once.
|
|
72
|
+
6. **Cut adjectives.** The house voice is nouns and verbs. If a string needs three
|
|
73
|
+
adjectives to land, the name or the scene isn't doing its job.
|
|
74
|
+
|
|
75
|
+
## Worked example
|
|
76
|
+
|
|
77
|
+
**World:** the drowned-coast keeper from [[world-worldbuilding-scaffold]].
|
|
78
|
+
|
|
79
|
+
- **Title tries:** *saltway* (too plain), *The Last Keeper of Ys* (too much
|
|
80
|
+
subtitle), **lanternway** (fuse: lantern + way — a lit path; keeps the house
|
|
81
|
+
grammar). Ship the one-word fuse.
|
|
82
|
+
- **Places:** *the Duskmere* (the drowning marsh), *the Far Lamp* (the last
|
|
83
|
+
lantern). Not "Level 5."
|
|
84
|
+
- **Mechanics:** *kindle* (light), *ward* (hold the dark). In-world verbs.
|
|
85
|
+
- **Tone sheet:** title *"lanternway."* · prompt *"the path ahead is dark."* ·
|
|
86
|
+
win *"the far lamp holds."* · loss *"the dark has the road."* Four strings,
|
|
87
|
+
one weathered voice, no adjectives to spare.
|
|
88
|
+
|
|
89
|
+
## Aesthetic hook
|
|
90
|
+
|
|
91
|
+
Tone is set by the **Kentō** register itself: the palette is *elegant Japanese
|
|
92
|
+
craft* (the name *kentō* — 見当 — is the woodblock registration mark that aligns
|
|
93
|
+
each colour pass), so the copy should share that restraint — spare, concrete,
|
|
94
|
+
unhurried. Text is a **DOM overlay** in the house style, not `Text` nodes drawn
|
|
95
|
+
into the scene (`docs/CONVENTIONS.md`), which frees the voice from HUD clutter:
|
|
96
|
+
say less, and set it in the serif the JUDGE renders true (`docs/JUDGE.md` fonts).
|
|
97
|
+
A title screen with one word in ink on washi *invites* (JUDGE chrome axis) far
|
|
98
|
+
better than a paragraph of lore. Match the naming register to the palette
|
|
99
|
+
register: weathered names for the woodblock look; save the neon-mythic voice for
|
|
100
|
+
a deliberately swapped palette.
|
|
101
|
+
|
|
102
|
+
## Traps
|
|
103
|
+
|
|
104
|
+
- **Fantasy-generator soup.** *Zephyrvale of the Thornwilds*. Apostrophes,
|
|
105
|
+
double-vowels, and stacked proper nouns read as generated. One clean word beats
|
|
106
|
+
a compound epic.
|
|
107
|
+
- **Subtitle crutch.** If the name needs *": A Tale of…"* to make sense, the name
|
|
108
|
+
isn't carrying its weight.
|
|
109
|
+
- **Register drift.** A weathered title over jokey button text (or vice versa)
|
|
110
|
+
breaks the spell. One register, everywhere.
|
|
111
|
+
- **UI-verb naming.** "Activate ability," "consume resource." Name it in-world or
|
|
112
|
+
the fiction leaks out through the buttons.
|
|
113
|
+
- **Adjective pile-up.** The house voice trusts the noun. Three adjectives means
|
|
114
|
+
the scene isn't showing what the words are telling.
|
|
115
|
+
|
|
116
|
+
## Composes with
|
|
117
|
+
|
|
118
|
+
- [[world-worldbuilding-scaffold]] — the premise and role the name compresses.
|
|
119
|
+
- [[world-faction-identity]] — faction names inherit the register and the value.
|
|
120
|
+
- [[world-narrative-delivery]] — tone governs every string the world shows, and
|
|
121
|
+
restraint here is what lets the *systems* speak.
|
|
122
|
+
|
|
123
|
+
## See also
|
|
124
|
+
|
|
125
|
+
- [`docs/JUDGE.md`](../../docs/JUDGE.md) — chrome & finish: a spare, well-set
|
|
126
|
+
title *invites*; a wall of lore doesn't.
|
|
127
|
+
- `docs/CONVENTIONS.md` — menus/titles/HUD are DOM overlays; Kentō is the house
|
|
128
|
+
palette and *kentō* the registration-mark namesake.
|
|
129
|
+
- Example titles *lanternway*, *rootward*, *tarnholm*, *kintsugi* — the restraint
|
|
130
|
+
in one word (reference the *technique*, not the words themselves).
|