Files
aetherbound-guild/docs/04_ART_ANIMATION_AUDIO.md
T

2506 lines
149 KiB
Markdown

# Aetherbound Guild - Japanese 2D Art, Animation And Audio
Approved hand-drawn direction, runtime asset catalog, animation/VFX language and complete audio plan.
## Owner Review / Owner 审核
确认唯一允许的日式 2D 手绘方向,以及角色比例、战场层次、动作、特效、界面材质、音乐和音效清单。像素风只保留历史证据,不再使用。
本文件是当前六份审核文档之一。历史拆分文件仅保留在 Git 历史中;文内规则、表格和 ID 仍是完整开发依据。
## 2026-08-17 Continuous-Growth Presentation Override
The Expedition Company is a persistent generated roster, not a disposable cast
or a fixed set of authored protagonists. A zero-HP Recruit exits the current
battle as `Knocked Out`, remains owned and is battle-ready again for the next
stage. Presentation may communicate immediate battle consequence, line collapse
and temporary absence, but must never imply deletion, memorialization, identity
replacement or loss of level, XP, Profession, Trait or equipment.
Every older row below named `Permanent loss`, `permanent_loss_confirmed`, death
archive, replacement arrival or run-close Company disposal is
`FROZEN_LEGACY_FG4`. It documents the preserved midpoint implementation and is
not current product-facing art/audio authority. Later conversion must rebind
those roles to knockout, stage return, dismissal or Contract return as
appropriate. DEV-2 produces no battle, casualty or later-Region media and may
reuse only the accepted entry art and procedural guild chrome.
<!-- Historical section source: VISUAL_DIRECTION; retained in Git history. -->
## Aetherbound Guild Japanese 2D Visual Direction
> Status: `OWNER-APPROVED DIRECTION / RUNTIME REPAIR REQUIRED`
> Accepted battle reference:
> [Accepted battle reference](prototype/generation/phase6_ui_direction_01/outputs/05_battle_ui_japanese_scale.png)
### One-Line Identity
A bright Japanese 2D hand-drawn fantasy guild crosses softly painted unstable
worlds as a long line of ordinary, persistent adventurers whose professions,
equipment and survival are readable directly in battle.
### Three-Second Read
Without reading the title, the player must recognize:
1. a Japanese fantasy auto-battler in a painted side-view world;
2. one continuous allied Company line facing a materially different enemy line;
3. an imminent action or danger that will test the player's preparation.
### Character Direction
- Thin, controlled Japanese animation linework with restrained cel color.
- Actor proportions follow the accepted reference rather than a fixed
body-ratio label.
- Ordinary unit scale has no fixed percentage. It must preserve the complete
Company line, enemy relation and movement corridor at actual play size, then
be confirmed by the Owner from a real runtime frame.
- Profession identity comes from silhouette, weapon/tool, stance and action, not
a large text label or oversized portrait.
- Allied units face right; enemies face left. The line has visible horizontal
travel and real contact before melee impact.
- Generated Recruits are persistent participants, not fixed authored protagonists.
- Bosses may be substantially larger, but cannot remove crowd readability or
cover the full tactical corridor.
### Environment Direction
- Softly painted sky, architecture, vegetation, route machinery and local
hazards with clear atmospheric depth.
- Separate background, midground, playable ground and foreground layers.
- Bright readable daylight and region-specific weather are preferred over a
generic dark-blue stage.
- Environment tells the Region rule visually: heat/constructs, archive clauses,
echoes, rail order, hidden information and synthesis each require distinct
shapes and props.
- The central combat corridor stays readable; tall decoration cannot cut actors
apart or hide attacks.
### UI Direction
- World first, compact instruments second.
- Top HUD carries objective, side pressure and pause/speed/inspect tools.
- Bottom HUD carries the Company line, HP/resource state and selected details.
- Materials use charcoal ink, ivory enamel, repaired canvas, weathered brass,
aether cyan, danger coral and safe green.
- Repeated offers and inventory cells may use bounded frames. Page sections and
the gameplay surface may not become nested cards.
- Engine-rendered Chinese and English remain crisp, with icon plus shape support
for every important state.
### DEV-3 Owner UI Style Contract
> Status: `OWNER REVIEW REQUIRED / IMPLEMENTATION FROZEN UNTIL SPEC ACCEPTANCE`
> Reference: Owner-provided `IMG_8573` UI screenshot plus the accepted battle
> scale reference above.
DEV-3 pages must read as one Japanese 2D hand-drawn world with attached field
instruments. The screenshot is a composition and material authority, not a
palette-only reference. A bright painted environment, full readable actors,
object-led actions and compact HUD rails must be visible in the first frame.
#### Composition
- The environment occupies the page and remains visible behind every major
decision. It is never hidden by one continuous opaque application panel.
- Characters, props and route objects establish the visual hierarchy before
explanatory copy. Recruit and equipment choices use a person/object-bearing
stage, not a row of text with a tiny icon.
- Guild and Contract place the Company in the scene and put the next action on
a field-attached desk/board. Market keeps offer rows compact but gives the
inspected Recruit or item a larger stage presence.
- Recruit Review is portrait-led: a complete figure, readable silhouette and
sourced equipment/tool are larger than the supporting fact list.
- One open frame or two aligned HUD rails may organize a page. Nested cards,
repeated framed rows and a full-page dark rectangle are rejected.
#### Actors And Assets
- Use the unified non-pixel Recruit family with linear filtering and enough
screen height to read face, silhouette, tool and stance at actual play size.
- A Recruit image may not be used as a 40-60px list icon when it is the primary
choice subject. Lists may show a compact silhouette only when a larger detail
stage remains simultaneously visible.
- Props (Contract board, Market requisition, equipment/tool) must be authored
shapes or accepted raster assets with a clear action meaning. Generic stars,
diamonds and empty medallions cannot carry the action alone.
- No nearest-neighbor scaling, palette reduction, pixel filters or retro HUD
tiles are allowed in the DEV-3 presentation.
#### Controls And Information
- Primary commands are parchment/ivory or painted object controls with one
semantic icon and a short label. Secondary commands use open rails or quiet
canvas ink; they do not repeat the primary frame.
- Prices, Company count, availability and disabled reasons sit on a compact
HUD rail with stable spacing. They are not distributed across nested cards.
- Headings use the engine font and remain legible over the scene through a
restrained ink strip or local contrast treatment, never a large opaque panel.
- Chinese and English copy must retain the same visual hierarchy at 100% and
130% text scale; no text may touch a frame or actor.
#### Responsive Acceptance
- Required landscape checks are `760x360`, `844x390` and `1280x720`, with
`zh_CN`/`en` and 100%/130% text where the state is applicable.
- At the smallest viewport, the complete actor silhouette, action target,
price/availability and Back/Confirm controls remain visible without scroll
traps or overlapping text.
- A DEV-3 visual candidate is rejected if it passes bounds while still reading
as a card wall, if actors are subordinate to copy, or if the background/props
cannot be recognized in a three-second glance.
## UI-0A Complete UI Style Bible
> Status: `OWNER REVIEW REQUIRED / CODE FROZEN`
> Applies to: Boot, first-launch setup, Title, Initial Company, Guild,
> Contract, Market, Recruit/Equipment review, Party, Battle, Result and
> Recovery.
> Product authority: `01_GAME_DESIGN.md`.
> Page/component authority: `03_PAGES_AND_UX.md`.
This is the production contract for the game's player-facing presentation. It
is not a palette mood board and it is not a collection of screenshots. Every
future page, component and asset must satisfy the same world, actor, material,
type, state, motion and responsive rules below.
### UI-0A.1 Visual Identity
**Aetherbound Guild is a bright Japanese 2D hand-drawn fantasy world where a
small, persistent guild makes consequential plans in the field.** The player
must see the world, the people and the current decision before reading an
explanation. UI is a repaired field instrument attached to a board, rail,
ledger, strap, tool rack or screen edge; it is never a separate app dashboard.
The first three visual reads are always:
1. the current world and focal people/object;
2. the current Company/Contract state that matters now; and
3. the next legal action and its immediate consequence.
### UI-0A.2 Shape And Material Language
| Role | Required language | Avoid |
| --- | --- | --- |
| World | softly painted sky, stone, vegetation, banners and readable depth layers | flat gradient, dark generic backdrop, baked UI into background |
| Recruit | thin controlled line, restrained cel color, complete silhouette, profession tool and stance | tiny icon, pixel sprite, glossy 3D, oversized hero poster |
| Props | authored board, requisition, tool, seal or stitched marker with clear action meaning | generic star/diamond as the only meaning |
| Primary action | parchment/ivory field, repaired brass edge, one semantic icon and explicit verb | repeated dark rectangle or identical gold frame |
| Secondary action | open ink rail, quiet canvas, differentiated icon and lower visual weight | same treatment as primary |
| Status | compact field rail with value, source and consequence | floating dashboard panel or unexplained badge |
| Destructive action | split edge, warning sentence and neutral/coral accent | solid red button or silent destructive tap |
| Disabled action | intact material, cross-pin/lock shape and exact reason | invisible, greyed-out mystery control |
Frames are constructed from one or two aligned rails and corner fittings. A
full-page opaque rectangle, nested decorative cards and repeated framed rows are
rejected. A repeated offer may have one bounded row because it is a repeated
decision; a page section may not contain cards inside cards.
### UI-0A.3 Palette And Contrast
The semantic palette is a material system, not a single hue family:
| Token | Use | Backup cue |
| --- | --- | --- |
| `ink` | text structure, quiet rail, focus outline | line/shape |
| `canvas` | paper, parchment, repaired cloth | surface texture |
| `brass` | frame edge, confirmed structure, navigation | closed contour |
| `aether_cyan` | inspect, focus, information, active route | sparkle/arrow shape |
| `safe_green` | committed success, retained growth, recovery | receipt/seal |
| `danger_coral` | pressure, invalid action, destructive consequence | split edge/warning mark |
| `sky_blue` | environment and calm state | open contour |
| `shadow_ink` | local contrast behind text only | never a full-page dashboard |
Large UI surfaces use charcoal ink translucency only where text crosses a busy
scene. Important state cannot rely on color alone; shape, icon and localized
text repeat the meaning. Text and interactive controls must remain readable at
100% and 130% text scale on `760x360`, `844x390` and `1280x720`.
### UI-0A.4 Actor, Prop And Environment Scale
- The focal actor/object gets the largest readable treatment in its decision
region. It may not be reduced to a 40-60px list icon when it is the choice.
- Choice screens show equally weighted complete figures or a shared staged
scene. Inspect/Review expands the selected figure and its sourced tool.
- Guild shows the current Company as people in a shared world, not as four
isolated portrait cards.
- Market shows the selected Recruit or item at planning scale beside compact
offer rows; the rows never become the only visual content.
- Backgrounds are separate imported layers. Foreground props frame the action
without hiding faces, hands, equipment, prices or primary controls.
- Linear filtering and mipmaps are used for hand-drawn raster actors and props;
nearest-neighbor, palette reduction and post-process pixelation are forbidden.
### UI-0A.5 Motion And Audio Relationship
Motion confirms a committed state rather than decorating a click:
| Event | Visual response | Timing rule |
| --- | --- | --- |
| Focus/hover | local outline, icon lift or rail highlight | immediate, no layout shift |
| Press | small material depression and icon response | begins within 50ms |
| Inspect | scene emphasis and detail reveal | short nonblocking transition |
| Purchase/equip/hire | sourced object moves to its destination and values change | only after receipt |
| Error | local split edge, exact reason and retained state | never implies success |
| Receipt | named result/seal and stable final state | no particle-only confirmation |
| Page transition | brief field slide/fade or rail handoff | 80-200ms; no blocking wipe |
Reduced motion removes travel and camera exaggeration but keeps the final state,
focus, receipt and consequence readable. Reduced flashes removes high-contrast
pulses. Audio and haptics follow the same authoritative receipt and are never
required to understand a state.
### UI-0A.6 Asset And Runtime Standards
Every player-facing asset records:
```text
runtime_role, source/provenance, dimensions, format, import filter,
pivot/anchor, localization scope, current state, runtime_seen,
agent_visual_reviewed, human_reviewed, rejection reason
```
Backgrounds are opaque layered landscape masters. Actors, props and icons use
transparent assets with stable anchors. Engine text, prices and state values
are never baked into generated images. A raw PNG, contact sheet or imported
resource is not final until the current runtime shows it at play size.
### UI-0A.7 Non-Negotiable Rejections
- Pixel art, pixel filters, nearest-neighbor enlargement or low-resolution
palette reduction.
- A dark collection of generic panels that could describe any game.
- Tiny actors, generic icons or text paragraphs replacing the focal subject.
- A single button/frame treatment repeated for every semantic action.
- A page whose first action is hidden by copy, HUD, decoration or empty space.
- A visual state that differs only by color or a hidden tooltip.
- A H5 or screenshot presented as accepted before Owner visual review.
### VA-1A Guild Anchor Asset Binding
The first concrete implementation is governed by the decomposition package at
`docs/prototype/generation/ui0a_guild_anchor_01/`. The runtime scene must bind
separate layers rather than use the current full-page frame as a background:
```text
background sky -> distant ruins -> midground route -> playable ground
-> foreground banner/table -> Recruit actors + ground shadows
-> Contract Board / Route Map / Seal props
-> top resource rail + bottom field command rail
-> engine-rendered text and hit areas
```
Each layer has an independent import, z-order, anchor and runtime role. The
AI reference is a composition/material authority; it is not shipped as one
flattened screenshot and its generated text is never used as game text.
### Motion Direction
- Idle motion is subtle and never replaces gameplay animation.
- Melee uses anticipation, forward travel/contact, impact and recovery.
- Ranged action visibly releases a projectile or line effect from the attacker
to the legal target.
- Healing visibly originates from the healer and changes the recipient's state.
- Guard, hurt, defeat and victory have distinct poses with stable anchors.
- Floating damage/healing values appear at the affected actor, rise and settle
quickly, and never cover the next priority action.
- Reduced motion removes travel exaggeration and camera motion, but preserves
readable anticipation, impact and legal final state.
### Explicit Rejections
- Pixel art, nearest-neighbor enlargement and low-resolution palette reduction.
- Western steampunk hero-poster rendering or glossy 3D characters.
- Oversized ordinary characters that leave room for only two or three actors.
- Card-wall dashboards, generic dark panels and app-like form pages.
- Decorative particles or idle loops presented as battle animation.
- Fixed named-hero storytelling, rarity framing or authored social-bond systems.
- Pseudo-text baked into generated art.
### Production Rule
One representative runtime battle must pass before bulk page or Region asset
production. Concept art controls direction; only imported, gameplay-bound and
normal-rendered assets prove implementation. Owner review remains the final
visual gate.
<!-- Historical section source: ART_ASSET_AND_ANIMATION_CATALOG; retained in Git history. -->
## Aetherbound Guild: Art Asset And Animation Catalog
> Authority: production specification for generated-recruit art, profession
> kits, equipment and artifact presentation, region and enemy art, animation,
> combat staging, UI support art, and VFX.
>
> Product source: `01_GAME_DESIGN.md`.
> Visual direction: `04_ART_ANIMATION_AUDIO.md`.
>
> Current gate: design candidate only. Nothing in this catalog is generated,
> imported, runtime-seen, human-reviewed, device-verified, or release-accepted.
### 1. Visual Production Contract
#### 1.1 Identity Statement
Aetherbound Guild is an original landscape 2D Japanese hand-drawn fantasy
auto-battler in which a changing company of visibly assembled recruits forms
one long, readable party line against region-shaped threats. Expressive inked
silhouettes, restrained cel shading, tactile equipment, and precise effect
geometry make preparation choices legible while combat executes automatically.
The art must communicate, in this order:
1. who is exposed at the front and who is protected farther back;
2. which actor will act, whom the action will affect, and when it will resolve;
3. which profession, equipment, trait, or artifact caused the result;
4. whether the company can recover a knocked-out member, recruit another, or improve its
next plan.
Decorative detail never outranks those reads. Generated recruits are visual
recipes, not authored lead characters, and no recipe receives unique narrative
illustration obligations.
#### 1.2 Visual Pillars
| Pillar | Production rule | Rejection signal |
|---|---|---|
| Assembled individuality | Body, face, hair, garment, detail, profession kit, palette, and equipment remain separable and deterministic. | A recruit reads as a recolor or changes identity between portrait and battle. |
| Ordered-line clarity | Front-to-rear order remains visible in silhouette, ground contact, overlap, targeting, and result review. | A player must infer order from text, health bars, or selection alone. |
| Mechanical ornament | Every emblem, tool, prop, motion, and effect has a gameplay or navigation job. | Decoration resembles a target, hazard, reward, or action without the matching state. |
| Regional contrast | Each of eight region families has its own shape, material, value, weather, and enemy integration rules. | A region differs only by hue, backdrop swap, or particle tint. |
| Hand-drawn control | Line weight, key poses, painted edges, and texture are deliberately cleaned at play size. | Anatomy drift, unstable pivots, synthetic detail noise, or inconsistent light survives cleanup. |
| Quiet automation | Idle motion yields to forecast, impact, casualty, reward, and recovery cues. | Constant motion or glow makes automatic battle unreadable or tiring. |
#### 1.3 Mood And Lighting
| State | Lighting and value contract |
|---|---|
| Shop and preparation | Open mid-values, clear local color, soft overhead light, and low atmospheric motion support comparison. |
| Battle opening | Region light remains recognizable while actor rims and ground contacts establish the party line and opposing staging. |
| Normal execution | Background contrast drops behind active silhouettes; action geometry receives the brightest local edge. |
| Pressure | Shadows cool and tighten locally around threatened actors; the whole screen does not darken or pulse. |
| Knockout | Motion and saturation withdraw locally from the affected Recruit while the rest of the battlefield remains inspectable; no memorial or deletion cue appears. |
| Reward | Warm directional light reveals the claimed object; celebration does not cover party condition or next action. |
| Endgame and high difficulty | More complex region states may layer together, but the same value hierarchy and semantic shapes remain binding. |
#### 1.4 Production And Evidence States
Every asset follows this non-skippable sequence:
`brief -> source -> cleaned_master -> separated -> export_validated -> imported -> integrated -> runtime_seen -> agent_visual_reviewed -> human_reviewed -> device_verified -> release_accepted`
Later states are never inferred from earlier ones. Current approval of this
catalog advances only the `brief` state. Final or bulk media production remains
outside this Goal.
### 2. Authority, Bindings, And IDs
#### 2.1 Content Integration Bindings
This catalog owns visual production rules, not gameplay identities or screen
architecture. The following names are mandatory integration bindings. They may
be replaced only by the corresponding stable IDs from the merged authorities.
| Binding | Required resolution |
|---|---|
| `CONTENT.PROFESSION.BASE[01..12]` | Twelve base profession rows, in their authoritative order. |
| `CONTENT.PROFESSION.ADVANCED[01..24]` | Twenty-four advanced profession rows; two resolve to each base row. |
| `CONTENT.PROFESSION.HIDDEN[01..06]` | Six hidden hybrid profession rows and their prerequisite pairings. |
| `CONTENT.TRAIT[01..36]` | Thirty-six trait rows, each exposing benefit, cost, trigger, and visibility. |
| `CONTENT.EQUIPMENT[001..320]` | Three hundred twenty equipment rows, including form, one-slot behavior, anchor need, and manifestation class. |
| `CONTENT.ARTIFACT[01..60]` | Sixty shared-rule artifact rows and their trigger/conflict states. |
| `CONTENT.ENEMY[001..100]` | One hundred ordinary or elite enemy identities, including tier and region. |
| `CONTENT.BOSS[01..16]` | Sixteen boss identities, including region, action set, and phase needs. |
| `CONTENT.REGION[01..08]` | Eight region identities and encounter grammar. |
| `SYSTEM.PARTY.CAPACITY_PROFILE` | Simulated deployment capacity and anchor spacing across run progression. |
| `SYSTEM.COMBAT.EVENT_SCHEMA` | Authoritative targeting, timing, status, casualty, and result event names. |
| `UX.VIEWPORT.MIN/REFERENCE/MAX` | Landscape review viewports and safe-area masks. |
| `UX.SCREEN.*` | Player-facing screen and state IDs requiring art support. |
Unresolved bindings remain visible in the manifest. Art production cannot
silently assign a profession mechanic, item form, enemy tier, region placement,
screen count, or battle formula.
#### 2.2 Stable Art IDs
| Family | Stable ID range | Exact identity count |
|---|---|---:|
| Recruit modular part | `ART-REC-{part}-{index}` | defined in Section 4 |
| Profession kit | `ART-PRO-B01..B12`, `ART-PRO-A01..A24`, `ART-PRO-H01..H06` | 42 |
| Trait presentation | `ART-TRT-01..36` | 36 |
| Equipment presentation | `ART-EQP-001..320` | 320 |
| Artifact presentation | `ART-AFT-01..60` | 60 |
| Ordinary or elite enemy | `ART-ENM-001..100` | 100 |
| Boss | `ART-BOS-01..16` | 16 |
| Region | `ART-REG-01..08` | 8 |
| UI support art | `ART-UI-{family}-nnn` | Section 10 ledger |
| VFX grammar | `ART-VFX-{family}-{state}` | Section 13 ledger |
Gameplay identity counts and visual state counts stay separate. A palette,
frame, expression, equipment attachment, effect, or difficulty treatment is a
presentation state, never a new recruit, profession, enemy, boss, or item.
Recruit part values are `BODY`, `FACE`, `HAIR`, `GARMENT`, `DETAIL`,
`SKINPAL`, `HAIRPAL`, and `GARMENTPAL`. Profession overlays use the separate
`ART-PRO-*` family.
#### 2.3 Manifest Record
Every source and export record stores:
```text
id, content_binding, runtime_role, source_type, manual_brief_or_prompt,
creator_or_provider, provider_task_id, source_revision, source_path,
processed_path, source_hash, dimensions, format, alpha, layers, palette_id,
rig_id, anchor_map, pivot, native_play_scale, animation_events, frame_timing,
reduced_motion_export, reduced_flash_export, low_power_export, license_status,
import_binding, integration_state, runtime_capture, rejection_reason,
agent_visual_review, human_review, device_review, release_acceptance
```
Accepted and rejected candidates remain traceable. Regeneration never replaces
the provenance of an earlier candidate.
### 3. Global Drawing, Shape, Color, And Material Rules
#### 3.1 Drawing And Camera
- Characters use a three-quarter side presentation with the face, leading
hand, tool, and ground contact readable in a single pose.
- Outer contours are warm charcoal, not pure black. Interior lines are lighter
and are removed before they turn into noise at minimum play size.
- Cel shading uses one principal shadow group and one selective reflected-light
group. Specular marks belong to the material, not to rarity.
- Faces retain two readable landmarks at battle scale: brow/eye direction and
mouth/jaw angle. Portrait assembly adds detail without changing geometry.
- Background perspective is shallow enough for the ordered party line to keep
one stable ground rail. Vertical offsets used for overlap separation carry no
tactical meaning.
- Camera shake, zoom, and rotation are feedback accents, never the only proof
of hit weight, threat, or state change.
#### 3.2 Shape Language
| Subject | Primary shape grammar | Required distinction |
|---|---|---|
| Generated recruit | Tapered organic body masses plus one profession-owned outer contour. | Face/hair identity remains visible inside the profession silhouette. |
| Protective role | Closed arcs, broad planted bases, upright tools. | Protection is visible before an effect fires. |
| Reach or distance role | Long directional diagonals and clear empty space around the release path. | The projected reach does not resemble a protection field. |
| Support role | Open cups, paired loops, or outward branches. | Ally benefit and enemy harm use different endpoints. |
| Enemy | Region material distorted into one dominant threat shape. | Each identity has one recognizable mechanic-bearing contour. |
| Boss | One large body thesis plus two secondary phase-changing masses. | Hit area and forecast geometry remain distinct from decoration. |
| Interactable object | Squared base, visible hand contact, one state-bearing mechanism. | It cannot resemble dropped loot or a hazard. |
| Reward | Compact centered object with a quiet outward reveal. | It cannot resemble an incoming attack. |
#### 3.3 Palette And Material Budget
The common palette uses seven separated roles: ink charcoal, paper-white,
verdant green, mineral teal, signal coral, reward gold, and arcane violet.
Regions replace local hues but keep semantic contrast. Danger uses coral plus a
toothed or pointed contour; healing uses green plus an open-leaf contour;
protection uses teal plus a closed bracket; reward uses gold plus a radial seal.
Per recruit, skin and hair do not count against the material cap. The visible
combat costume uses at most:
- two garment-base materials;
- two profession materials;
- one equipment-specific focal material;
- one accent hue covering no more than 25 percent of the actor silhouette;
- emissive detail covering no more than 8 percent, except during a resolved
action frame.
Profession hue never encodes identity alone. Rarity cannot replace local color
with a full-body tint. Region lighting cannot shift ally and enemy values into
the same silhouette range.
#### 3.4 Asset Scale And Format Targets
| Asset | Editable source target | Runtime role | Validation rule |
|---|---:|---|---|
| Modular body or outfit master | 1536x2048 | layered actor rig or curated atlas | Full contour, ground, hands, face, and every declared anchor remain uncropped. |
| Portrait assembly | 1536x1536 | 384/512/768 crops | Same recipe and geometry as battle actor. |
| Battle actor | shared modular source | reference height bound to `UX.VIEWPORT.REFERENCE` | Silhouette passes at minimum viewport with bars and effects present. |
| Enemy actor | 1536x1536 or 1536x2048 | layered rig or atlas | Mechanic contour survives region lighting. |
| Boss actor | 2048x2048 to 3072x2048 | multi-part rig or atlases | Never covers forecast endpoints or priority controls. |
| Equipment or artifact object | 1024x1024 | 96/192/384 exports | Perceived size normalized without cropping long tools. |
| UI icon | vector or 512 master | 24/32/48 logical exports | Meaning survives one-color and high-contrast tests. |
| Environment master | 2560x1440 | layered landscape scene | Actors, UI, interactables, and hazards are not baked in. |
| VFX master | vector, mesh definition, or 1024 atlas | effect-family export | Alpha fringe, pivot, timing, blend, and final state are explicit. |
Atlas pages target 2048. A 4096 page requires measured memory and upload proof
on the selected device tier. Opaque full-screen plates do not carry alpha.
### 4. Generated Recruit Visual System
#### 4.1 Deterministic Recipe
`05_CONTENT_CATALOG.md` is the sole authority for stored generation options.
One recruit stores exactly this visual recipe:
```text
body_frame + face_shape + skin_palette + hair_shape + hair_palette
+ garment_cut + garment_palette + profession_overlay + detail_mark
```
Art does not roll this recipe. Generation stores the selected option IDs after
its fixed content substream completes; reload, localization, inspection, and
runtime assembly only consume those IDs. Equipment, scars, expression,
condition, and motion are derived layers and are never appended as hidden
generation options.
```text
portrait_assembly = stored_visual_recipe + expression_state + scars[]
battle_assembly = stored_visual_recipe + body_motion + equipment_attachments
+ scars[] + condition_state
result_assembly = stored_visual_recipe + result_expression + equipment_state
+ scars[] + condition_state
```
The same stored recipe builds shop portrait, inspection portrait, party-line
actor, result portrait, and collection silhouette. Assemblies may use different
detail levels but cannot alter face geometry, hair contour, body frame, palette,
garment cut, profession overlay, or detail-mark placement.
#### 4.2 Recruit Record To Art Crosswalk
The crosswalk below is exhaustive for the recruit record. `Stored` means the
content or system authority persists the value; `derived` means art assembles a
view from stored/runtime state without creating another option authority.
| Recruit record field | Stored authority | Art binding | Derived assembly and runtime output |
|---|---|---|---|
| `recruit_instance_id` | Unique run identity | Manifest/runtime owner key; no visual option | Joins every portrait, actor, event, result, and history view to one recruit. |
| `generation_seed` | Content generation seed | Provenance only; art never draws from it after recipe storage | Reproduction audit can verify the stored recipe without rerolling an assembly. |
| `offer_index` | Stable offer position | Provenance only | Shop portrait binds to the exact offer record. |
| `display_name_tokens` | Localizable name tokens | No art master | Engine-rendered name beside every derived assembly. |
| `pronoun_set` | Localization/accessibility field | No visual coupling | Text and accessibility output only. |
| `voice_effort_set` | Audio field with 8 content options | No art master | Audio binds independently to the same recruit ID. |
| `body_frame` | Visual grammar: 8 options | `ART-REC-BODY-01..08` | Shared body layers, attachment points, and 16 common motion slots. |
| `face_shape` | Visual grammar: 12 options | `ART-REC-FACE-01..12` | Six expression assemblies used by portrait/result states. |
| `skin_palette` | Visual grammar: 12 options | `ART-REC-SKINPAL-01..12` | One reviewed palette data set applied consistently to face and body. |
| `hair_shape` | Visual grammar: 24 options | `ART-REC-HAIR-01..24` | Portrait, battle-front, and battle-rear assemblies with headwear masks. |
| `hair_palette` | Visual grammar: 10 options | `ART-REC-HAIRPAL-01..10` | Palette data applied to every assembly of the selected hair shape. |
| `garment_cut` | Visual grammar: 12 options | `ART-REC-GARMENT-01..12` | Profession-neutral portrait and battle garment layers. |
| `garment_palette` | Visual grammar: 16 options | `ART-REC-GARMENTPAL-01..16` | Contrast-paired garment palette data; never a quality indicator. |
| `profession_overlay` | Visual grammar: 42 options | One `ART-PRO-B*`, `ART-PRO-A*`, or `ART-PRO-H*` package | At generation it is the base kit selected by `base_profession_id`; later authoritative profession changes update this stored binding. Counted in Section 5, not in recruit-module totals. |
| `detail_mark` | Visual grammar: 20 options | `ART-REC-DETAIL-01..20` | One portrait/battle cosmetic assembly; no second accessory or multi-detail draw. |
| `base_profession_id` | Content profession identity | Must resolve to `ART-PRO-B01..B12` at generation through the profession catalog | Rules, text, and initial overlay use one profession binding; art cannot select a different kit. |
| `attribute_vector` | Five content grades | No body, face, palette, or garment binding | Engine-rendered grades and sourced comparison markers only. |
| `trait_id` | One of 36 traits | `ART-TRT-01..36` from Section 6 | Compound emblem and bounded event badge; never changes the stored visual recipe. |
| `starting_equipment_id` | One content equipment ID | `ART-EQP-001..320` plus its declared attachment point | Shop/result objects and the single battle attachment derive from equipment ownership. |
| `level`, `xp` | Individual system/content progression values | No visual option | Engine-rendered `LV 1..10` and exact current/next XP progress; never a Company-wide level. |
| `mastery_by_profession` | System progression map | No implicit overlay change | UI progress output; a profession overlay changes only through an authoritative profession-state update. |
| `quality_band` | Disclosed content band | No palette, material, body, or effect binding | Engine-rendered band notation only. |
| `shop_cost_tier` | Economy-derived tier | No art option | Engine-rendered cost treatment around the same portrait assembly. |
| `duplicate_signature` | Content-owned hash of name, visual parts, profession, trait, and attribute grades | Consumed for validation; not redefined by art | Prevents content duplicates without treating equipment or level as identity parts. |
| `survival_battles` | Run history | No base-art regeneration | Engine text and result/history context. |
| `knockouts` | Run history | No base-art regeneration | Engine text and sourced condition presentation. |
| `scars[]` | Run history overlays | Reuses scar-compatible geometry within `ART-REC-DETAIL-01..20`; no new generation pool | Zero or more acquired overlays added after the base `detail_mark`, with event provenance and occlusion checks. |
| `acquired_tick` | Run chronology | No visual option | Sort/history metadata only. |
At duplicate-protection step 9, content compares the nine stored visual fields
from Section 4.1 directly to enforce the rule that one exact visible assembly
cannot recur in a run. This comparison is not `duplicate_signature` and does
not add a recruit-record field. On visual-pool exhaustion, content rerolls
`detail_mark`, then `garment_palette`, then `hair_palette`; art consumes the
resulting stored IDs and never invents an unavailable option.
#### 4.3 Modular Source Inventory
| Library | Exact masters | Runtime states per master | Total state cells | Notes |
|---|---:|---:|---:|---|
| Body frames | 8 | 16 common motion slots | 128 | Four height bands by two mass bands; every profession kit fits every frame. |
| Face shapes | 12 | 6 expression assemblies | 72 | Neutral, assess, focus, strain, relief, and loss-record. |
| Hair shapes | 24 | 3 assemblies | 72 | Portrait, battle-front, and battle-rear layers with headwear masks. |
| Detail marks | 20 | 2 assemblies | 40 | Portrait and battle versions of the one stored cosmetic mark. |
| Garment cuts | 12 | 2 assemblies | 24 | Profession-neutral portrait and battle layers. |
| Skin palettes | 12 | palette data | 12 | Highlight, midtone, shadow, lip, and palm values across required lighting. |
| Hair palettes | 10 | palette data | 10 | Natural and aether-touched ranges with no quality coding. |
| Garment palettes | 16 | palette data | 16 | Contrast-paired main/accent sets with non-color readability. |
| **Total** | **114 masters** | | **374 authored state cells** | The 42 profession packages remain separate in Section 5. |
Runtime assembles stored recipes from these modules. Production creates 114
recruit masters and 42 profession packages, not a pre-rendered Cartesian set of
possible recruits. Compatibility matrices validate masks, attachment points,
silhouettes, and palettes without turning each combination into another asset.
The eight body frames are exactly four height bands by two mass bands. They
share collision and timing while preserving authored head, hand, ground, and
equipment proportions. Production may add seated or assisted movement only
through a later content-schema revision; it cannot become a hidden ninth body
option.
#### 4.4 Standard Attachment Point Map
Every body and profession kit declares these named attachment points:
```text
head_top, face_center, shoulder_left, shoulder_right, hand_primary,
hand_secondary, chest, waist_left, waist_right, back_high, back_low,
foot_left, foot_right, ground_front, ground_rear, projectile_origin,
effect_origin, overhead_status
```
Equipment may bind only to a declared point or to `none`. A two-hand item owns
both hand points and a grip-distance range. Hair, sleeves, capes, back objects,
and headwear carry explicit occlusion masks rather than relying on import order.
#### 4.5 Layer And Occlusion Order
```text
rear VFX
rear profession mass / back equipment
rear hair / rear detail mark
rear arm and rear hand item
body frame / garment cut
profession torso and waist overlays
head / face / expression / front hair
front arm and primary item
front profession mass / front equipment
condition and target contours
front VFX / engine-rendered state UI
```
At the minimum viewport, another recruit may cover no more than 35 percent of a
recruit's torso, no more than 15 percent of the head contour, and none of the
profession's unique tool endpoint. The selected or acting actor receives a
shape-following ink-and-paper rim; non-actors are not globally dimmed.
#### 4.6 Generation Safety And Distinctness
- Body, face, skin, hair, and detail distributions are independent of combat
strength, cost, rarity, profession tier, trait polarity, and survival record.
- All profession masks pass `8 * 42 = 336` body/kit, `24 * 42 = 1,008`
hair/kit, `12 * 42 = 504` garment/kit, and `20 * 42 = 840` detail/kit
combinations before production scale-up.
- A recipe is rejected when its face contour, hair contour, profession outer
mass, and primary tool do not produce at least three distinct reads against
the current deployed party.
- Direct comparison of the nine stored visual fields prevents an exact visible
assembly from recurring in a run; `duplicate_signature` remains the broader
content hash defined in the crosswalk.
- Names are engine-rendered. No generated name, biography, or localized text is
baked into art.
- Trait and equipment changes add state-bearing markers; they do not regenerate
a recruit's body or face.
#### 4.7 Recruit Condition Presentation
| State | Portrait change | Battle change | Persistence proof |
|---|---|---|---|
| Available | Neutral or assess expression | `idle_observe` | Full recipe visible. |
| Selected | Focus expression and shaped rim | `ready` final pose | Party-order token shares the same portrait crop. |
| Pressured | Strain expression, segmented condition edge | `pressure_idle` with lowered center of mass | Effect clears only when authoritative condition clears. |
| Knocked Out | Eyes and tool lower; no gore | `knockout_hold` preserves ground and silhouette before current-battle exit | Result view retains the same recipe, ownership and next-stage return state. |
| Victory | Relief expression | restrained `victory_settle` | Equipment and condition remain visible for result review. |
### 5. Profession Visual Kits: 42
#### 5.1 Kit Package And Motion Codes
Each profession receives one package. The visual kit reveals combat
responsibility without replacing recruit identity.
| Deliverable per kit | Per kit | Total for 42 |
|---|---:|---:|
| Profession emblem | 1 | 42 |
| Outer-silhouette overlay set | 1 | 42 |
| Primary tool set with stow state | 1 | 42 |
| State-bearing device with empty/active/full | 3 | 126 states |
| Auto-action pose deviations | 2 | 84 |
| Passive or cadence marker | 1 | 42 |
| Signature effect-geometry brief | 1 | 42 |
| Reduced-motion resolved poses | 2 | 84 |
Animation-need codes used below:
| Code | Required authored deviation |
|---|---|
| `BRACE` | planted anticipation, protected endpoint, absorb recovery |
| `INTERCEPT` | rapid cross-body entry, contact hold, return to legal order |
| `THRUST` | two-hand reach line, contact compression, controlled withdrawal |
| `SWEEP` | broad tool arc with clear start and endpoint, no full-screen trail |
| `DUAL` | alternating hand contacts with readable first and second event |
| `RELEASE` | aim, release event, projectile origin, recoil recovery |
| `CHANNEL` | stable source, sustained tick pose, interruptible recovery |
| `PULSE` | gather, outward ally/enemy endpoint, quiet return |
| `DEPLOY` | hand-to-ground or hand-to-object placement, activation, recall |
| `HEAVY` | long anticipation, high-contact key, weighted settle |
| `MOBILE` | step-out, action, and return that preserves party order |
| `RALLY` | upward signal, outward propagation, group response without manual-control implication |
All actions are automatic event presentation. The codes do not authorize
repeated player-activated skills.
In the kit tables, `both hands` means `hand_primary + hand_secondary`, `both
waist points` means `waist_left + waist_right`, `both shoulders` means
`shoulder_left + shoulder_right`, and `both feet` means `foot_left +
foot_right`. These are compact references to the standard attachment point map,
not new anchor names.
#### 5.2 Base Profession Kits: 12
| Art ID / binding | Silhouette thesis | Equipment anchors | Material and accent limit | Animation needs |
|---|---|---|---|---|
| `ART-PRO-B01` / `CONTENT.PROFESSION.BASE[01]` | Broad shoulder shell and high rectangular guard edge; face stays open. | `hand_secondary`, `shoulder_left`, `back_high` | Canvas + dark iron; teal edge <=20%; no cape. | `BRACE`, `INTERCEPT` |
| `ART-PRO-B02` / `CONTENT.PROFESSION.BASE[02]` | Long forward haft with narrow pennon and low planted stance. | both hands, `back_low`, `projectile_origin` | Ash wood + brushed steel; coral pennon <=15%. | `THRUST`, `MOBILE` |
| `ART-PRO-B03` / `CONTENT.PROFESSION.BASE[03]` | Split short-coat hem and paired compact hand tools. | both hands, both waist points | Dyed cloth + blackened steel; gold stitches <=12%. | `DUAL`, `MOBILE` |
| `ART-PRO-B04` / `CONTENT.PROFESSION.BASE[04]` | Tall bow crescent and offset quiver breaking one shoulder. | both hands, `back_high`, `projectile_origin` | Pale wood + woven cord; verdant fletching <=18%. | `RELEASE`, `MOBILE` |
| `ART-PRO-B05` / `CONTENT.PROFESSION.BASE[05]` | Vertical staff line opposed by a square folio at the waist. | `hand_primary`, `waist_right`, `effect_origin` | Lacquered wood + paper; violet ink <=20%. | `CHANNEL`, `PULSE` |
| `ART-PRO-B06` / `CONTENT.PROFESSION.BASE[06]` | Hanging lantern mass below the hand and open sleeve arc above it. | `hand_primary`, `waist_left`, `effect_origin` | Frosted glass + linen; green light <=8% idle. | `PULSE`, `CHANNEL` |
| `ART-PRO-B07` / `CONTENT.PROFESSION.BASE[07]` | Block hammer head, cropped apron, and compact back tool roll. | both hands, `back_low`, `ground_front` | Forged steel + heavy leather; gold sparks only on contact. | `HEAVY`, `DEPLOY` |
| `ART-PRO-B08` / `CONTENT.PROFESSION.BASE[08]` | Bare forearm wedges, wrapped fists, and short waist sash tails. | both hands, `waist_left`, `waist_right` | Woven wrap + matte leather; coral knots <=12%. | `DUAL`, `INTERCEPT` |
| `ART-PRO-B09` / `CONTENT.PROFESSION.BASE[09]` | Shoulder vial rack and low triangular satchel balanced across torso. | `shoulder_right`, `waist_left`, `hand_primary` | Clear glass + waxed cloth; three liquid hues maximum. | `DEPLOY`, `RELEASE` |
| `ART-PRO-B10` / `CONTENT.PROFESSION.BASE[10]` | Narrow upright standard behind one shoulder and short signal baton. | `back_high`, `hand_primary`, `effect_origin` | Dyed cloth + brass; gold trim <=15%. | `RALLY`, `PULSE` |
| `ART-PRO-B11` / `CONTENT.PROFESSION.BASE[11]` | Weighted cord loop around a low asymmetrical coat and hooked hand tool. | `hand_primary`, `waist_right`, `ground_front` | Dark steel + coarse cloth; violet knots <=14%. | `SWEEP`, `MOBILE` |
| `ART-PRO-B12` / `CONTENT.PROFESSION.BASE[12]` | Round forearm disc opposed by a long compact launcher silhouette. | `hand_secondary`, `hand_primary`, `projectile_origin` | Patinated bronze + lacquer; teal inlay <=18%. | `RELEASE`, `BRACE` |
#### 5.3 Advanced Profession Kits: 24
Each pair inherits the indexed base kit's face opening and garment masks, but
changes the outer contour, tool rhythm, and action endpoints.
| Art ID / binding | Parent | Silhouette thesis | Equipment anchors | Material and accent limit | Animation needs |
|---|---|---|---|---|---|
| `ART-PRO-A01` / `CONTENT.PROFESSION.ADVANCED[01]` | B01 | Tall slab guard, raised collar, planted triangular foot mass. | `hand_secondary`, both shoulders, `ground_front` | Dark iron + quilted cloth; teal seam <=16%. | `BRACE`, `HEAVY` |
| `ART-PRO-A02` / `CONTENT.PROFESSION.ADVANCED[02]` | B01 | Small angled guard and long forward blade, leaving torso open. | both hands, `back_low` | Polished steel + canvas; coral edge <=14%. | `INTERCEPT`, `THRUST` |
| `ART-PRO-A03` / `CONTENT.PROFESSION.ADVANCED[03]` | B02 | Hooked pole head and high forked pennon make two distant endpoints. | both hands, `back_low`, `projectile_origin` | Blue steel + ash; verdant cord <=12%. | `THRUST`, `SWEEP` |
| `ART-PRO-A04` / `CONTENT.PROFESSION.ADVANCED[04]` | B02 | Narrow lance cone, kite pennon, and backward-streaming waist panels. | both hands, `back_high` | Brushed steel + stiff silk; coral pennon <=18%. | `THRUST`, `MOBILE` |
| `ART-PRO-A05` / `CONTENT.PROFESSION.ADVANCED[05]` | B03 | Three short tool tips fan from an angular hip sheath. | both hands, both waist points | Blackened steel + soft leather; gold pins <=10%. | `DUAL`, `RELEASE` |
| `ART-PRO-A06` / `CONTENT.PROFESSION.ADVANCED[06]` | B03 | Long single saber diagonal and one broad trailing scarf plane. | `hand_primary`, `waist_right`, `back_low` | Tempered steel + thin cloth; violet scarf <=20%. | `SWEEP`, `MOBILE` |
| `ART-PRO-A07` / `CONTENT.PROFESSION.ADVANCED[07]` | B04 | Greatbow exceeds head height; split quiver forms a rear fork. | both hands, `back_high`, `projectile_origin` | Layered wood + horn; verdant fletching <=15%. | `RELEASE`, `HEAVY` |
| `ART-PRO-A08` / `CONTENT.PROFESSION.ADVANCED[08]` | B04 | Paired compact launchers and squared magazine blocks at both hips. | both hands, both waist points, `projectile_origin` | Dark wood + brass; coral notch <=12%. | `DUAL`, `RELEASE` |
| `ART-PRO-A09` / `CONTENT.PROFESSION.ADVANCED[09]` | B05 | Ring-topped staff with three flat tablets orbiting the shoulder contour. | `hand_primary`, `shoulder_right`, `effect_origin` | Inked wood + ceramic; violet marks <=18%. | `CHANNEL`, `PULSE` |
| `ART-PRO-A10` / `CONTENT.PROFESSION.ADVANCED[10]` | B05 | Short wand and oversized clasped volume create a low-wide reading pose. | both hands, `waist_left`, `effect_origin` | Paper + dark leather; gold clasp <=10%. | `CHANNEL`, `DEPLOY` |
| `ART-PRO-A11` / `CONTENT.PROFESSION.ADVANCED[11]` | B06 | Twin low lanterns join through a high sleeve arc. | both hands, both waist points, `effect_origin` | Frosted glass + linen; green light <=8% idle. | `PULSE`, `DUAL` |
| `ART-PRO-A12` / `CONTENT.PROFESSION.ADVANCED[12]` | B06 | Bell pole and circular hanging screen create concentric contours. | both hands, `back_high`, `effect_origin` | Brass + translucent paper; teal ring <=16%. | `RALLY`, `CHANNEL` |
| `ART-PRO-A13` / `CONTENT.PROFESSION.ADVANCED[13]` | B07 | Oversized maul and compact furnace pack form opposing heavy blocks. | both hands, `back_low`, `ground_front` | Forged iron + fired clay; coral heat <=8% idle. | `HEAVY`, `PULSE` |
| `ART-PRO-A14` / `CONTENT.PROFESSION.ADVANCED[14]` | B07 | Long wrench profile and square folding case near the ground. | `hand_primary`, `back_low`, `ground_front` | Steel + painted wood; gold latches <=12%. | `DEPLOY`, `BRACE` |
| `ART-PRO-A15` / `CONTENT.PROFESSION.ADVANCED[15]` | B08 | Layered arm guards widen the upper body; leg ribbons point action direction. | both hands, both feet | Lacquered leather + cloth; coral ties <=15%. | `DUAL`, `HEAVY` |
| `ART-PRO-A16` / `CONTENT.PROFESSION.ADVANCED[16]` | B08 | Long jointed staff held low beneath an open shoulder silhouette. | both hands, `back_low` | Ash wood + woven grip; teal bands <=12%. | `SWEEP`, `INTERCEPT` |
| `ART-PRO-A17` / `CONTENT.PROFESSION.ADVANCED[17]` | B09 | Circular vial wheel rises behind one shoulder with a short sprayer forward. | `back_high`, `hand_primary`, `projectile_origin` | Glass + brass; three liquid hues maximum. | `RELEASE`, `PULSE` |
| `ART-PRO-A18` / `CONTENT.PROFESSION.ADVANCED[18]` | B09 | Tall reservoir pack and thin injector cane form a vertical pair. | `back_low`, `hand_primary`, `effect_origin` | Smoked glass + waxed cloth; green fluid <=10%. | `CHANNEL`, `THRUST` |
| `ART-PRO-A19` / `CONTENT.PROFESSION.ADVANCED[19]` | B10 | Wide split standard and waist drum create high and low signal masses. | `back_high`, `waist_left`, both hands | Dyed cloth + hide; gold trim <=14%. | `RALLY`, `HEAVY` |
| `ART-PRO-A20` / `CONTENT.PROFESSION.ADVANCED[20]` | B10 | Fan of slender signal needles behind a cropped conducting baton. | `back_high`, `hand_primary`, `projectile_origin` | Spring steel + lacquer; violet tips <=12%. | `RALLY`, `RELEASE` |
| `ART-PRO-A21` / `CONTENT.PROFESSION.ADVANCED[21]` | B11 | Wide weighted chain crescent stays low around a narrow upright torso. | both hands, `ground_front`, `waist_right` | Dark steel + coarse cloth; coral binding <=10%. | `SWEEP`, `HEAVY` |
| `ART-PRO-A22` / `CONTENT.PROFESSION.ADVANCED[22]` | B11 | Broad hooked cleaver and short segmented tether create a broken diagonal. | `hand_primary`, `waist_right`, `back_low` | Black iron + leather; violet etch <=12%. | `INTERCEPT`, `SWEEP` |
| `ART-PRO-A23` / `CONTENT.PROFESSION.ADVANCED[23]` | B12 | Three round plates step from forearm to shoulder in a rising rhythm. | `hand_secondary`, `shoulder_left`, `back_high` | Patinated bronze + canvas; teal centers <=15%. | `BRACE`, `PULSE` |
| `ART-PRO-A24` / `CONTENT.PROFESSION.ADVANCED[24]` | B12 | Long-barrel tool and rectangular shoulder stock create one exact aim line. | both hands, `shoulder_right`, `projectile_origin` | Dark wood + steel; gold sight <=8%. | `RELEASE`, `HEAVY` |
#### 5.4 Hidden Hybrid Profession Kits: 6
Each row below resolves the content-owned hybrid ID and both prerequisites
directly. Art translates the authored combat rule and `P/O/A/V/S` handoff into
one new focal mass; it does not redefine the mechanic or stack two complete
parent costumes.
| Art ID / content identity | Exact parent pair | Combat-to-silhouette translation | Held / worn props and anchors | Material and accent limit | VFX / event cue | Animation needs / action verbs |
|---|---|---|---|---|---|---|
| `ART-PRO-H01` / `CONTENT.PROFESSION.HIDDEN[01]` / `PF-H01` Warmantle | `PF-B01` Hearthguard + `PF-B07` Kindhand | A mantle shield wraps the front shoulder, then opens toward the protected neighbor when an intercepted loss becomes Care Debt and a basic pays that debt as healing. | Mantle shield at `hand_secondary`/`shoulder_left`; tending hand-lamp at `hand_primary`/`effect_origin`; care satchel at `back_low`. | Dark iron + quilted cloth + frosted glass; teal/heart-red accent total <=16%. | A stitched-square debt mark closes on block, then resolves outward as one restrained heartbeat ring toward the healed neighbor. | `BRACE` (intercept/hold), `PULSE` (assess/tend/resolve) |
| `ART-PRO-H02` / `CONTENT.PROFESSION.HIDDEN[02]` / `PF-H02` Danceshear | `PF-B02` Edgehand + `PF-B11` Bellkeeper | Paired bell-hilt blades form alternating short diagonals; the feet hold a three-beat stance so Edge earned between neighbor actions reads as a deliberate wind-up cut rather than projectile play. | Bell-hilt blade in each hand; compact beat tabs at `waist_right`; shared blade/bell event origin at both hilts. | Brushed steel + aged brass + dark cloth; coral/gold accent total <=16%. | A split metronome cue marks the three cadence bands; only the selected enemy telegraph compresses or stretches when Edge is spent. | `DUAL` (alternate/strike/cutoff), `MOBILE` (beat-step/cut/recover) |
| `ART-PRO-H03` / `CONTENT.PROFESSION.HIDDEN[03]` / `PF-H03` Horizon Reaver | `PF-B03` Longspoke + `PF-B05` Farstring | A bow-spear assembly plants as a straight guide line, opens into a draw arc for the rearmost piercing shot, then returns to a two-hand basic thrust to recover the guide. | Bow-spear in both hands with `ground_front` plant socket, `projectile_origin` at the string line, and collapsed stow at `back_high`. | Pale layered wood + brushed steel + taut cord; white/verdant accent total <=14%. | One thin horizon line joins planted guide to the legal rear target; the line snaps off on the shot and returns along the haft during recovery. | `THRUST` (plant/recover), `RELEASE` (draw/pierce/reacquire) |
| `ART-PRO-H04` / `CONTENT.PROFESSION.HIDDEN[04]` / `PF-H04` Switchwright | `PF-B04` Wayrunner + `PF-B09` Coilsmith | A compact backpack automaton shifts from carried high mass to a ground unit as the wearer steps through indexed positions; its contour visibly changes guard, strike, then ally-pull mode. | Automaton at `back_high`/`back_low` while carried and `ground_front` when dropped; hooked control grip at `hand_primary`; mode switch at `effect_origin`. | Blackened steel + waxed canvas + brass; teal/coral/gold mode accents are mutually exclusive and <=12%. | Numbered footprint cues appear only for visited positions; the automaton shows square guard, pointed strike, or rearward hook geometry for its current mode. | `MOBILE` (carry/step/switch), `DEPLOY` (drop/activate/pack) |
| `ART-PRO-H05` / `CONTENT.PROFESSION.HIDDEN[05]` / `PF-H05` Eventide Scholar | `PF-B06` Riftcaller + `PF-B10` Gloamreader | A split light tablet collapses at an interrupted Charge, closes around the stored area-cast shadow, then opens toward the inscribed enemy when that target's hindrance expires. | Two tablet halves in both hands with closed stow at `waist_right`; shared cast and inscription source at `effect_origin`. | Smoked glass + black paper + lacquered wood; pale gold/violet accent total <=14%. | An eclipsed diamond records Shadow Text; its dark half stays on the target until expiry, when the diamond reverses and releases the stored area geometry. | `CHANNEL` (charge/collapse/inscribe), `RELEASE` (expiry/open/discharge) |
| `ART-PRO-H06` / `CONTENT.PROFESSION.HIDDEN[06]` / `PF-H06` Covenant Factor | `PF-B08` Bondwright + `PF-B12` Packwarden | A ledger-knot frame fans distinct loan tabs toward eligible recipients; each recipient action pulls its tab closed as repayment and lights one flexible Credit without implying a self-only refresh. | Ledger-knot frame at `hand_primary`/`effect_origin`; tabbed supply pack at `back_high`; closed-loan tags at `waist_left`. | Dark wood + brass + woven cord + paper; teal/gold accent total <=15%. | Shape-coded linked tabs distinguish Guard, Remedy, Parts, Verse, and Supply; repayment closes one link with a stamped pluck and Credit seal. | `PULSE` (loan/mark/link), `DEPLOY` (tab/close/credit) |
#### 5.5 Profession Review Gates
- All 42 emblems pass silhouette, one-color, 24-logical-pixel, and text-free
tests.
- All 42 outer silhouettes remain identifiable on all 8 body frames and
with hair and equipment attached.
- All 84 pose deviations declare anticipation, event tick, contact or target
endpoint, recovery, interrupted final state, and reduced-motion resolution.
- Tool reach and effect geometry must bind to the profession's authored
mechanics before production. A visually attractive mismatch is rejected.
- Advanced and hidden kits preserve the recruit's face, hair, garment cut,
detail mark, and palettes; progression does not replace personal identity.
### 6. Trait Presentation: 36
Each trait receives one compound emblem whose left mass represents benefit and
right notch represents cost. Color follows the affected mechanic, while notch
direction and border pattern provide the non-color read.
| Deliverable | Per trait | Total |
|---|---:|---:|
| Compound emblem master | 1 | 36 |
| Benefit state | 1 | 36 |
| Cost state | 1 | 36 |
| Battle trigger badge | 1 | 36 |
| Inspect and result crop | derived | 36 bindings |
The exact trait icon concept binds to `CONTENT.TRAIT[n].benefit`, `.cost`,
`.trigger`, and `.visibility`. Traits do not receive body, face, costume, or
full-screen effect variants. A trigger badge appears beside its causal actor
for one bounded event and remains available in the event inspection record.
### 7. Equipment And Artifact Presentation
#### 7.1 Equipment: 320
Every equipment row receives one object identity and one behavior-read key,
even when its effect resolves through comparison, timing, targeting, reach,
resource flow, status policy, or profession behavior rather than an attack.
| Required unit | Per equipment row | Exact total | Runtime form |
|---|---:|---:|---|
| Object design sheet | 1 | 320 | source-only turnaround, scale, material, and grip notes |
| Inventory object export | 1 | 320 | transparent 384 master with 192 and 96 derivatives |
| Compact silhouette | 1 | 320 | shop, comparison, and event-log use |
| Behavior-read key | 1 | 320 | one of compare, target, timing, reach, resource, status, profession, or trigger geometry |
| Equipped attachment | `W` | `W` | required when `CONTENT.EQUIPMENT[n].visual_anchor != none` |
| Stowed attachment | `S` | `S` | required when the content row exposes a stowed state |
`0 <= S <= W <= 320`. Integration must resolve `W` and `S` by querying all 320
content rows; neither may be estimated from item naming. The mandatory package
therefore contains 320 source sheets and 960 runtime manifestations, plus `W +
S` attachment manifestations.
Equipment state rules:
- neutral, selected, unavailable, equipped, compared, and protected states use
engine frames and shape masks around the same object export;
- long tools use normalized diagonal bounds so they do not appear weaker merely
because they occupy fewer pixels;
- material, construction, and edge profile identify an object before rarity;
- a behavior-read key appears at the earliest affected decision and at the
causal battle or result event;
- head, back, hand, shoulder, waist, and foot attachments use the standard
anchor map and declare hair, sleeve, and profession occlusion masks;
- an upgrade adds a bounded construction detail or state marker, never a full
hue replacement or larger persistent glow.
#### 7.2 Artifacts: 60
Artifacts are shared rule objects and never appear as worn equipment.
| Required unit | Per artifact | Exact total | Runtime form |
|---|---:|---:|---|
| Object and material design sheet | 1 | 60 | source-only identity and scale |
| Inspect object export | 1 | 60 | transparent 384 master |
| Compact rule emblem | 1 | 60 | shop, build summary, and event log |
| Trigger seal | 1 | 60 | awaken, modify, conflict, or expire endpoint |
The package contains 60 source sheets and 180 runtime manifestations. The
trigger seal binds to `CONTENT.ARTIFACT[n].rule`, `.trigger`, `.conflict`, and
`.duration`. Persistent artifact UI uses the compact emblem and engine-rendered
state; it never adds a permanent full-screen particle layer.
### 8. Enemy And Boss Production
#### 8.1 Ordinary And Elite Enemies: 100
Let `O` be the authoritative ordinary count and `E` the elite count, with
`O + E = 100`. Let `E_r` be enemy count in region `r`, with
`sum(E_r for r=01..08) = 100`. These variables must resolve from content IDs.
Every enemy identity receives:
| Deliverable | Per identity | Exact or formula total |
|---|---:|---:|
| Identity and mechanic sheet | 1 | 100 |
| Battle rig or curated atlas | 1 | 100 |
| Inspect portrait crop | 1 | 100 |
| Mechanic glyph | 1 | 100 |
| Forecast/resolution VFX binding | 1 bundle | 100 bundles |
| Core motion states | 8 | 800 states |
| Elite pressure and secondary-mechanic states | 2 when elite | `2 * E` states |
The eight core states are `enter`, `idle`, `reposition`, `basic_action`,
`signature_action`, `hit`, `interrupted`, and `defeat`. Elite additions are
`pressure_shift` and `secondary_action`. Variant palette, size, difficulty, or
region dressing does not create another identity.
Enemy visual acceptance:
- one dominant outer contour exposes the signature mechanic before action;
- the forecast uses explicit origin, affected order range, resolve direction,
and cancel state;
- enemy and recruit tools do not share the same silhouette when they create
different target rules;
- defeat poses preserve the body thesis and do not resemble an imminent attack;
- region materials may grow from or erode the body, but never cover the mechanic
endpoint or replace identity with a tint.
#### 8.2 Bosses: 16
Let `B_r` be boss count in region `r`, with
`sum(B_r for r=01..08) = 16`. Distribution and phase count come from content.
| Deliverable | Per boss | Exact total |
|---|---:|---:|
| Turnaround, scale, and mechanic sheet | 1 | 16 |
| Multi-part battle rig | 1 | 16 |
| Inspect plate | 1 | 16 |
| Boss emblem | 1 | 16 |
| Forecast geometry bundles | 3 | 48 |
| Minimum named motion states | 14 | 224 |
The 14 minimum states are `intro`, `idle`, `reposition`, `basic_action`, three
`signature_action` states, `hit`, `interrupted`, `pressure_shift`,
`phase_transition`, `recovery`, `defeat`, and `result_hold`. Extra phases add
only content-bound actions and transitions; they do not duplicate the whole
package by recolor.
Boss staging rules:
- a boss has one stable ground and targeting origin even when secondary parts
extend above or behind it;
- body area may occupy at most 38 percent of the reference playfield width and
58 percent of its height before a special camera review is required;
- no decorative limb, cloth, weather, or effect may cover a forecast endpoint,
the party's front three head contours, or priority controls;
- phase change alters at least one outer mass, material state, and motion
cadence. A hue swap alone fails;
- all three forecast bundles include preview, imminent, resolve, cancel, and
reduced-motion final states.
### 9. Region Art Families: 8
#### 9.1 Exact Package Count
Each region receives the same countable shell while its content and composition
remain distinct.
| Deliverable per region | Per region | Total for 8 |
|---|---:|---:|
| Shape, palette, light, and material key | 1 | 8 source keys |
| Layered shop/arrival context | 1 | 8 masters |
| Layered route context | 1 | 8 masters |
| Common battle foundation | 1 | 8 masters |
| Elite battle foundation | 1 | 8 masters |
| Boss battle foundation | 1 | 8 masters |
| Prop families | 18 | 144 families |
| Atmosphere/light overlays | 4 | 32 overlays |
| Region emblem | 1 | 8 emblems |
| **Runtime region-bound visual families** | **28** | **224** |
Each master environment separates:
```text
opaque sky, far terrain, far structures, midground structures,
playfield foundation, state-bearing props, atmosphere/light,
foreground occluders
```
No master bakes actors, text, rewards, target marks, hazards, or UI. Foreground
occluders declare `keep`, `lower`, `fade`, or `remove` behavior for actor and
forecast overlap.
#### 9.2 Eight Region Keys
Each art key binds the same ordinal content region exactly once. The region
name, biome and landmark, palette/material direction, and hazard readability
brief remain traceable to the content authority while art owns their production
translation.
| Art ID | Exact content binding | Region name, biome, and landmark brief | Palette, light, and material brief | Hazard/mechanic readability brief | Motion and occlusion rule |
|---|---|---|---|---|---|
| `ART-REG-01` | `RG-01` | **Windglass Verge**: open grass terraces and suspended mineral panes become layered wind-cut shelves; the safe trade crossing keeps clear actor sightlines. | Bright terrace values and wind-direction shapes use pale stone, weathered timber, woven cloth, green sky bounce, coral sun edges, and blue distance. | Glass-wind push telegraphs use visible wind-direction shapes one cadence ahead; projectile screens and front-to-rear reach remain distinct without color. | Cloth and grass move in three timed groups; reduced mode holds one bent final pose. |
| `ART-REG-02` | `RG-02` | **Siltwake Fens**: reed channels carrying luminous sediment between movable banks form layered reeds and a readable ferry-path waterline. | Wet clay, oxidized copper, reed green, mineral teal sediment, and warm bank light separate water depth from safe footing. | Non-color tide notches show the disclosed safe-index shift; pull, hindrance-expiry, and healing-denial states keep separate shapes. | Mist stays below knees; tall reeds lower before an actor enters their bounds. |
| `ART-REG-03` | `RG-03` | **Emberloom Works**: communal kilns and old ceramic conduits stack into kiln terraces, heavy arches, square vents, and one visible pressure-valve position. | Fired brick, black iron, pale ash, coral heat, charcoal mass, and cool blue smoke separate hot-metal constructs from the playfield. | Pressure gauges read without color and expose the valve countdown, delayed bursts, construct state, item-cooldown attacks, and self-cost heat. | Heat shimmer stays local and is disabled in reduced motion; ash avoids face silhouettes. |
| `ART-REG-04` | `RG-04` | **Quillroot Archive**: living root shelves and changing leaf-script patterns form public navigation stacks with open inspection windows. | Dark bark, paper-pale root cuts, broad leaf greens, glazed seed-pod accents, and warm archive light distinguish copy sources. | Repeat, alternate, and preserve clauses use separate leaf-script shapes; copy, erase, redirect, and cleanse-trap states never rely on hue alone. | Leaf-script changes pause for inspection; foreground roots fade before covering rule text or forecast endpoints. |
| `ART-REG-05` | `RG-05` | **Tideglass Reach**: high-contrast salt flats and mirror pools frame rescue beacons while source and repeated silhouettes occupy separate basins. | Chalk crystal, dark mineral, tarnished metal, paper-white salt, teal reflection, and a coral horizon preserve source/echo contrast. | Source and echo use different silhouette treatment and reflection timing for decoys, delayed copies, rearmost intrusion, and empty rear arrivals. | Reflections hold static in low power; glare never sits behind bars, target lines, or source markers. |
| `ART-REG-06` | `RG-06` | **Skyrail Orchard**: fruit terraces hang from slow freight rails across strong updrafts, with orchard/rail parallax preserving cargo footprints and the contested center. | Leaf green, fruit coral and gold, weathered rail steel, pale timber, and airy blue light keep cars, crops, and open sky distinct. | Stop glyphs announce two future stops; board, leap, fall, airborne-untargetable, and cargo-preserved states retain distinct shapes. | Rail cars move only between shown stops; reduced mode indexes stop poses and holds the distant orchard layers. |
| `ART-REG-07` | `RG-07` | **Nightcurrent Basin**: dark water channels and a luminous current carve readable night crossings through layered basin shelves. | Dark-but-readable water, blue-black stone, pale current light, and restrained warm route accents preserve luminance-safe reveal contrast. | Current-link VFX and sonar-like captions show the front-to-rear reveal sweep, forecast category, resource theft, linked circuits, and retaliation. | Current light advances in indexed bands; low power holds water and preserves one moving reveal edge. |
| `ART-REG-08` | `RG-08` | **Crown of Morn**: a ring of dawnlit stone at the high route nexus carries eight readable current motifs through open consecutive-fight staging. | Dawn stone, pale brass, luminous glass, paper-white light, and restrained colors from the eight prior motifs support a layered reprise. | Motif-specific captions and synthesis action shapes identify each inherited push/pull, expiry, construct, copy, echo, rail, or reveal rule source; consecutive fights preserve role redundancy, replacement depth, and the recovery-versus-counter choice. | Ring movement pauses during forecasts; reduced mode swaps rotation for indexed final states. |
No content merge may reorder the ordinal bindings, reuse one content region for
two art keys, omit a region target, or resolve a biome, landmark, palette, or
hazard conflict through recolor alone.
#### 9.3 Prop Family Contract
The 18 prop families per region are exactly:
- 8 compact context props;
- 4 wide or tall structural props;
- 2 state-bearing shop or route objects, each with inactive and active states;
- 2 battle-interaction props, each with neutral, forecast, resolve, and spent
states;
- 1 reward presentation plinth;
- 1 boss mechanism set with content-bound states.
Placements and color variants do not increase the family count. Every prop
declares playfield bounds, overlap policy, state events, light contribution,
and reduced-motion and low-power behavior.
### 10. UI Support Art Inventory
Screen layout, text, controls, and navigation remain owned by the UX authority.
This section supplies text-free visual material to `UX.SCREEN.*` bindings.
| Family | Exact count | Notes |
|---|---:|---|
| Core material swatches | 6 | Inked paper, dark enamel, woven cloth, pale ceramic, brushed metal, clear glass. |
| Nine-slice frame masters | 14 | Dock, drawer, tray, list row, compare, inspect, tooltip, modal, toast, result, warning, settings, tab, and selection. |
| Universal tool icons | 40 | Navigation, sort/filter, compare, reorder, equip, inspect, pause, speed, retreat, settings, accessibility, and save families. |
| Universal state icons | 32 | Cost, availability, capacity, lock, warning, target, timing, casualty, recovery, reward, and persistence families. |
| Party-order and target markers | 18 | Front/rear caps, slot, insertion, swap, exposure, protection, reach, selected, acting, and area shapes. |
| Status icon containers | 12 | Shape-coded containers; content status glyphs bind after schema merge. |
| Empty/error support illustrations | 8 | Empty shop, no recruit, no equipment, full party, incompatible, unavailable, interrupted, and recovery-needed states. |
| Cursor/focus forms | 12 | Touch, mouse, controller, keyboard, and high-contrast variants. |
| Region emblems | 8 | Counted in Section 9, not duplicated. |
| Profession emblems | 42 | Counted in Section 5, not duplicated. |
| Trait emblems | 36 | Counted in Section 6, not duplicated. |
| Equipment silhouettes | 320 | Counted in Section 7, not duplicated. |
| Artifact emblems | 60 | Counted in Section 7, not duplicated. |
| Enemy mechanic glyphs | 100 | Counted in Section 8, not duplicated. |
| Boss emblems | 16 | Counted in Section 8, not duplicated. |
The UI-only subtotal is 142 masters before content-bound status glyphs: `6 +
14 + 40 + 32 + 18 + 12 + 8 + 12 = 142`. All icons pass one-color, shape-only,
light-background, dark-background, and 130-percent-text-neighbor tests. Text,
numbers, bars, timers, ordering numbers, and comparison deltas remain
engine-rendered and localizable.
Each of the 142 UI masters retains its source record, validated export, import
binding, `UX.SCREEN.*` state binding, and high-contrast evidence. Icon and
cursor masters export at 24, 32, and 48 logical pixels; these scale derivatives
are not new visual identities.
### 11. Animation Architecture
#### 11.1 Common Recruit Motion Slots
Each of 8 body frames supplies these 16 motion slots. Profession kits
replace hand, tool, outer garment, and timing keys where Section 5 requires.
| Slot | Timing contract | Event and final state | Reduced-motion form |
|---|---|---|---|
| `idle_observe` | 2.8-4.5 s loop | Quiet breathing; stable feet and tool. | Still final pose with occasional eye change. |
| `ready` | 0.25-0.45 s | Center lowers when battle becomes authoritative. | Two-pose settle. |
| `enter` | 0.5-0.9 s | Arrives at assigned order point. | Short crossfade into ready pose. |
| `reorder_step` | 0.25-0.55 s per adjacent move | Feet cross one order marker and settle. | Direct pose swap with moving order token. |
| `advance` | 0.35-0.7 s | Moves to action rail without changing stored order. | Start and end poses only. |
| `retreat` | 0.35-0.7 s | Returns to stored order point. | End-pose snap after resolved event. |
| `basic_close` | 0.55-0.95 s | Contact event at declared tool endpoint. | Anticipation and impact poses. |
| `basic_distance` | 0.65-1.0 s | Release event at `projectile_origin`. | Aim and release poses. |
| `channel` | 0.8-1.4 s plus ticks | Stable `effect_origin`; explicit interrupt recovery. | Start, tick marker, final pose. |
| `support` | 0.6-1.1 s | Ally endpoint receives effect before actor recovers. | Gather and resolved poses. |
| `guard` | 0.4-0.8 s | Protected relation visible through contact. | Closed guard final pose. |
| `hit_light` | 0.2-0.4 s | Directional recoil; ground remains stable. | One offset pose plus contour. |
| `hit_heavy` | 0.35-0.7 s | Lowered center and longer recovery. | Impact and recovery poses. |
| `forced_move` | 0.35-0.75 s | Displacement and new legal position both visible. | Ghosted origin and final marker. |
| `casualty_hold` | transition plus hold | Tool lowers and state remains inspectable. | Still final pose. |
| `victory_settle` | 1.2-2.4 s once | Restrained relief, then stable result pose. | Stable result pose only. |
Motion timing scales from `SYSTEM.COMBAT.EVENT_SCHEMA`. Presentation may
compress recovery and secondary in-betweens at higher battle speed, but never
removes forecast onset, authoritative event frame, target response, or resolved
final state.
#### 11.2 Event Binding Record
Every animated action records:
```text
source_actor, action_id, trigger_event, anticipation_start, commit_event,
target_snapshot, contact_or_release_event, repeated_tick_events, recovery_end,
interrupt_event, origin_anchor, endpoint_geometry, ground_pivot,
occlusion_policy, speed_variant, reduced_motion_final, low_power_variant
```
Animation is rejected if a visible contact occurs before the authoritative
event, if a target reacts without a committed result, or if interruption leaves
an effect or tool in the resolved final state.
#### 11.3 Source-To-Runtime Animation States
| Actor family | Source package | Required runtime motion count |
|---|---|---:|
| Recruit bodies | 8 body masters with separated parts | 128 common body states |
| Profession deviations | 42 kit masters | 84 auto-action deviations |
| Ordinary/elite enemies | 100 identity masters | `800 + 2 * E` states |
| Bosses | 16 multi-part masters | 224 minimum states |
| State-bearing regional props | 40 prop families | 144 states: 16 shop/route props * 2 plus 16 battle props * 4 plus 8 boss mechanism sets * 6 |
The regional-prop total assumes one boss mechanism set per region with six
states and is independent of boss actor motion. Frame counts are chosen after
play-size key-pose review; extra in-betweens are not extra states.
### 12. Horizontal Party-Line Staging
#### 12.1 Spatial Grammar
- Screen-left is the protected rear and `Last` endpoint; screen-right is
`First exposed` and the party front. Rendering therefore reads left-to-right
from rear to exposed front while logical exposure order starts at the
rightmost marker and proceeds leftward. Enemy staging faces right-to-left
toward that exposed front; any enemy ordering rule must come from
`SYSTEM.COMBAT.EVENT_SCHEMA` rather than this catalog.
- The two fronts face across a central action gap. The player's front marker,
rear cap, insertion points, and order numbers stay visible during preparation
and inspection.
- All deployed recruits remain on one continuous ground rail. A presentation
offset of at most 8 logical pixels separates overlapping feet; it does not
create another tactical row.
- Slot centers derive from `SYSTEM.PARTY.CAPACITY_PROFILE` and the current
viewport. The minimum gap is the largest value that keeps both fronts, the
active target, and controls inside safe bounds.
- When the deployed party grows, spacing compresses before actor scale. Actor
scale may change only within the approved silhouette range and applies to the
whole party, never to one supposedly less important recruit.
#### 12.2 Depth And Occlusion
Draw order follows ground contact from rear to front, then applies explicit
tool and effect layers. The following invariants hold in the busiest approved
composition:
| Invariant | Limit |
|---|---:|
| Recruit torso hidden by allies | <=35% |
| Recruit head contour hidden by allies | <=15% |
| Profession tool endpoint hidden | 0% during forecast and action |
| Target contour hidden by effects | <=10% of perimeter |
| Party-order marker hidden | 0% |
| Foreground environment over acting actor | 0% |
| Simultaneous high-salience allied actions | 2 maximum |
| Simultaneous high-salience enemy actions | 2 maximum |
If the simulation commits more actions at once, the presentation groups
secondary results into low-salience impacts while preserving each causal event
in inspection. It does not reorder simulation outcomes.
#### 12.3 Action Rail
An acting recruit may step from its order point to a temporary action rail in
the central gap. The stored order marker remains behind, connected by a thin
paper-white tether. After resolution the recruit returns to the same marker
unless `SYSTEM.COMBAT.EVENT_SCHEMA` commits displacement or loss. Distance
actors may act in place; support endpoints remain inside the party line.
This device prevents action overlap while preserving the strategic order. It
must pass at the largest simulated deployment target and with the widest boss
silhouette.
#### 12.4 Target, Damage, Healing, And Protection Read
| Event | Forecast shape | Resolution shape | Non-color proof |
|---|---|---|---|
| Single target | Pointed bracket around one ground contact | Inward contact wedge | One endpoint and one direction notch |
| Ordered range | Bracket spans consecutive order markers | Sequential contact ticks | Visible start and stop caps |
| Whole party | Open baseline beneath every party marker | One low outward wave | Repeated group notches |
| Damage | Toothed inward contour | Directional ink break and actor response | Jagged edge and hit direction |
| Healing | Open leaf contour | Upward fill and stable recovery pose | Split leaf endpoint |
| Protection | Closed double bracket | Intercept line, absorb plane, or break seam | Closed contour and relation line |
| Deterministic terminal outcome | No terminal cue before resolution; retain the action forecast | Per-recipient shape from the outcome map below | Outcome-specific contour and causal label, never a generic gap |
| Forced movement | Origin ghost plus destination bracket | Actor lands on destination marker | Arrow body with blocked variant |
| Knockout | Segmented condition frame | Still final contour and lowered tool before current-battle exit | Broken lower edge plus return marker, never a memorial or reward burst |
Terminal cues bind one-to-one to `SYSTEM.COMBAT.EVENT_SCHEMA` records. They do
not add an undeclared resolution check and do not reinterpret forecast
divergence as an action result.
| Outcome ID | Resolution shape | Required causal read |
|---|---|---|
| `AO_APPLIED` | Behavior-specific contact closes at the actual recipient with a filled endpoint. | Applied component and actual recipient; a moved-but-legal target keeps the same endpoint. |
| `AO_NO_CHANGE` | The contact reaches an intact contour and ends in a flat cap/current-state bar. | Legal recipient plus the cap or current-state reason for zero primary change. |
| `AO_INVALID_REACH` | A measured reach line breaks between origin and intended target. | Old/current depth and required reach remain inspectable. |
| `AO_INVALID_UNTARGETABLE` | An outward-facing exclusion notch opens in the intended target contour. | Declared exclusion rule and remaining duration, not actor motion alone. |
| `AO_INVALID_FALLEN` | The intended marker is left empty and linked to the earlier knockout seal. | Earlier knockout event caused invalidation; no substitute target is implied. The legacy code ID does not mean permanent loss. |
| `AO_INVALID_FILTER` | A candidate-filter frame closes outside the intended target. | Exact side, state, or tag filter that no longer permits the target. |
| `AO_INTERCEPTED` | The intended path branches to the interceptor; the intended endpoint stays hollow. | Interceptor and routing/protection rule; the actual recipient receives its own component cue. |
| `AO_BLOCKED` | A square stop plane meets the component and loses one charge notch when applicable. | Named blocker actor/rule and committed charge or delta. |
| `AO_IMMUNE` | A closed seal forms around the rejected component glyph at the actual recipient. | Immunity tag and source; no resistance roll is implied. |
| `AO_RESISTED` | The status glyph reaches the target boundary and stops against a crosshatched threshold line. | Stored status roll, threshold, Potency, and Tenacity. |
| `AO_FIZZLED` | Source geometry folds inward before any recipient endpoint forms. | Invalid cause, failed retarget or empty ground result, and declared refund. |
| `AO_INTERRUPTED` | A crossbar cuts the source wind-up/channel and holds the interrupted actor pose. | Interrupter/rule and declared refund; no target defense is implied. |
Area and multi-component actions draw the terminal shape at each actual
recipient. `APPLIED_ALL`, `APPLIED_PARTIAL`, and `APPLIED_NONE` may appear only
after the per-recipient cues and never replace them or act as trigger IDs. For a
mixed area result, applied, immune, and no-change recipients therefore retain
three distinct endpoint shapes in the same resolved frame. When more than two
results resolve together, secondary endpoints become compact ground-contact
badges rather than disappearing; inspection preserves every causal label.
At 130 percent text, causal labels occupy the UX-defined text-safe band and do
not cover faces, order markers, or endpoint shapes. Reduced-motion mode uses
the resolved shape and final actor pose without path travel. Low-power mode
keeps every endpoint badge and derived summary while removing only secondary
particles and trails.
Floating values are engine-rendered and secondary. They occupy a dedicated
vertical band above the target, merge repeated low-value ticks, and never cover
faces, order markers, or forecast endpoints.
#### 12.5 Battle-Speed Presentation
Every speed mode preserves four visual facts: forecast onset, committed action,
affected target, and resolved state. Higher speed may remove idle holds,
secondary arcs, trailing particles, and recovery in-betweens. It may not make a
telegraph appear after impact or collapse distinct opposing causes into one
unlabeled burst. Pause freezes actors and VFX at an inspectable frame while UI
motion settles to its final state.
### 13. VFX Language And Count
#### 13.1 Global Semantic Masters
| VFX family | Authored states | Count | Shape rule |
|---|---|---:|---|
| `TARGET` | acquire, hold, release, invalid | 4 | Pointed brackets and explicit endpoint. |
| `THREAT` | forecast, imminent, resolve, cancel | 4 | Saw-edge clocking toward impact. |
| `DAMAGE` | light, heavy, critical, repeated | 4 | Directional ink fracture, never a radial reward burst. |
| `HEAL` | acquire, pulse, excess, blocked | 4 | Open leaf and upward fill. |
| `PROTECT` | gain, intercept, absorb, break | 4 | Closed double bracket and seam. |
| `DEFENSE_OUTCOME` | `AO_INTERCEPTED`, `AO_BLOCKED`, `AO_IMMUNE`, `AO_RESISTED` | 4 | Branched route, square stop, closed seal, or crosshatched status threshold. |
| `INTERRUPT` | windup, interrupt, stagger, recover | 4 | Crossing bars and halted motion line. |
| `MOVE` | step, forced, pull, blocked | 4 | Origin ghost, destination, and direction body. |
| `STATUS` | apply, stack, tick, expire, cleanse, resist | 6 | Container shape plus content-bound glyph. |
| `RESOURCE` | gain, spend, full, insufficient | 4 | Measured segment movement, not free particles. |
| `TIMING` | ready, cooling, accelerated, delayed | 4 | Radial tick with asymmetrical speed marks. |
| `TRAIT` | benefit, cost, trigger, blocked | 4 | Compound emblem retains polarity notch. |
| `EQUIPMENT` | equip, trigger, charge, exhaust | 4 | Object silhouette remains at the origin. |
| `ARTIFACT` | awaken, modify, conflict, expire | 4 | Rule seal opens, intersects, or closes. |
| `KNOCKOUT` | danger, hold, current-battle exit, next-stage return | 4 | Segmented lower contour and return marker, no celebratory or memorial shape. |
| `REWARD` | reveal, select, claim, duplicate-blocked | 4 | Quiet radial seal with object centered. |
| `SAVE` | saving, saved, recovered, conflict | 4 | Compact UI-only folded-paper mark. |
| **Total** | | **70 semantic state masters** | |
Each master includes normal, reduced-flash, reduced-motion, and low-power
instructions. These are state definitions; compatible families may share
brushes, particles, masks, and line shaders without sharing semantic shapes.
#### 13.2 Identity-Bound Effect Briefs
| Binding family | Exact bundles | States required per bundle | Exact binding-state count |
|---|---:|---:|---:|
| Profession signature geometry | 42 | anticipation, active, resolve, reduced final | 168 |
| Trait trigger | 36 | benefit and cost | 72 |
| Enemy signature mechanic | 100 | forecast, resolve, cancel | 300 |
| Boss forecast geometry | 48 | forecast, imminent, resolve, cancel, reduced final | 240 |
| Equipment behavior-read key | 320 | earliest-decision and causal-result | 640 |
| Artifact trigger seal | 60 | dormant, trigger, modified, conflict | 240 |
| **Total** | **606 bundles** | | **1,660 binding states** |
Binding states may point to a global semantic master plus authored geometry.
They are still separate manifest rows because they prove that every content
identity has a readable cause and endpoint.
#### 13.3 Density, Flash, And Layer Rules
- Only the current forecast, current impact, and one persistent state effect may
occupy the highest salience tier at once.
- Secondary impacts use shorter contours and no camera motion. Ambient region
particles immediately yield behind a forecast.
- No full-screen white flash, alternating full-screen value pulse, rapid color
inversion, or effect that hides faces and order markers is permitted.
- Standard mode uses at most one strong luminance rise per committed action.
Reduced-flash mode replaces it with contour thickness and a held endpoint.
- Trails end at the authoritative endpoint and clear before another actor uses
the same space. Persistent effects move to compact ground or status markers.
- Blend mode, edge color, alpha falloff, pivot, event time, lifetime, pool cap,
and interruption cleanup are specified in every effect manifest.
### 14. Accessibility, Reduced Motion, And Low Power
#### 14.1 Required Variant Matrix
| Feature | Standard | Reduced motion | Reduced flash | Low power |
|---|---|---|---|---|
| Recruit idle | Full restrained loop | Held pose plus rare eye change | Same as selected motion mode | Held pose |
| Reorder | Physical adjacent step | Direct pose swap plus moving order token | No change | Two-pose step |
| Auto-action | Full anticipation/action/recovery | Anticipation and resolved poses | Contour impact, no luminance spike | Fewer in-betweens and no secondary trail |
| Forced movement | Actor travel plus origin ghost | Origin ghost and destination pose | No flash on landing | Linear travel only |
| Boss phase | Body mass shift, material state, bounded effect | Indexed before/after poses | Held outline change | No ambient debris or camera motion |
| Region atmosphere | Layered loops | Static directional final states | No lightning-like pulses | One near layer at reduced density |
| UI transition | Short position/fade motion | Immediate state swap or short dissolve | No bright wipe | Immediate state swap |
| Reward | Object reveal and quiet radial seal | Object present plus seal final state | Shape expansion only | Object and static seal |
Reduced motion, reduced flash, and low power are independent toggles. Any
combination must produce a valid final state. Muting audio never removes visual
timing or cause. High contrast preserves region identity while adding
paper-white and charcoal separation contours around actors, targets, and
controls.
#### 14.2 Color And Text Independence
- Every semantic color has a unique contour, endpoint, or fill direction.
- Pattern density remains visible under common color-vision simulations and in
grayscale.
- Icons do not bake text, letters, numbers, or direction words.
- At 130 percent text, art yields within the UX-defined text-safe region rather
than shrinking labels or covering portraits.
- Focus and selection use both a contour and a stable marker; hover is never
required to understand state.
#### 14.3 Low-Power Budget
Low power removes background parallax, secondary cloth and hair loops,
nonessential trails, ambient spawn bursts, and more than one atmosphere layer.
It keeps all forecasts, action events, target responses, casualty states,
reward claims, order changes, and save states. Particle population targets 30
percent of standard; actor and effect key poses remain unchanged.
### 15. Source-To-Runtime Production Plan
#### 15.1 Family Tracking Requirements
| Family | Brief/source ledger rows | Required export or runtime bindings |
|---|---:|---|
| Recruit modules | 114 masters | 374 authored state cells plus the exhaustive recruit-record crosswalk in Section 4.2 |
| Profession kits | 42 packages | 42 silhouettes, 42 tool sets, 126 device states, 84 action deviations, and 42 effect briefs |
| Trait presentation | 36 packages | 36 emblems, 72 polarity states, and 36 trigger badges |
| Equipment | 320 packages | 960 mandatory manifestations plus `W + S` content-resolved attachments |
| Artifacts | 60 packages | 180 runtime manifestations |
| Regions | 8 art keys | 224 region-bound visual families |
| Ordinary/elite enemies | 100 packages | 100 rigs, portraits, glyphs, and effect bundles plus `800 + 2 * E` motion states |
| Bosses | 16 packages | 16 rigs, plates, and emblems plus 224 motion states and 48 forecast bundles |
| UI-only art | 142 masters | 142 screen-state families plus declared scale derivatives |
| Global VFX | 70 semantic state masters | 1,660 identity-bound states across 606 manifest bundles |
Every row advances independently through the lifecycle in Section 1.4. A
family total cannot mark missing identity rows as complete, and a scale,
palette, difficulty, frame, or accessibility variant cannot fill an identity
binding.
#### 15.2 Representative Visual Slice
Bulk production remains frozen until one content-bound slice proves the system:
```text
BINDING.SLICE.REGION
BINDING.SLICE.BASE_PROFESSION
BINDING.SLICE.ADVANCED_PROFESSION
BINDING.SLICE.TRAIT
BINDING.SLICE.EQUIPMENT
BINDING.SLICE.ORDINARY_ENEMY
BINDING.SLICE.ELITE_ENEMY
BINDING.SLICE.BOSS
BINDING.SLICE.ARTIFACT
```
The slice uses generated recipes for at least four recruits across at least
three body frames, four hair shapes, the two profession kits, distinct
equipment manifestations, and one visible trait trigger. It shows preparation,
reorder, battle opening, forecast, automatic action, pressure, casualty or
recovery, reward, and persistent result at the UX-defined minimum, reference,
and maximum landscape viewports.
The fixed focal order is:
1. current acting or threatened actor and target relation;
2. party front-to-rear order and protection exposure;
3. the profession, equipment, trait, enemy, boss, or artifact cause.
A normal-render interaction recording is required before any runtime gate can
pass. Static concepts and isolated sprite sheets cannot prove staging, motion,
occlusion, timing, or accessibility.
#### 15.3 Batch Order
1. Resolve all content, system, and UX bindings and reject mismatched visual
kits before media requests.
2. Graybox the representative region, longest approved party, widest boss, UI
safe areas, action rail, and all feedback geometry.
3. Approve one body frame, two contrasting face shapes, two hair shapes, one
base kit, one advanced kit, and their full anchor masks.
4. Produce only the representative enemy, boss, equipment, trait, artifact,
region, UI, animation, and VFX sources needed by the slice.
5. Import, integrate, capture, and review normal, busy, pressure, result,
high-contrast, 130-percent-text, reduced-motion, reduced-flash, and low-power
states.
6. Repair the earliest failed boundary before expanding a library.
7. Scale by compatible body, profession, region, enemy, item, and effect
batches only after source-to-runtime traceability and play-size readability
pass.
8. Produce platform and store visuals only from accepted runtime states under a
later owner-approved Goal.
#### 15.4 Human Review Boundaries
Design review can approve countability and coherence. It cannot approve final
drawing quality, animation feel, runtime focal hierarchy, device performance,
localization fit, photosensitivity comfort, or release presentation. Those
gates remain open until named evidence exists at the corresponding lifecycle
state.
### 16. Quantitative Coverage Audit
| Frozen family | Gameplay count | Production coverage in this catalog |
|---|---:|---|
| Generated recruit system | unbounded recipes | 114 modular masters, 374 authored state cells, exhaustive content-to-art crosswalk, deterministic recipe and validation rules |
| Base professions | 12 | 12 row-specific kits |
| Advanced professions | 24 | 24 row-specific kits, exactly two per base |
| Hidden hybrid professions | 6 | 6 row-specific kits with exact content-owned parent pairs and production bindings |
| **All professions** | **42** | **42 packages, 42 emblems, 42 silhouettes, 42 tool sets, 126 device states, 84 action deviations, 42 effect briefs** |
| Traits | 36 | 36 compound emblems, 72 polarity states, 36 trigger badges |
| Equipment | 320 | 320 source sheets, 320 objects, 320 compact silhouettes, 320 behavior-read keys, plus content-bound attachments |
| Artifacts | 60 | 60 source sheets, 60 objects, 60 compact emblems, 60 trigger seals |
| Ordinary/elite enemies | 100 | 100 packages, 800 core motion states plus `2 * E`, 100 mechanic effect bundles |
| Bosses | 16 | 16 packages, 224 minimum motion states, 48 forecast bundles |
| **All hostile identities** | **116** | **116 identity packages with region and mechanic bindings** |
| Regions | 8 | 8 keys, 40 layered environments, 144 prop families, 32 atmosphere overlays, 8 emblems |
| UI-only art | n/a | 142 masters plus explicitly bound content icons |
| Global VFX | n/a | 70 semantic state masters |
| Identity-bound VFX | 606 bundles | 1,660 binding states |
Counts prove planned coverage only. They do not prove content distinctness,
asset quality, integration, runtime readability, performance, or fun.
### 17. Design Acceptance And Open Gates
#### 17.1 Candidate Checklist
- [x] Modular body, face, hair, garment, detail, profession, palette, and
equipment composition is content-bound and production-countable.
- [x] All 42 profession bindings have distinct silhouettes, equipment anchors,
material limits, and animation needs.
- [x] All 36 traits, 320 equipment items, and 60 artifacts have exact visual
packages and causal presentation bindings.
- [x] Eight region families, 100 ordinary/elite enemies, and 16 bosses have
exact packages, source states, motion coverage, and integration formulas.
- [x] The single horizontal party-line composition defines staging, action
space, overlap limits, target/damage/heal/protection feedback, and busy
state salience.
- [x] Reduced motion, reduced flash, high contrast, large-text adjacency, mute,
and low-power behavior are specified.
- [x] The catalog creates specifications only and contains no final media or
third-party commercial assets.
#### 17.2 Gates That Remain Open
- [ ] Content, system, and UX bindings are resolved after workstream merge.
- [ ] Representative graybox proves the longest approved party and widest boss
at all target landscape viewports.
- [ ] Representative source art passes identity, anatomy, line, palette,
material, anchor, and occlusion review.
- [ ] Animation and VFX pass normal-render timing, causal-event, interruption,
speed, reduced-mode, and fatigue review.
- [ ] Named human and target-device reviews accept the integrated presentation.
- [ ] Owner separately authorizes bulk media production and release work.
Failure at any open gate returns to the earliest affected source, composition,
motion, effect, or integration boundary. No downstream evidence state may be
claimed early.
<!-- Historical section source: AUDIO_MUSIC_AND_VOICE_CATALOG; retained in Git history. -->
## Aetherbound Guild: Audio, Music, And Voice Catalog
> Revision: `audio-direction-v2-r4`
>
> Authority: music, ambience, SFX, voice, mix, caption, accessibility, audio
> lifecycle, production count, and audio acceptance rules.
>
> Product basis: `01_GAME_DESIGN.md` and
> `04_ART_ANIMATION_AUDIO.md`.
>
> Status: design specification only. No audio is generated, recorded, licensed,
> purchased, integrated, human-listened, device-verified, or release-accepted.
### 1. Purpose And Boundaries
Audio makes the game's decisions and consequences understandable while leaving
room for a calm, hand-drawn fantasy presentation. The player must be able to
hear when an offer changes, a recruit joins, an item is committed, party order
changes a forecast, an automatic battle changes phase, a recruit is lost, a
reward becomes owned, or a save operation needs attention.
This catalog is independently authored for Aetherbound Guild. Production may
use only owned recordings, properly licensed sources, or commissioned work with
documented rights. It may not imitate or reuse the expressive audio of a
reference product.
This file does not define combat formulas, prices, content names, screen
layouts, visual effects, or final localization scope. It does not authorize
runtime implementation or media production. It defines the audio response to
authoritative events supplied by the owning design documents.
#### 1.1 Sonic Thesis
**A working guild heard through touch, breath, and ordered motion.**
The shared palette uses dry wood, cloth, ceramic, tempered metal, hand-driven
mechanisms, restrained air, and clear paired tones. Player commits sound
physical and settled. Forecasts are concise and separated by register.
Automatic action stays light enough that the player can hear a change in
target, protection, danger, or outcome without a constant wall of impacts.
Each region owns a distinct pulse, resonant material, ambience density, and
musical contour. Regional identities remain recognizable in mono and at low
volume. The score supports attention; it never carries a rule by itself.
#### 1.2 Information Rules
1. A sound confirms only an authoritative state change, never anticipated
success.
2. A consequence cue differs from a focus, preview, or review cue.
3. Higher rarity may add finish, but pitch height never means value by itself.
4. Danger is identified by contour, rhythm, caption, and visual state, not
loudness alone.
5. Routine automatic actions yield to forecasts, casualty, retreat, and result
cues.
6. Music and ambience may reinforce state but never become the sole state
channel.
7. Muting any bus cannot change simulation timing or remove text/event-log
evidence.
8. Generated recruits never require bespoke dialogue to remain mechanically
legible.
### 2. Resolved Integration Sources
Audio IDs in this file are stable audio authority. The table below binds every
cross-workstream dependency to its merged owner without redefining that owner's
rows or formulas. Compact ranges are references; their primary definitions
remain in the cited authority.
| Dependency | Resolved source and value | Audio use |
|---|---|---|
| Region IDs | `05_CONTENT_CATALOG.md`, Stable ID Namespaces: `RG-01..RG-08` | attach the eight regional audio packages in stable-ID order |
| Region display names | `05_CONTENT_CATALOG.md`, Region Matrix: Windglass Verge, Siltwake Fens, Emberloom Works, Quillroot Archive, Tideglass Reach, Skyrail Orchard, Nightcurrent Basin, Crown of Morn | localized music, caption, and metadata labels use the Region Matrix name field |
| Region environments | `05_CONTENT_CATALOG.md`, Region Matrix: minimal framing, encounter grammar, and production-needs fields | select ambience sources and hazard contours from the owned region brief |
| Profession IDs | `05_CONTENT_CATALOG.md`, Stable ID Namespaces: `PF-B01..PF-B12`, `PF-A01..PF-A24`, `PF-H01..PF-H06` | instantiate 42 profession signature pairs |
| Trait IDs | `05_CONTENT_CATALOG.md`, Stable ID Namespaces: `TR-001..TR-036` | complete 36 benefit/cost audio mappings |
| Equipment IDs | `05_CONTENT_CATALOG.md`, Stable ID Namespaces: `EQ-001..EQ-320` | complete 320 equipment audio mappings |
| Artifact IDs | `05_CONTENT_CATALOG.md`, Stable ID Namespaces: `AR-001..AR-060` | instantiate 60 artifact rule signatures |
| Enemy IDs | `05_CONTENT_CATALOG.md`, Count And Assignment Check: `EN-R1-01..EN-R1-12`, `EN-R2-01..EN-R2-12`, `EN-R3-01..EN-R3-12`, `EN-R4-01..EN-R4-12`, `EN-R5-01..EN-R5-13`, `EN-R6-01..EN-R6-13`, `EN-R7-01..EN-R7-13`, `EN-R8-01..EN-R8-13` | instantiate the 100 enemy forecast/resolution pairs from primary enemy rows |
| Boss IDs | `05_CONTENT_CATALOG.md`, Count And Assignment Check: `BO-R1-01..BO-R1-02`, `BO-R2-01..BO-R2-02`, `BO-R3-01..BO-R3-02`, `BO-R4-01..BO-R4-02`, `BO-R5-01..BO-R5-02`, `BO-R6-01..BO-R6-02`, `BO-R7-01..BO-R7-02`, `BO-R8-01..BO-R8-02` | instantiate 16 five-event boss packages |
| Status events | `02_GAMEPLAY_AND_BALANCE.md`, Status Effects And Resolution Order: `status_id`, `stack_rule`, dispel/immunity tags, `on_apply`, `on_tick`, `on_expire`, apply-roll, resist, and expiry outcomes | map shared apply, stack, tick, resist, cleanse, and expiry cues without adding status identities |
| Resources and costs | `02_GAMEPLAY_AND_BALANCE.md`, Resource Ledger and Sections 4-6: `coin`, `replacement_credit`, `xp`, `renown`, `clear_fact`, `discovery_fact`, plus authoritative refresh, purchase, sale, reward, and rebate receipts | select transaction material from the committed resource and receipt; audio defines no price |
| Party capacity | `02_GAMEPLAY_AND_BALANCE.md`, Run Opening And Capacity Economy: `line_capacity(C) = min(10, 4 + floor(C/2))`, yielding `4,5,6,7,8,9,10` at clear counts `0,2,4,6,8,10,12` | scale preparation density and capacity feedback from four through the selected maximum of ten |
| Battle speed | `02_GAMEPLAY_AND_BALANCE.md`, Battle Control, Retreat, Timeout, And Outcome: Pause, 1x, 2x, and 4x are presentation-only | configure audio density without changing music tempo, voice speed, simulation time, or draws |
| Voice locales | `01_GAME_DESIGN.md`, Commercial And Platform Boundary and Localization Rules; `03_PAGES_AND_UX.md`, accessibility matrix: English (`en`) and Simplified Chinese (`zh_CN`) | ship the 32 semantic intents in both launch locales; language-neutral efforts remain shared |
| Background simulation | `02_GAMEPLAY_AND_BALANCE.md`, Battle Interruption And Deterministic Resume; `03_PAGES_AND_UX.md`, Interruption And Save | complete the current priority batch, snapshot, advance no obscured time, return battle through `BAT-006`, and reconcile non-battle receipts |
| Headphone unplug | `03_PAGES_AND_UX.md`, Audio-Independent And Visual Accessibility; `03_PAGES_AND_UX.md` row `SET-004` | treat as output loss: stop private output before speaker reopen, raise one nonblocking notice, keep captions/geometry, pause audio tests, and continue the current screen without automatic speaker playback |
| Screen and action IDs | `03_PAGES_AND_UX.md`, Input Profiles and Complete Screen Inventory: `NAV`, `LIST`, `SELECT`, `ORDER`, `BATTLE`, `MODAL`, `SETTINGS`; `SYS-001..008`, `HUB-001..002`, `SHP-001..003`, `REC-001..003`, `EQP-001..002`, `ART-001`, `PTY-001..002`, `RSK-001..002`, `BAT-001..006`, `OUT-001..006`, `PRO-001..003`, `PST-001..003`, `SET-001..009`; `01_GAME_DESIGN.md`, Input Semantics: focus, inspect, compare, buy, sell, lock, refresh, equip, reorder, confirm, cancel, start, pause, speed, retreat, open event log | bind shared events to all 50 final screens, seven input profiles, and semantic actions |
A missing cited ID, event, receipt, or policy is an integration error in the
audio manifest. It cannot silently fall back to a different semantic event.
### 3. Routing And Priority
```text
Master
|- Music
| |- MusicBase
| |- MusicMotion
| |- MusicPressure
| `- MusicTransition
|- Ambience
| |- AmbienceBed
| |- AmbienceWeather
| `- AmbienceSpotter
|- SFX
| |- SFXCritical
| |- SFXPlayerCommit
| |- SFXCombat
| |- SFXWorld
| `- SFXUI
|- Voice
| |- VoiceSystem
| |- VoiceAnnouncer
| `- VoiceEffort
`- Accessibility
`- OptionalCueReinforcement
```
Master, Music, Ambience, SFX, and Voice have separate user controls. The
Accessibility bus follows Master but has its own enable control. Master mute is
immediate, reversible, and never stops simulation.
#### 3.1 Priority Classes
| Priority | Meaning | Examples | Suppression rule |
|---|---|---|---|
| `P0` | safety or irreversible consequence | destructive dismissal, save conflict, data reset | never suppressed; later duplicates collapse by transaction ID |
| `P1` | immediate tactical state | enemy forecast, critical recruit state, retreat completion, boss phase | may suppress `P3-P6`; maximum two distinct cues at once |
| `P2` | player-authored commit | hire, buy, equip, reorder, battle start, reward accept | delayed up to 120 ms rather than masked |
| `P3` | result or build information | target/protection change, profession state, level gain | grouped by source and event family |
| `P4` | routine combat readability | attacks, hits, movement, ordinary status ticks | aggressively pooled and rate-limited |
| `P5` | non-semantic performance | recruit efforts, decorative UI finish | suppressed before any semantic cue |
| `P6` | atmosphere | ambience spotters and musical detail | thins or ducks first |
#### 3.2 Concurrency And Rate Limits
| Bus/family | Global cap | Per-source rule | Overflow behavior |
|---|---:|---|---|
| `SFXCritical` | 2 | one active event per semantic key | preserve earliest, queue one later cue for at most 300 ms, then caption/log only |
| `SFXPlayerCommit` | 2 | one per transaction ID | duplicate callbacks produce no second cue |
| UI focus | 2 | maximum 8 focus sounds/s | merge traversal into one rising/falling gesture |
| Shop/recruit preview | 3 | maximum 4 sounds/s | keep latest focused item and committed action |
| Equipment/party-order preview | 3 | maximum 5 sounds/s | keep changed forecast; discard stale previews |
| Routine combat impact | 6 | same source/material once per 90 ms | combine amplitude and weight into one representative impact |
| Profession signature | 3 | same profession once per 700 ms | keep higher priority state cue |
| Enemy signature | 3 | same enemy once per 900 ms | forecast wins over resolution flourish |
| Voice semantic | 1 | one system or announcer line | replacement only before speech begins |
| Voice effort | 2 | same recruit once per 2.5 s | suppress oldest low-priority effort |
| Ambience spotter | 2 | same family once per 8-30 s | skip, never queue |
| Music transition | 1 | one transition until its handoff point | jump to correct synchronized state at next legal marker |
#### 3.3 Ducking
| Trigger | Music | Ambience | Routine SFX | Voice effort | Attack / hold / release |
|---|---:|---:|---:|---:|---|
| `P0` consequence | -8 dB | -6 dB | -6 dB | mute | 20 ms / 250 ms / 700 ms |
| `P1` forecast/state | -5 dB | -4 dB | -4 dB | -8 dB | 35 ms / event / 500 ms |
| `P2` commit | -3 dB | -2 dB | -2 dB | -5 dB | 25 ms / 120 ms / 300 ms |
| System/announcer voice | -6 dB | -3 dB | -3 dB | mute | 40 ms / speech / 350 ms |
Ducking is side-chain driven per bus. It never restarts music, shifts pitch, or
silences all environmental context. Repeated automatic impacts cannot hold a
permanent duck.
### 4. Format, Loudness, And Dynamic Range
These are production and integration targets, followed by human listening:
- release masters: lossless WAV, 48 kHz, 24-bit, interleaved where stereo;
- individual master true peak: at or below `-1 dBTP` after final processing;
- standard ten-minute gameplay capture: `-18 LUFS-I +/- 2 LU`, at or below
`-1 dBTP` on Master;
- dialogue/announcer program target: `-20 LUFS` gated, with intelligibility
checked against the busiest approved battle mix;
- no DC offset, clipped transient, unintended leading silence, truncated tail,
or hidden normalization metadata;
- critical cues retain useful energy between 250 Hz and 4 kHz and survive phone
speakers, mono fold-down, and low playback volume;
- stereo correlation for semantic cues remains above zero; polarity cancellation
may not erase an event;
- no release asset depends on runtime pitch randomization for acceptability.
| Preset | Mix behavior | Acceptance target |
|---|---|---|
| Wide | full transient and music range; light bus compression | `-20 LUFS-I +/- 2` over the reference sequence |
| Standard | moderate transient control and default ducking | `-18 LUFS-I +/- 2` over the reference sequence |
| Night | reduced peak-to-dialogue range, softened low bass, unchanged semantics | `-18 LUFS-I +/- 2`, no critical cue more than 8 LU above dialogue |
Changing preset does not interrupt the current cue. A 100-250 ms parameter
ramp prevents clicks and sudden level jumps.
### 5. Music Plan
#### 5.1 Scope And Count
The music scope is **32 suite identities and 150 delivered stems/cues**. A suite
is one synchronized state package, not one continuously dense track.
| Suite family | Suites | Deliverables per suite | Total | State job |
|---|---:|---:|---:|---|
| `MUS-G00-TITLE` | 1 | 3 | 3 | title base, return layer, continue handoff |
| `MUS-G01-GUILD` | 1 | 4 | 4 | guild base, activity layer, progress layer, departure cue |
| `MUS-G02-SHOP` | 1 | 4 | 4 | browse base, offer motion, scarcity pressure, purchase handoff |
| `MUS-G03-PREP` | 1 | 4 | 4 | recruit/equipment/order base, comparison layer, ready layer, battle handoff |
| `MUS-G04-RUN` | 1 | 4 | 4 | run overview base, risk layer, forward-motion layer, region handoff |
| `MUS-G05-RESULT-WIN` | 1 | 3 | 3 | survival statement, reward bed, continue cue |
| `MUS-G06-RESULT-LOSS` | 1 | 3 | 3 | consequence statement, recovery bed, return cue |
| `MUS-G07-META` | 1 | 5 | 5 | unlock base, mastery layer, ending base, postgame layer, new-run handoff |
| `MUS-R01..08-ROUTE` | 8 | 4 | 32 | regional route base, motion, pressure, exit cue |
| `MUS-R01..08-BATTLE` | 8 | 5 | 40 | regional base, pulse, threat, critical state, result handoff |
| `MUS-R01..08-BOSS` | 8 | 6 | 48 | boss base, pulse, two phase layers, decisive state, result handoff |
| **Total** | **32** | | **150** | exact planned music delivery |
Global suites use 60-92 BPM equivalent motion and leave at least one clear
half-bar per phrase for UI commits. Regional route suites loop at 96-160 s,
ordinary battle suites at 64-112 s, and boss suites at 96-160 s. Base and layer
files share sample-accurate length and loop markers. Handoff cues run 1.5-6 s
and land on an authored bar boundary.
Every loop must pass ten consecutive seam repeats and a 20-minute context
listen. A transition may wait no more than one bar; an urgent state uses an
immediate tonal marker while musical layers catch up at the next marker.
#### 5.2 Adaptive Parameters
| Parameter | Source binding | Music response |
|---|---|---|
| shop browse/refresh/commit | screen IDs `SHP-001..003` and the inspect, buy, lock, refresh, confirm, and cancel actions | motion layer follows active browsing; purchase handoff plays only after commit |
| affordability pressure | economy resources `coin` and `replacement_credit` plus the current authoritative cost receipt | sparse low pulse; no alarm for merely expensive offers |
| party readiness | core validation event | ready layer enters after all blockers clear |
| run risk | authoritative risk tier | pressure layer changes at next beat with a non-musical immediate cue |
| battle start/pause/speed | presentation states Pause, 1x, 2x, and 4x | start at authored marker; pause filters; speed never changes pitch or tempo |
| battle pressure | target danger, casualty forecast, boss phase | add or remove pressure layers with hysteresis to avoid rapid toggling |
| result | authoritative victory, defeat, or retreat result | one result handoff, then the matching result bed |
| region progress | region progression binding | add one stable timbre layer; never replace the region's core soundmark |
Battle pressure uses a 2 s entry hold and 4 s exit hold unless a `P0` or `P1`
event forces immediate entry. Low health alone does not drive music if no
consequence is imminent.
#### 5.3 Eight Regional Families
Display names and environmental associations bind directly to the Region
Matrix. These original soundmarks establish separation while following its
minimal framing, encounter grammar, and production-needs brief.
| Region ID and name | Soundmark | Pulse and register | Ambience bridge | Mono rule |
|---|---|---|---|---|
| `RG-01` Windglass Verge | breath-driven glass harmonic settling into a dry timber knock | open 5/4 grouping, middle register | terrace wind, grass, suspended mineral panes, timber fittings | glass answer moves by register, not pan alone |
| `RG-02` Siltwake Fens | reed buzz answered by a low clay drum and water slap | slow 6/8 with a displaced final beat | layered reeds, luminous sediment, wet banks, ferry fittings | drum fundamental stays centered |
| `RG-03` Emberloom Works | struck-clay triad closed by one pressure-valve click | squared 4/4, low-mid register | kiln breath, ceramic conduit, measured tools, hot-metal detail | clay and valve transients retain separate envelopes |
| `RG-04` Quillroot Archive | paper rasp leading two plucked-string notes | alternating 3+3+2, light register | leaf movement, root shelves, pages, hollow wood | paired notes use different envelopes |
| `RG-05` Tideglass Reach | water-glass phrase followed by a shorter reversed echo | offset 7/8, broad middle register | salt wind, mirror pools, beacon fittings, distant water | echo reversal is rhythmic and spectral, not stereo-only |
| `RG-06` Skyrail Orchard | rail-joint clack lifting into an airy string triplet | rotating 3/4 to 4/4, wide register | high air, fruit canopy, cable strain, freight-rail movement | rail transient supplies a centered timing mark |
| `RG-07` Nightcurrent Basin | centered low pulse answered by a delayed bright reveal ping | sparse asymmetric cycle, low-to-high register | dark water, channel flow, linked-current hum, quiet crossing hardware | reveal uses register and delay in addition to position |
| `RG-08` Crown of Morn | seven prior material attacks passed into one new open cadence | additive meter resolving to 4/4 | dawn stone, route-current layers, observatory fittings, selected prior materials | every contributing attack remains separable |
Regional battle arrangements use the same soundmark under greater rhythmic
pressure, not a disconnected genre switch. Boss music expands phase structure
without masking forecasts or becoming a continuous maximum-density mix.
### 6. Ambience Plan
#### 6.1 Configuration Count
There are **76 authored ambience configurations**.
| Family | Configuration IDs | Count | Required states |
|---|---|---:|---|
| Global | `AMB-G01..G12` | 12 | title at rest; guild quiet/active/return; shop idle/busy/low-stock; preparation; run transition; success result; loss result; safe recovery |
| Per region | `AMB-R{01..08}-01..08` | 64 | region neutral/progressed; run calm/pressure/recovery; battle standard/elite/boss |
| **Total** | | **76** | every state has entry, steady, and exit behavior |
Configurations are assembled from **90 seamless loop masters** and **320
spotter masters**:
- 18 global loop masters;
- nine loop masters per region, `9 x 8 = 72`;
- 16 global spotter families with four variations, `16 x 4 = 64`;
- eight spotter families per region with four variations,
`8 x 8 x 4 = 256`.
Total planned ambience delivery is **410 mastered assets**. Source layers may
be reused across configurations, but the 76 configuration records remain
separate review items.
#### 6.2 Loop And Density Rules
- global and regional identity beds loop at 75-150 s;
- route beds loop at 90-180 s;
- battle beds loop at 60-120 s and omit decorative transients;
- weather/mechanical layers loop at 30-90 s with asynchronous start offsets;
- spotters never loop and provide four non-pitch-randomized variations;
- spotter interval is 8-30 s, widened to 18-45 s during preparation and result
review;
- no spotter starts within 500 ms before or 700 ms after a `P0-P2` event;
- a configuration transition crossfades over 1.0-2.5 s unless an interruption
requires immediate silence;
- restored/progressed region states must audibly change one persistent process
layer, not merely raise volume.
Ambience supports place and progression but never signals affordability,
legality, target, casualty, reward ownership, or save success by itself.
### 7. Generated-Recruit Voice Contract
#### 7.1 Bounded Scope
Voice consists of a small localized semantic layer plus reusable nonverbal
efforts. There are no bespoke dialogue sets for individual recruits, no spoken
generated names, and no content dependency on a recruit-specific performer.
Semantic voice ships in exactly two launch locales: English (`en`) and
Simplified Chinese (`zh_CN`). Nonverbal recruit efforts are language-neutral.
| Voice family | Formula | Release masters | Notes |
|---|---:|---:|---|
| system intents | `16 x 2 locales` | 32 | save, input, compatibility, and unavailable-action notices |
| activity announcer intents | `16 x 2 locales` | 32 | shop, readiness, battle, casualty, reward, and run-result notices |
| recruit effort banks | `8 banks x 8 functions x 2 variations` | 128 | language-neutral, non-lexical performances |
| **Total** | | **192** | retakes and rejected takes excluded |
The 32 semantic intents are:
```text
VO-SYS-001 save_recovered
VO-SYS-002 save_conflict
VO-SYS-003 save_failed
VO-SYS-004 migration_required
VO-SYS-005 migration_complete
VO-SYS-006 offline_state_changed
VO-SYS-007 input_device_changed
VO-SYS-008 audio_output_changed
VO-SYS-009 destructive_action_armed
VO-SYS-010 destructive_action_cancelled
VO-SYS-011 purchase_rejected
VO-SYS-012 equipment_incompatible
VO-SYS-013 action_unavailable
VO-SYS-014 content_mismatch
VO-SYS-015 connection_recovered
VO-SYS-016 diagnostic_exported
VO-ANN-001 shop_offers_ready
VO-ANN-002 shop_refresh_confirmed
VO-ANN-003 recruit_hired
VO-ANN-004 recruit_sent_to_reserve
VO-ANN-005 party_line_ready
VO-ANN-006 party_line_blocked
VO-ANN-007 battle_started
VO-ANN-008 battle_speed_changed
VO-ANN-009 retreat_started
VO-ANN-010 retreat_cancelled
VO-ANN-011 retreat_completed
VO-ANN-012 casualty_confirmed
VO-ANN-013 battle_won
VO-ANN-014 battle_lost
VO-ANN-015 reward_ready
VO-ANN-016 run_ended
```
Semantic voice is optional reinforcement. The matching UI text, caption, and
SFX occur whether or not voice is enabled or a localized file exists.
#### 7.2 Effort Banks
Each generated recruit receives one of eight effort banks from a stable seed.
The assignment remains constant for that recruit. Runtime pitch shifting,
voice cloning, and performer imitation are prohibited. The eight functions are
light exertion, heavy exertion, light hit, heavy hit, guard/deflect,
heal/recover, critical condition, and defeated fall. Each has two genuinely
different performed variations.
Efforts contain no words, names, profession calls, or gameplay instructions.
They are `P5` except critical condition and defeated fall, which become `P3`
but remain subordinate to semantic casualty SFX and captions. An effort cannot
delay battle simulation or set animation duration.
#### 7.3 Casting And Rights
- casting briefs describe performance energy and register, never a living or
protected performer's likeness;
- performer consent, territory, term, reuse, edit, and synthetic-use clauses
are documented before recording;
- a voice model may not be trained, cloned, or derived from a performer without
a separate explicit agreement and owner approval;
- localized direction preserves semantic brevity and urgency rather than
matching waveform duration exactly;
- no final voice provider, performer, or synthetic workflow is approved by
this design Goal.
### 8. Shared SFX Event Ledger
There are **228 shared semantic event identities**. The ordered lists below are
the complete shared ledger. An event identity may render from reusable layers,
but its state meaning, priority, cooldown, caption, and transaction behavior
remain independently testable.
#### 8.1 System And Interface: 24
```text
SFX-UI-001 focus_move
SFX-UI-002 focus_boundary
SFX-UI-003 focus_disabled
SFX-UI-004 tab_change
SFX-UI-005 page_open
SFX-UI-006 page_close
SFX-UI-007 inspect_open
SFX-UI-008 inspect_close
SFX-UI-009 compare_on
SFX-UI-010 compare_off
SFX-UI-011 filter_apply
SFX-UI-012 filter_clear
SFX-UI-013 menu_open
SFX-UI-014 menu_close
SFX-UI-015 action_available
SFX-UI-016 action_blocked
SFX-UI-017 confirm_arm
SFX-UI-018 confirm_commit
SFX-UI-019 confirm_cancel
SFX-UI-020 destructive_hold_tick
SFX-UI-021 destructive_commit
SFX-UI-022 stale_state
SFX-UI-023 error_recoverable
SFX-UI-024 notification_new
```
Preview cues are short dry contacts. Commit cues add a low settled component.
Blocked, stale, and destructive states have different contours and captions.
#### 8.2 Shop And Recruitment: 24
```text
SFX-SHP-001 shop_enter
SFX-SHP-002 offer_reveal
SFX-SHP-003 refresh_review
SFX-SHP-004 refresh_commit
SFX-SHP-005 refresh_unaffordable
SFX-SHP-006 price_change
SFX-SHP-007 purchase_review
SFX-SHP-008 purchase_commit
SFX-SHP-009 purchase_rejected
SFX-SHP-010 currency_gain
SFX-SHP-011 currency_spend
SFX-SHP-012 recruit_card_reveal
SFX-SHP-013 recruit_inspect
SFX-SHP-014 recruit_hire_review
SFX-SHP-015 recruit_hire_commit
SFX-SHP-016 deploy_capacity_reached
SFX-SHP-017 reserve_added
SFX-SHP-018 recruit_replace_review
SFX-SHP-019 dismiss_arm
SFX-SHP-020 dismiss_commit
SFX-SHP-021 trait_benefit_reveal
SFX-SHP-022 trait_cost_reveal
SFX-SHP-023 offer_expire
SFX-SHP-024 shop_exit
```
`purchase_commit` plays only after the economy receipt commits.
`recruit_hire_commit` and `reserve_added` may occur in order but cannot overlap.
Trait benefit and cost use complementary contours so the cost cannot be heard
as a second bonus.
#### 8.3 Equipment And Artifacts: 20
```text
SFX-EQP-001 item_pickup
SFX-EQP-002 item_inspect
SFX-EQP-003 compare_better
SFX-EQP-004 compare_tradeoff
SFX-EQP-005 slot_select
SFX-EQP-006 equip_review
SFX-EQP-007 equip_commit
SFX-EQP-008 unequip_commit
SFX-EQP-009 incompatible_item
SFX-EQP-010 inventory_full
SFX-EQP-011 sell_review
SFX-EQP-012 sell_commit
SFX-EQP-013 item_lock
SFX-EQP-014 item_unlock
SFX-EQP-015 artifact_reveal
SFX-EQP-016 artifact_take
SFX-EQP-017 artifact_rule_activate
SFX-EQP-018 equipment_proc_ready
SFX-EQP-019 equipment_proc_trigger
SFX-EQP-020 equipment_proc_cooldown
```
Equipment material supplies the transient; semantic state supplies the contour.
Comparisons never claim a globally better choice when the underlying UI marks
a tradeoff.
#### 8.4 Party Order And Preparation: 20
```text
SFX-ORD-001 unit_select
SFX-ORD-002 move_preview
SFX-ORD-003 legal_position
SFX-ORD-004 illegal_position
SFX-ORD-005 swap_preview
SFX-ORD-006 reorder_commit
SFX-ORD-007 reorder_cancel
SFX-ORD-008 front_position_change
SFX-ORD-009 rear_position_change
SFX-ORD-010 target_projection_change
SFX-ORD-011 protection_projection_change
SFX-ORD-012 reach_projection_change
SFX-ORD-013 healing_projection_change
SFX-ORD-014 capacity_increase
SFX-ORD-015 deploy_add
SFX-ORD-016 deploy_remove
SFX-ORD-017 ready_check_pass
SFX-ORD-018 ready_check_blocked
SFX-ORD-019 battle_start_arm
SFX-ORD-020 battle_start_commit
```
Move preview uses front-to-rear brightness and a centered low pulse, so order is
audible in mono without relying on pan. Projection-change cues fire only when
the forecast actually changes and are paired with the changed visual value.
#### 8.5 Automatic Battle: 60
```text
SFX-BAT-001 battle_count_in
SFX-BAT-002 battle_begin
SFX-BAT-003 battle_pause
SFX-BAT-004 battle_resume
SFX-BAT-005 speed_up
SFX-BAT-006 speed_down
SFX-BAT-007 inspect_open
SFX-BAT-008 inspect_close
SFX-BAT-009 retreat_available
SFX-BAT-010 retreat_blocked
SFX-BAT-011 target_acquired_front
SFX-BAT-012 target_acquired_rear
SFX-BAT-013 target_changed
SFX-BAT-014 reach_blocked
SFX-BAT-015 protection_applied
SFX-BAT-016 protection_removed
SFX-BAT-017 movement_forward
SFX-BAT-018 movement_backward
SFX-BAT-019 position_displaced
SFX-BAT-020 replacement_step_in
SFX-BAT-021 melee_windup
SFX-BAT-022 melee_release
SFX-BAT-023 melee_impact_light
SFX-BAT-024 melee_impact_heavy
SFX-BAT-025 ranged_windup
SFX-BAT-026 ranged_release
SFX-BAT-027 projectile_arrival
SFX-BAT-028 area_windup
SFX-BAT-029 area_resolve
SFX-BAT-030 channel_start
SFX-BAT-031 channel_tick
SFX-BAT-032 channel_end
SFX-BAT-033 summon_or_device_enter
SFX-BAT-034 summon_or_device_exit
SFX-BAT-035 guard_raise
SFX-BAT-036 guard_absorb
SFX-BAT-037 guard_break
SFX-BAT-038 barrier_gain
SFX-BAT-039 barrier_absorb
SFX-BAT-040 barrier_end
SFX-BAT-041 component_blocked
SFX-BAT-042 immunity
SFX-BAT-043 heal_small
SFX-BAT-044 heal_large
SFX-BAT-045 regeneration_tick
SFX-BAT-046 overheal_or_waste
SFX-BAT-047 status_benefit_apply
SFX-BAT-048 status_cost_apply
SFX-BAT-049 status_tick
SFX-BAT-050 status_stack_change
SFX-BAT-051 status_resist
SFX-BAT-052 status_cleanse
SFX-BAT-053 status_expire
SFX-BAT-054 cooldown_ready
SFX-BAT-055 enemy_forecast_begin
SFX-BAT-056 enemy_forecast_escalate
SFX-BAT-057 enemy_forecast_resolve
SFX-BAT-058 enemy_forecast_cancel
SFX-BAT-059 elite_state_change
SFX-BAT-060 boss_phase_change
```
##### Terminal Outcome Cue And Caption Bindings
The following existing shared identities bind only to terminal outcome records
declared by `02_GAMEPLAY_AND_BALANCE.md`, Section 11.2. This mapping
adds no SFX identity or rendered master.
| Shared cue | Terminal outcome ID | Required causal caption | Exclusion |
|---|---|---|---|
| `SFX-BAT-014 reach_blocked` | `AO_INVALID_REACH` | `Out of reach` plus old/current depth and required reach | not a forecast comparison or target-change cue |
| `SFX-BAT-041 component_blocked` | `AO_BLOCKED` | `Blocked` plus blocker actor or rule ID | barrier absorption remains `AO_APPLIED` and uses the barrier state cue |
| `SFX-BAT-042 immunity` | `AO_IMMUNE` | `Immune` plus immunity tag and source ID | no resistance draw is consumed |
| `SFX-BAT-051 status_resist` | `AO_RESISTED` | `Resisted` plus roll, threshold, Potency, and Tenacity | status components only; never a general action result |
`FORECAST_DIVERGED` may select `SFX-BAT-013 target_changed` only when the
authoritative target changes; it is not a terminal outcome. A legal moved target
with `TARGET_MOVED_STILL_LEGAL` remains `AO_APPLIED` and uses its ordinary
component/state audio. Every other `AO_*` record uses its exact causal label,
specific state cue when one exists, and event-log evidence rather than a
catch-all failure transient.
At 2x and 4x, simulation events remain unchanged while
routine audio density is reduced: keep every forecast, state change, casualty,
retreat, and result; group attacks by source/material; keep at most one routine
impact per source per 120 ms at the highest configured speed. Music tempo and
voice playback speed do not change.
#### 8.6 Knockout, Result, Reward, And Recovery: 28
```text
SFX-RES-001 recruit_health_warning
SFX-RES-002 recruit_critical
SFX-RES-003 collapse_forecast
SFX-RES-004 recruit_defeated
SFX-RES-005 recruit_knockout_confirmed
SFX-RES-006 stage_absence_open
SFX-RES-007 recruit_stage_return
SFX-RES-008 retreat_channel_begin
SFX-RES-009 retreat_channel_tick
SFX-RES-010 retreat_interrupted
SFX-RES-011 retreat_commit
SFX-RES-012 battle_victory
SFX-RES-013 battle_defeat
SFX-RES-014 flawless_result
SFX-RES-015 narrow_survival
SFX-RES-016 reward_reveal
SFX-RES-017 reward_option_focus
SFX-RES-018 reward_option_compare
SFX-RES-019 reward_accept
SFX-RES-020 reward_skip
SFX-RES-021 reward_inventory_block
SFX-RES-022 currency_reward
SFX-RES-023 equipment_reward
SFX-RES-024 artifact_reward
SFX-RES-025 experience_gain
SFX-RES-026 level_gain
SFX-RES-027 recovery_option_open
SFX-RES-028 run_summary_close
```
`recruit_knockout_confirmed` is `P1`, plays once after the battle-local knockout
is committed, and uses no reward sparkle, comic fall or memorial language.
Defeat and retreat cues describe different results. Reward focus and reveal
never imply ownership; only
`reward_accept` or the committed reward-type receipt does.
#### 8.7 Run, Progression, And Save: 28
```text
SFX-RUN-001 risk_option_focus
SFX-RUN-002 risk_compare
SFX-RUN-003 risk_commit
SFX-RUN-004 encounter_enter
SFX-RUN-005 encounter_clear
SFX-RUN-006 next_choice_open
SFX-RUN-007 next_choice_closed
SFX-RUN-008 rest_option_focus
SFX-RUN-009 rest_commit
SFX-RUN-010 run_continue
SFX-RUN-011 run_end_voluntary
SFX-RUN-012 run_end_forced
SFX-RUN-013 progression_unlock
SFX-RUN-014 difficulty_change_review
SFX-RUN-015 save_begin
SFX-RUN-016 save_commit
SFX-RUN-017 save_deferred
SFX-RUN-018 save_failed
SFX-RUN-019 backup_recovered
SFX-RUN-020 migration_begin
SFX-RUN-021 migration_complete
SFX-RUN-022 migration_failed
SFX-RUN-023 conflict_detected
SFX-RUN-024 rollback_notice
SFX-RUN-025 corruption_blocked
SFX-RUN-026 duplicate_claim_rejected
SFX-RUN-027 clock_rollback_detected
SFX-RUN-028 offline_state_changed
```
##### `OUT-006` Contract Withdrawal Transaction
Contract withdrawal is a voluntary expedition-close transaction, not Recruit
dismissal, knockout, forced Contract end, or a generic Back action. It reuses existing shared
events and adds no SFX identity or rendered master.
| `OUT-006` state | Existing audio event | Required caption and receipt behavior |
|---|---|---|
| review armed | `SFX-UI-017 confirm_arm`; `SFX-UI-020 destructive_hold_tick` only while the configured destructive gesture advances | Caption names the run, cleared run-only state, retained history/progression, destination, and irreversibility; default focus remains Cancel. No close cue plays. |
| cancel | `SFX-UI-019 confirm_cancel` | `Withdrawal cancelled; Contract unchanged`; return to the invoking Guild desk or Result state. |
| rejected or illegal | `SFX-UI-016 action_blocked`; use `SFX-UI-023 error_recoverable` only for a recoverable operation failure | Caption gives the authoritative rejection reason and safe return; no resource, Recruit, or run state is presented as changed. |
| stale review | `SFX-UI-022 stale_state` | `Abandonment consequences changed; review again`; replace the old consequence list and require a new explicit confirm. |
| committed receipt | `SFX-RUN-011 run_end_voluntary` after the sourced closure receipt commits | Caption states run closed, cleared run-only state, retained history/progression, destination, and operation ID. The event log retains the receipt. |
| duplicate operation | no new transient; transaction-ID replay guard returns the original receipt | Re-present the original committed caption and receipt; never replay the close cue or partially close the run. |
`SFX-SHP-020 dismiss_commit`, `SFX-RES-005 recruit_knockout_confirmed`, and
`SFX-RUN-012 run_end_forced` never fire for `OUT-006`. Suspend before commit
changes nothing; suspend after commit verifies the same closure receipt before
any audio resumes.
`save_commit` follows durable commit acknowledgment, never the start of a
write. Failed, deferred, recovered, migrated, conflicted, rolled back, and
offline states have distinct captions and cannot reuse the success receipt.
#### 8.8 Eight-Region Progression: 24
| Region package | Entry | Hazard alert | Progress resolution |
|---|---|---|---|
| `R01` | `SFX-REG-001` | `SFX-REG-002` | `SFX-REG-003` |
| `R02` | `SFX-REG-004` | `SFX-REG-005` | `SFX-REG-006` |
| `R03` | `SFX-REG-007` | `SFX-REG-008` | `SFX-REG-009` |
| `R04` | `SFX-REG-010` | `SFX-REG-011` | `SFX-REG-012` |
| `R05` | `SFX-REG-013` | `SFX-REG-014` | `SFX-REG-015` |
| `R06` | `SFX-REG-016` | `SFX-REG-017` | `SFX-REG-018` |
| `R07` | `SFX-REG-019` | `SFX-REG-020` | `SFX-REG-021` |
| `R08` | `SFX-REG-022` | `SFX-REG-023` | `SFX-REG-024` |
Each set uses its Section 5.3 soundmark. Hazard alert binds to the corresponding
`RG-01..RG-08` Region Matrix encounter grammar and production-needs row, then
to the final enemy or boss event instance. Progress resolution fires only after
the persistent region change commits.
#### 8.9 Per-Event Priority, Replay, And Caption Policy
Ordinals below refer to the definitions in Sections 8.1-8.8. Every ordinal is
assigned exactly once. The priority determines ducking and overflow through
Section 3.
| Family | Ordinals | Priority |
|---|---|---:|
| UI | 001-014 | `P5` |
| UI | 015-017, 019, 024 | `P3` |
| UI | 018 | `P2` |
| UI | 020, 022-023 | `P1` |
| UI | 021 | `P0` |
| Shop/recruit | 001-003, 012-014, 023-024 | `P4` |
| Shop/recruit | 006-007, 018, 021-022 | `P3` |
| Shop/recruit | 004, 008, 010-011, 015, 017 | `P2` |
| Shop/recruit | 005, 009, 016, 019 | `P1` |
| Shop/recruit | 020 | `P0` |
| Equipment | 001-006 | `P4` |
| Equipment | 013-015, 017-020 | `P3` |
| Equipment | 007-008, 011-012, 016 | `P2` |
| Equipment | 009-010 | `P1` |
| Party order | 001-005 | `P4` |
| Party order | 007-017 | `P3` |
| Party order | 006, 019-020 | `P2` |
| Party order | 018 | `P1` |
| Battle | 021-034 | `P4` |
| Battle | 005-008, 011-020, 035-054 | `P3` |
| Battle | 001-004 | `P2` |
| Battle | 009-010, 055-060 | `P1` |
| Result | 016-018, 020, 025-028 | `P3` |
| Result | 001, 006-008, 014-015, 019, 022-024 | `P2` |
| Result | 002-004, 009-010, 012-013, 021 | `P1` |
| Result | 005, 011 | `P0` |
| Run/save | 001, 008, 015 | `P4` |
| Run/save | 002, 004-007, 013, 017 | `P3` |
| Run/save | 003, 009-011, 014, 016, 019-021 | `P2` |
| Run/save | 012, 026-028 | `P1` |
| Run/save | 018, 022-025 | `P0` |
| Region | 001, 004, 007, 010, 013, 016, 019, 022 | `P3` |
| Region | 003, 006, 009, 012, 015, 018, 021, 024 | `P2` |
| Region | 002, 005, 008, 011, 014, 017, 020, 023 | `P1` |
Replay and caption policy follows priority:
| Priority | Replay guard | Caption class |
|---|---|---|
| `P0` | once per authoritative transaction/event instance; no time-based replay | mandatory in critical-only and full modes; retained in event log |
| `P1` | source + semantic key, 300 ms minimum unless a distinct state replaces it | mandatory in critical-only and full modes; direction/source included |
| `P2` | once per commit transaction; previews cannot trigger it | mandatory in full mode; existing UI receipt remains visible in every mode |
| `P3` | family cooldown 300-700 ms; latest changed state wins | full-mode caption when offscreen or not already text-visible |
| `P4` | pooled by source/material using Section 3 caps | summarized only in full detail or event-log accessibility mode |
| `P5` | UI traversal and effort caps from Section 3 | no default caption; focus and recruit state remain visually exposed |
### 9. Content-Bound SFX Packages
Content-bound IDs are pattern contracts. The production manifest expands them
from the resolved stable namespaces and retains a machine-readable mapping
record.
| Content scope | Event identity pattern | Identities | Minimum rendered masters | Reuse rule |
|---|---|---:|---:|---|
| 42 professions | `SFX-PRO-{profession_id}-{ACTION,STATE}`, where `profession_id` is in `PF-B01..PF-B12`, `PF-A01..PF-A24`, or `PF-H01..PF-H06` | 84 | 168 | two performed/rendered variations per identity; shared body/material layers allowed |
| 36 traits | map each `TR-001..TR-036` row to one benefit and one cost event | 0 new mandatory | 0 | all 36 mappings required; add an identity only if shared semantics are false |
| 320 equipment items | map each `EQ-001..EQ-320` row to material, equip, and proc events | 0 new mandatory | 0 | all 320 mappings required; no rarity-only signature |
| 60 artifacts | `SFX-ART-{artifact_id}-RULE`, where `artifact_id` is in `AR-001..AR-060` | 60 | 120 | one activation and one resolution render per rule identity |
| 100 ordinary/elite enemies | `SFX-ENM-{enemy_id}-{FORECAST,RESOLVE}`, where `enemy_id` is an `EN-Rx-yy` primary row | 200 | 400 | two variations per identity; forecast contour stays stable |
| 16 bosses | `SFX-BOS-{boss_id}-{ARRIVE,PHASE,THREAT,OPENING,DEFEAT}`, where `boss_id` is a `BO-Rx-yy` primary row | 80 | 80 | five deterministic masters per boss; material layers may be shared |
| **Content-bound total** | | **424** | **768** | every required catalog row receives a mapping |
Shared and content-bound scope therefore totals **652 semantic SFX identities**
and a minimum of **1,240 mastered SFX renders** (`472 shared + 768
content-bound`). New content behavior may add identities; integration may not
remove a required mapping merely because two events currently use the same raw
material.
#### 9.1 Shared SFX Variation Budget
| Shared family | Identities | Variant allocation | Rendered masters |
|---|---:|---|---:|
| system/interface | 24 | 12 repeatable x4; 12 deterministic x1 | 60 |
| shop/recruitment | 24 | 6 repeatable x3; 18 deterministic x1 | 36 |
| equipment/artifacts | 20 | 6 repeatable x3; 14 deterministic x1 | 32 |
| party order/preparation | 20 | 6 repeatable x3; 14 deterministic x1 | 32 |
| automatic battle | 60 | 24 high-rate x4; 18 medium-rate x3; 18 deterministic x1 | 168 |
| casualty/result/reward/recovery | 28 | 4 physical x3; 24 deterministic x1 | 36 |
| run/progression/save | 28 | 4 repeatable x3; 24 deterministic x1 | 36 |
| regional progression | 24 | 16 material events x4; 8 deterministic receipts x1 | 72 |
| **Total** | **228** | | **472** |
Deterministic means one stable semantic master, not identical volume in every
context. Repeated variations use shuffled bags with no immediate repeat. Pitch
randomization is limited to `+/- 2%` only on non-semantic debris layers and is
never applied to forecasts, commit receipts, save states, casualty, or voice.
#### 9.2 Reusable Source Library
The planned raw source library contains **144 selected dry recordings** before
processing: six physical-action kits x8 sources (48), eight regional surface
kits x4 (32), eight interface-object kits x4 (32), and eight tonal/process kits
x4 (32). These sources are production inputs and are not counted as release
event masters. Every source retains origin, rights, performer, location,
recording chain, and allowed-use metadata.
### 10. Captions, Mute, And Accessible Listening
#### 10.1 Caption Contract
Every `P0-P2` event and any non-visible offscreen state has a localized caption
key. Caption data is event data, not speech transcription alone.
```text
[source] + [action/state] + [front/rear/offscreen direction when relevant]
```
Examples of structure, not final localized prose:
- `[Front recruit: danger rising]`
- `[Enemy forecast: heavy strike]`
- `[Recruit knocked out; returns next stage]`
- `[Reward added]`
- `[Save conflict requires review]`
Captions never identify urgency by punctuation count or color alone. Direction
uses words/icons plus optional pan. Repeated routine impacts collapse to a
summary caption; critical events never collapse across different sources.
Caption controls include off/on, critical-only/full detail, 100/115/130% text,
background opacity, speaker labels, and sound direction. A two-line default and
three-line large-text maximum protect the battle forecast area; overflow moves
to the event log without truncating the critical line.
#### 10.2 Mute And Channel Independence
- Master mute silences all audio within 50 ms and restores with a 150 ms ramp.
- Music, Ambience, SFX, and Voice can each be muted independently.
- Voice mute leaves captions and semantic SFX unchanged.
- SFX mute leaves visual forecasts, captions, and event-log records unchanged.
- Music or Ambience mute does not reveal hidden timing advantages.
- The optional Accessibility bus may reinforce critical contours, but cannot
create an event absent from the simulation.
#### 10.3 Mono And Hearing Range
- all semantic cues are authored and reviewed in mono;
- front/rear order uses envelope and register in addition to pan;
- left/right or offscreen direction includes caption and UI direction;
- critical cue fundamentals occupy distinct bands from the busiest music layer;
- high-frequency detail may decorate a cue but never carries its identity;
- hearing-access presets may substitute a lower-register contour while
retaining event timing and priority.
### 11. Lifecycle And Device Behavior
| Lifecycle event | Required audio behavior | State truth requirement |
|---|---|---|
| battle pause | 80 ms filter/level transition; halt scheduled transients; preserve music phase | no hidden cue advances while simulation is paused |
| battle resume | discard stale queued routine cues; 150-350 ms ambience/music restore | reconstruct from current authoritative snapshot |
| app background/focus loss | fade all buses within 100 ms and cancel non-committed preview cues | complete the current priority batch, write/verify the deterministic snapshot, advance no obscured time, return battle through `BAT-006`, and reconcile any non-battle transaction receipt |
| foreground return | wait for current state snapshot, then restore loops at saved or legal markers | never replay purchase, reward, casualty, or save receipts |
| OS interruption | stop output, retain logical music marker, clear transient queues | resume only after interruption-ended callback and state refresh |
| output route change | 50 ms fade, rebuild output graph, 150 ms fade after route is stable for 250 ms | announce/caption changed route once; no duplicate game event |
| headphone unplug | stop private output before speaker reopen; do not move active audio to speakers automatically | raise one nonblocking output-loss notice, retain captions/event geometry, pause a settings test, and continue current simulation; only an independent background or input-device interruption routes through `BAT-006` |
| Bluetooth latency change | adjust presentation scheduling, never simulation timestamps | captions and visuals stay authoritative |
| suspend/restore | serialize suite ID, musical marker, ambience configuration, and active semantic states | do not serialize transient waveform position as game truth |
| content/rules migration | use migration audio only after owning save state reports phase | failure cannot sound successful |
| language change | finish or stop current semantic line, then use new locale | no mixed-language queue survives the switch |
| dynamic-range change | ramp bus parameters over 100-250 ms | current cue remains the same semantic identity |
Every one-shot carries an event instance or transaction ID. Resume, retry, and
duplicate callback handling use that ID to prevent a second purchase, reward,
loss, or save-success cue.
### 12. Workflow Traceability
| Player workflow | Required music/ambience | Required semantic SFX | Voice/caption behavior | Acceptance observation |
|---|---|---|---|---|
| shop browse and refresh | shop base/motion/scarcity states; shop ambience | shop/recruit shared family and currency receipts | offers-ready/refresh voice optional; commits captioned | preview, insufficient state, refresh, and purchase are distinguishable eyes closed, then verified against screen state |
| recruit evaluation and hire | preparation handoff | recruit evaluation, hire, capacity, replacement, dismissal, and trait events | no spoken generated name; benefit and cost caption separately | hire, reserve, capacity, replacement, and dismissal never share receipt contours |
| equipment comparison | preparation base/comparison layer | equipment/artifact shared family | incompatibility caption/system voice optional | review differs from equip/sell commit; proc cannot mask a forecast |
| party ordering | preparation base/ready layer | party-order shared family | blocked/ready caption and optional announcer | order move and changed target/protection/reach/heal projections remain readable in mono |
| automatic battle | regional battle or boss suite; battle ambience | automatic-battle shared family plus content signatures | efforts rate-limited; semantic forecasts captioned | 30-minute battle mix preserves forecasts, phase, retreat, and casualty at every speed |
| knockout and stage return | consequence handoff/result ambience | knockout and return events | knockout caption is mandatory; optional announcer once | committed current-battle exit differs from danger and next-stage return |
| reward and progression | success bed or run suite | reward, ownership, and progression events | ownership caption only after commit | reveal, focus, compare, accept, blocked, and owned states remain distinct |
| recovery after failure | loss bed/safe recovery ambience | recovery and run-end events | neutral system language; no blame performance | player hears consequence, legal recovery options, and return handoff without a celebratory cue |
| voluntary Contract withdrawal | current safe-state bed continues through review; Guild handoff starts only after receipt | `OUT-006` matrix: confirm arm/hold, cancel, rejected/stale, and `SFX-RUN-011` committed receipt | every state has a localized caption; duplicate operation reuses the original receipt without another cue | withdrawal remains distinct from Recruit dismissal, knockout, forced Contract end, and ordinary Back |
| save and restore | current music continues unless blocked | save, migration, conflict, rollback, and offline events | critical states captioned; system voice optional | success, failure, defer, conflict, rollback, corruption, duplicate claim, and offline state cannot be confused |
| eight-region progression | matching route/battle/boss suite and one of 64 regional configurations | regional shared family and bound content packages | localized region name resolves from the `RG-01..RG-08` Region Matrix row | all eight soundmarks are identifiable in mono and progress states change a persistent layer |
### 13. Production Manifest And Evidence
#### 13.1 Required Metadata
Every delivered asset or configuration record contains:
```text
audio_id
authoritative_event_binding
asset_or_configuration_type
bus
priority
source_scope
variant_group
selection_rule
cooldown_ms
concurrency_group
ducking_trigger
caption_key
locale_or_language_neutral
duration_ms
loop_start_sample
loop_end_sample
integrated_loudness
true_peak
rights_record
content_hash
evidence_state
```
Non-looping assets set loop samples to null. Missing caption keys on `P0-P2`
events, unresolved authoritative bindings, duplicate IDs, and absent rights
records are blocking manifest errors.
#### 13.2 Planned Release-Master Count
| Domain | Planned mastered deliverables |
|---|---:|
| music | 150 |
| ambience | 410 |
| shared and content-bound SFX | 1,240 minimum |
| language-neutral recruit efforts | 128 |
| localized system/announcer voice | 64 |
| **Total** | **1,992 minimum** |
The separate 144-recording raw SFX source library is not included in release
master totals. Rejected takes, mix revisions, localization retakes, source
sessions, and runtime compression variants are tracked but not counted as
distinct release masters.
#### 13.3 Evidence States
```text
specified -> source_rights_cleared -> recorded_or_composed -> edited
-> machine_checked -> human_selected -> mastered -> imported -> bound
-> runtime_observed -> human_listened -> device_verified -> release_accepted
```
Evidence is monotonic per asset and per configuration. Machine checks cannot
set `human_listened`; a screenshot of a waveform cannot set
`runtime_observed`; one device cannot set `device_verified` for the matrix.
#### 13.4 Production Sequence
1. Resolve the event binding and approve its semantic role.
2. Record source, rights, performer, toolchain, and provenance.
3. Produce at least two candidates for every signature family and document the
selection reason.
4. Check file format, channels, leading silence, tail, peak, loudness, and loop
markers automatically.
5. Listen in its intended state before mastering the selected candidate.
6. Import with the manifest-defined bus, priority, cooldown, and caption.
7. Observe real transitions and idempotent receipts in runtime when runtime work
is separately authorized.
8. Perform fatigue, masking, mono, low-volume, interruption, and route-change
sessions on the device matrix.
9. Retain rejection reasons and do not promote evidence by assumption.
### 14. Acceptance Gates
- [ ] All 32 music suites and 150 stems/cues have authored roles, loop or
handoff markers, regional separation, and state transitions.
- [ ] All 76 ambience configurations and 410 ambience masters have entry,
steady, exit, density, and progression behavior.
- [ ] The 228 shared SFX IDs are present exactly once and the 424 content-bound
identities expand to the required 42 professions, 60 artifacts, 100
ordinary/elite enemies, and 16 bosses.
- [ ] All 36 traits and 320 equipment items have explicit audio mapping rows,
even when their mapping reuses a shared event.
- [ ] The 1,240 minimum SFX renders follow the declared variation classes,
cooldowns, concurrency, priority, and transaction rules.
- [ ] Voice delivery is exactly 192 release masters until a separately
approved scope revision; generated recruits require no bespoke speech.
- [ ] Shop, recruit, equipment, party order, automatic battle, casualty,
reward, recovery, save, and each regional progression workflow passes the
Section 12 observation.
- [ ] Master and per-bus mute, captions, mono, low volume, three dynamic-range
presets, pause/resume, interruption, background/foreground, output route
change, and headphone unplug preserve state truth.
- [ ] Ten-repeat loop checks, 20-minute suite listens, a 30-minute automatic
battle fatigue session, and a 50-action shop/recruit repetition session
pass on speakers and headphones before bulk production proceeds.
- [ ] Machine, human, runtime, device, rights, and release evidence remain
separate and no unchecked state is represented as accepted.
Human listening, casting, rights clearance, localized performance approval,
runtime integration, device verification, packaging, and release acceptance
remain open gates outside this design Goal.