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

6.1 KiB
Raw Blame History

05c · 《剑与声》增补规范(26 号对齐)

补 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. 施工核对

  • 场景图 / 遭遇 / 10 状态机(chapter1)
  • 数值 + 装备节点
  • 存档 + summary + battlesWon
  • 格挡=窗口单击;无声=earcon+防御
  • amb 走 sfx loop + 10 号 BGM 表
  • ch2/3 台词与正文

8. 废止

废止 改为
格挡成功靠「双击无延迟」 doubleTapWindow: 0 或前摇期 immediateTap;手势是单击
无声窗口 = 仅 danger 震;iOS 不可格挡 earcon 必响;防御全平台
「绝不回退提示音」理解成无声反馈 回执与 earcon 永远出声
探索期取消 bgm/explore 与 10 号打架 10 号:explore 宏观 + amb 景
菜单双击执行 单击确认