Files
SoundGame/docs/design/05-rpg-addendum.md
T
2026-10-01 23:26:47 +08:00

132 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 05c · 《剑与声》增补规范(26 号对齐)
> 补 [05-rpg-chapter1.md](05-rpg-chapter1.md):战斗事件×音效、无声前摇、amb 与 BGM、流程细节。与主文档冲突时:**数值与资产以 chapter1 为准;交互以 26 号 + 05 号 §0 为准。**
---
## 0. 设计单增量
格挡教学手势=前摇内单击。无声敌人窗口=系统 `danger` earcon(必出声)+ 可选震动补充。防御指令全平台兜底。回执 ok/invalid/busy ≤100ms,禁止只震。
---
## 1. 战斗事件 × 音效 × 回执(震动只能补充)
手势识别震(swipe/confirm)由 gesture.js 内置,下表不重复。
| 战斗事件 | sfx | 回执 | 震动(补充) | 语音 |
|---|---|---|---|---|
| 遭遇开始 | — | — | — | `btl_start_<enemy>` |
| 指令切换 | — | `ok` 或报名即 silent-ok | swipe 内置 | `cmd_*` |
| 攻击命中 | `atk_swing` + `atk_hit` | silent-ok | — | 半血/死亡见下 |
| 破空斩 | `skill_slash` | silent-ok | — | mp 不足 `btl_nomp` |
| 防御指令 | — | `ok` | — | 无播报,下回合减伤自明 |
| 金疮药 | `potion` | silent-ok | pickup | 无药 `btl_noitem` |
| **有声前摇** | `tel_<enemy>` | — | 可选一次 `beat` | — |
| **无声前摇开窗** | **`danger` earcon(系统合成,必响)** | — | 可选 danger 型 | — |
| **格挡成功**(窗口单击或同向滑) | `parry` | silent-ok | confirm 可选 | — |
| 窗口内无效手势 | — | `invalid` | error 可选 | 该格首次:「现在点一下挡住。」 |
| 受击未格挡 | `hurt` | — | hit 可选 | 降档才 `st_hp_mid/low` |
| 敌方半血 | — | — | — | `npc_*_half` / Boss §4 |
| 击杀 | `enemy_die` | — | success 可选 | `btl_enemy_die` |
| 胜利 | `victory` | — | — | `btl_win` + `btl_loot_*` |
| 升级 | `levelup` | — | success 可选 | `btl_levelup` |
| 逃跑成功 | `flee` | silent-ok | — | `btl_flee` |
| 逃跑失败 | — | `invalid` | error 可选 | `btl_noflee` 或 `btl_flee_fail` |
| 战败 | `hurt` | — | hit 可选 | `btl_lose` → `btl_lose_hint` |
**前摇窗口标识**:有声敌人靠 `tel_*`;无声敌人靠 **danger earcon**。iOS 无震动:**零信息损失**——earcon + 格挡单击 + 防御指令都在。废止「iOS 无声敌人不可格挡」。
---
## 2. Boss 无声前摇协议(影卫 / 白无瞳)
| 时刻 | 声音(主) | 震动(补充) |
|---|---|---|
| 窗口开 t=0 | `danger` earcon | 可选 danger 脉冲 |
| 窗口中点 t=0.5s(听风剑则 0.65s) | 可选极轻 nudge,不得新语言 | 可选 heartbeat |
| 格挡成功 | `parry` | confirm 可选 |
| 未格挡关闭 | `hurt` | hit 可选 |
规则:
1. 只有无声敌人用 danger earcon 当窗口;有声敌人只用 `tel_*`,不要叠 danger(danger 语义=「听不见招,但系统告诉你现在挡」)。
2. **防御指令对所有平台必要**(减伤 50%,不看时机)。不是 iOS 专属补丁。
3. 听风剑窗口 1.0→1.3s,中点顺延。
4. 判定与有声相同:窗口内单击或(有方向时)同向滑。无声敌人无方向,只认单击。
5. NPC 进场句可暗示「点一下」或「选防御」,**不要教双击、不要暗示只有震动能挡**。
---
## 3. 音频层叠(保留裁定,对齐 10 号)
| 场景/状态 | bgm 层 | amb(sfx loop) |
|---|---|---|
| village | `bgm/village` | `amb_village`(bgm=0 时垫底) |
| 其他探索 | `bgm/explore` 0.35 | `amb_<scene>` |
| 普通战斗 | `bgm/battle` | amb 停 |
| Boss | `bgm/boss` | amb 停 |
| 章结算 | `bgm/ending` | amb 停 |
| 玩家回合 | battle 不切 | —;起等待声或靠指令名 |
`bgm=0`:不加载任何 `bgm/`;amb 仍循环。等待声、回执、earcon 仍在。amb 实现:`audio._load` + BufferSource loop 接 `_sfxBus`。
整条语音链期间 BGM duck,句间不得抬回。
---
## 4. Boss 阶段转换(保留)
| Boss | 阶段 | 触发 | 表现 |
|---|---|---|---|
| 黑风寨主 | 二阶段 ATK 10→12 | HP≤50% | warning 可选 + `npc_boss1_2` + `tel_boss1` playbackRate 1.2 |
| 腐沼祭主 | 二阶段 | HP≤50% | 召唤 2 毒蛛入连战队列 + 半血句 |
| 白无瞳 | 三阶段完全无声 | HP≤50% / ≤25% | 每阶段 warning 可选;三阶段进场教学句后走 §2 earcon 协议 |
---
## 5. 补充台词(ch2/3 最小集,不改 ch1 voice-ids 文件)
| id | 角色 | 全文 | 用途 |
|---|---|---|---|
| `npc_boss3_warn` | 旁白 | 他没有声音。竖起耳朵也没用。听到叮一声,点一下挡住。来不及,就选防御。 | 白无瞳三阶段;明示单击+防御,不提双击/只靠手震 |
| `btl_half_shaman` | 蛊师 | (ch2 表补全文) | 半血 |
| `btl_half_shadow` | 影卫 | (ch3 表补全文) | 半血 |
ch2/3 表格式沿用 ch1 voice-ids。
---
## 6. 流程细节
1. 上滑链:探索 `st_lv_*` → `st_hp_*` → `st_gold_*` → `st_weapon_*` → `st_armor_*`,可打断。
2. 战斗上滑:己方档 + `foe_hp_high/mid/low` 三句(不复用玩家档)。
3. 连战:第一只死 → `btl_enemy_die` → 不停 BGM → 下一只 `btl_start_*` + 前摇;HP/MP 不回,指令重置为攻击。
4. `stats.playSec`:探索+战斗实际时长,菜单/结算不计。
5. schema≠1:可 `sys_new_game` 重开,stats 保留。
6. 探索菜单=左右滑+单击(与 00 §5.4 同构)。战斗下滑=逃跑,不设菜单。
7. 教学战看门狗:每步静默走三档,不原样复读长说明书;第 3 次演示通过。
---
## 7. 施工核对
- [x] 场景图 / 遭遇 / 10 状态机(chapter1)
- [x] 数值 + 装备节点
- [x] 存档 + summary + battlesWon
- [x] 格挡=窗口单击;无声=earcon+防御
- [x] amb 走 sfx loop + 10 号 BGM 表
- [ ] ch2/3 台词与正文
---
## 8. 废止
| 废止 | 改为 |
|---|---|
| 格挡成功靠「双击无延迟」 | `doubleTapWindow: 0` 或前摇期 immediateTap;手势是单击 |
| 无声窗口 = 仅 danger 震;iOS 不可格挡 | earcon 必响;防御全平台 |
| 「绝不回退提示音」理解成无声反馈 | 回执与 earcon 永远出声 |
| 探索期取消 `bgm/explore` 与 10 号打架 | 10 号:explore 宏观 + amb 景 |
| 菜单双击执行 | 单击确认 |