Files
SoundGame/docs/design/26-apply-escape.md
T
xsl ee9d7efe57 feat(playbook): 26 号交互手册首批落地——storyline/escape/simon 全面重构 + 引擎六模块
按 docs/design/26-audio-interaction-playbook.md 重构三款游戏(对白重写 + 双性别语音重生成 580 文件)。

引擎层(web/engine/,其余 12 款游戏零改动):
- floor.js 发言权管理器:SPEAKING/YOUR_TURN/BUSY/ACTION 四态、交接提示音、
  等待声(220/330Hz 嘟-嘟,20s 后放缓)、跨链音乐压低(audio.js holdDuck)
- receipts.js 输入回执三件套(ok/invalid/busy,100ms 内,原则 4)
- confusion.js 迷茫检测(乱点/无效/静默信号 → 三级接管,§4.5)
- hints.js 等待点 + 三档提示(full→short→提示音,30s 台账跨点去重,原则 9)
- novice.js 手势解锁阶梯(up/down/doubletap 跨局持久,§4.3)
- pipeline.js 输入管道(回执收口、防连点 400ms、双击折算、explainOnce)

游戏层:
- storyline R3:开场 71.7s 规则念白 → 3 秒内动手;双击=重播(反模式5)废除;
  抉择点三档提示+主动重听;断点存档复述(§4.12)
- escape R3:单击=检查+使用合并(双击用法废除);长按=我在哪(四向玩法裁定);
  撞墙归因每方向一次(原则 7);迷茫 L2 缩小/L3 演示;坐标存档续玩
- simon R3:新手三音色,按实力渐进解锁(+up/down/dt);失败表替代机会账
  (归因 2s 内→免费重听→放慢→结算,原则 15);播放期手势=busy 回执

测试:三款 playtest 重写(含 §6.2 乱点机器人:无声操作/被动重复/打断失败全 0,
首操作 ~2s);guide.test 改为 Guide 层单测+rhythm/space 段。全部通过
(38+33+22+72+19+35 断言)。设计单见 docs/design/26-apply-*.md。
2026-10-01 08:11:12 +08:00

5.5 KiB
Raw Blame History

26-apply · 《暗室》重构设计单(26 号文档落地)

按 26 号文档附录 C 填写。交互规则权威来源:26-audio-interaction-playbook.md。

1. 一句话核心动作

朝四个方向滑动在房间里移动,单击检查和使用,按住屏幕问路。

2. 玩家可感知的状态(3 个)与声音身份

状态 听感 来源
探索(轮到你) 当前房间的环境音常响(水滴/风/电流) §4.1 ACTION
描述在播(游戏在说) 房间描述语音,BGM 压低跨链 §4.1 SPEAKING
撞墙/无效 闷响 + invalid 回执(低「咚」) §4.2

3. 新手手势表(四向滑动是玩法 → §4.3 裁定:帮助换到长按)

手势 含义 说明
四向滑动 移动(核心玩法,不按阶梯锁) swipeCore
单击 检查 + 使用(合并;旧「双击=用物品」废除) 站对房间即用
长按 我在哪、我该干嘛(目标 + 方位一句话) longpressCore
双击 (阶段3解锁后)重听最近描述 未解锁按单击处理

4. 状态 × 手势矩阵(新手期)

状态 \ 手势 单击 四向滑动 长按 双击(未解锁)
引导答题 按步骤答(纠错句)/ invalid 按步骤答(脚步/闷响) 帮助 按单击处理
探索(ACTION) 检查+使用(环境音/描述即反馈) 移动=脚步声(silent-ok);撞墙=闷响+invalid+归因 帮助(目标+方位) 按单击处理
描述在播 跳过这句 + ok 打断并移动 打断,帮助 按单击处理
结算 重新开始 + ok invalid + inv_settle 重听结算 按单击处理
菜单 换一项 + 播报 右=确认 / 左=上一项 / 其余 invalid 重听菜单说明 按单击处理
迷茫 L2 期间 照常 只放行接管方向,其余 invalid(不移动) 照常 照常

5. 等待点配置表(引导期)与探索期接管

引导等待点(6s/15s 两档,short=「滑一下。」/「向左滑。」):

步骤 期待 指令句
0 任意滑动 g0_new「黑暗。朝任意方向,滑一下。」
1 撞墙×2(教无效反馈) g0b(+ wall 归因)
2 左滑 g3_new「现在,向左滑。」
3 下滑 g4_down「对。再向下滑。」
4 单击 g5_inspect → g5_key + g7_goal_new

探索期(无固定等待点,静默喂迷茫信号 40s 起每 20s)三级接管:

级 做什么 台词
1 说目标方位(30s 台账去重,说过就提示音) nav_*「向右滑。」
2 只放行第一导航方向 sys_only_*「现在,只要向左滑。」
3 听我做一次:游戏自己朝目标走一步 sys_demo + 脚步声 + sys_now_you

6. 首 3 分钟逐秒脚本

时间 游戏说 / 播 期待玩家做 没做 做错
0~3s 环境水滴声 →「黑暗。朝任意方向,滑一下。」 任意滑动 6s:「滑一下。」 点按:纠错句
3~12s 脚步声 →「对。你被困在地下设施里。再滑两下,试试墙。」 滑动撞墙 同上 方向错也有闷响(试错无代价)
12~25s 闷响 + 「那边是墙,换个方向。」+ 方位句 ×2 →「现在,向左滑。」 左滑 「向左滑。」 其他方向:纠错
25~40s 脚步 →「对。再向下滑。」→ 储物间环境音 下滑 同上 纠错
40~60s 「听到水声了吗?单击一下,仔细检查这个房间。」→ 拾取音 →「你摸到了一把钥匙!」 单击 「单击。」 滑动:纠错
60~90s 「找到能用钥匙打开的东西。迷路了,按住屏幕。」→ 自由探索 探索 40s 起接管 撞墙归因
90~180s 首到房间描述、谜题链推进(钥匙→铁柜→保险丝→电箱→大门) 探索 接管三级 归因 + 就近重试

节奏检查 ✓:3s 内动手;首成功=第一次滑动(脚步声);每 30s 有可听进展(新房间环境音/描述)。

7. 失败表

失败类型 判定 归因句 回到哪里 新手期代价
方向错(撞墙) 越界 wall + wall_dir_*(每方向整局一次,之后只闷响+回执) 原地 无
用错地方 站位不对 (合并进检查语义:描述告诉你这里有什么) 原地 无
迷路 静默/乱点信号 接管 L1→L2→L3 原地 无

8. 台词表(类别标注)

  • critical:g0_new(开场指令 <3s);结算承诺段 again(+解锁教学)
  • content:g0b/g3_new/g4_down/g5_、room_、empty_、found_key、unlock_cabinet、fix_box、escape、time_band、replay、start_room、inspect_、gd_*_dir、gd_next_fuse
  • hint:lp_(长按帮助)、nav_、sys_only_*、sys_continue_ask、g_hint_swipe、menu_help
  • feedback:wall、wall_dir_、g_wrong_、guide_wrong_、guide_blunt_swipe、inv_、sys_demo、sys_now_you
  • 完整清单见 tools/gen_voice_dual.py ESCAPE_LINES(74 句 × 双性别)。

9. 断点复述句

  • 保存:每步移动/进展写 soundgame.escape.save(坐标 + 谜题状态 + 用时)。
  • 回来:sys_continue_ask;单击继续(恢复坐标 + lp 帮助句作复述),右滑重新开始。

10. 测试记录

  • 无头 playtest:web/escape/test/playtest.mjs(32 断言,乱点机器人:无声操作 0 / 被动原句重复 0 / 第一次成功 2.1s;撞墙归因按原则 7 只解释一次)。
  • 真人冷启动:待测。