按 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。
95 lines
5.2 KiB
Markdown
95 lines
5.2 KiB
Markdown
# 26-apply · 《音序回响》重构设计单(26 号文档落地)
|
||
|
||
> 按 26 号文档附录 C 填写。交互规则权威来源:[26-audio-interaction-playbook.md](26-audio-interaction-playbook.md)。
|
||
|
||
## 1. 一句话核心动作
|
||
|
||
**听一串音色,原样复现。**
|
||
|
||
## 2. 玩家可感知的状态(3 个)与声音身份
|
||
|
||
| 状态 | 听感 | 来源 |
|
||
|---|---|---|
|
||
| 听序列(游戏在说) | 音色序列 + 轮次播报;手势 = busy 回执(「嗯」) | §4.1 BUSY |
|
||
| 轮到你(答题) | input_open 标记音 → 风铃 + 等待声;答题回声即时 | §4.1 YOUR_TURN |
|
||
| 结算 | gameover 音 + 结算链 + menu pad | — |
|
||
|
||
## 3. 新手手势表与音色阶梯
|
||
|
||
全部六个手势在本作都是**音色**(答题输入,§4.3「滑动是玩法」裁定);
|
||
帮助(状态查询)在长按。音色按玩家实力渐进开放(做中学,一次只学一样):
|
||
|
||
| 音色 | 解锁条件(历史最佳轮数) |
|
||
|---|---|
|
||
| 单击 / 左滑 / 右滑 | 新手即有(F3:选项 ≤3) |
|
||
| 上滑 | 清过第 1 轮 |
|
||
| 下滑 | 清过第 3 轮(同时=菜单手势) |
|
||
| 双击 | 清过第 6 轮(同时=重听手势) |
|
||
|
||
新音色第一次进序列时现场教一句(「向上滑,是这个声音。」)马上用。
|
||
老玩家(best>0)跳过教学,做对过的事不教第二遍(原则 11)。
|
||
|
||
## 4. 状态 × 手势矩阵(新手期)
|
||
|
||
| 状态 \ 手势 | 单击 | 滑动×4 | 长按 | 双击(未解锁) |
|
||
|---|---|---|---|---|
|
||
| 教学(指令在播,critical) | busy 回执(等指令说完) | busy 回执 | 帮助 | busy |
|
||
| 教学答题 | 答题/纠错 | 答题/纠错(回响即反馈) | 状态句 | 按单击处理 |
|
||
| 播报/序列播放(BUSY) | busy 回执 | busy 回执 | busy 回执 | busy 回执 |
|
||
| 答题(YOUR_TURN) | 作答(音色回声) | 作答 | 状态句(轮次段位,不闭窗) | 未入池=invalid;入池=第 6 音色 |
|
||
| 结算 | 重新开始(言行一致) | invalid + 解释 | 重听结算 | (阶段3)重听结算 |
|
||
| 菜单 | 换一项 | 右=确认/左=上一项 | 重听菜单说明 | 按单击处理 |
|
||
|
||
## 5. 等待点配置表
|
||
|
||
| id | 期待 | 提示 full | 提示 short | 静默阈值 | L2 | L3 |
|
||
|---|---|---|---|---|---|---|
|
||
| tut0 | tap | (指令句刚说过) | 「点一下。」 | 6s/15s | — | 提示音 |
|
||
| tut_<g> | 当前教的音色 | 教学句 | 「再试一次。」 | 6s/15s | — | 提示音 |
|
||
| input | 全部已解锁音色 | 「轮到你了。」 | (提示音) | 10s/25s | 免费重听整串 | 放慢 + 重听 |
|
||
| settle | tap | 「单击,再来一局。」 | 「再试一次。」 | 20s/45s | — | 提示音 |
|
||
| menu | tap/left/right | menu_help | menu_help | 20s/45s | — | 提示音 |
|
||
|
||
## 6. 首 3 分钟逐秒脚本
|
||
|
||
| 时间 | 游戏说 / 播 | 期待玩家做 | 没做 | 做错 |
|
||
|---|---|---|---|---|
|
||
| 0~3s | 「音序回响。点一下屏幕。」(critical) | 单击 | 6s:「点一下。」 | 滑动:纠错 |
|
||
| 3~10s | 单击音色回响 → 「向左滑,是这个声音。」+ 音色 | 左滑 | 「再试一次。」 | 纠错句(30s 内不重播) |
|
||
| 10~30s | 「对了。」→ 右滑音、单击音各教一个,马上练 | 左/右/单击 | 同上 | 同上 |
|
||
| 30~40s | 「记住顺序,原样复现。答错,我们就再听一遍。」→「第一轮,听好了。」→ 2 音序列 | 听 | — | 播放期手势=busy |
|
||
| 40~50s | input_open + 风铃 + 等待声 | 复现 2 音 | 10s:「轮到你了。」25s:提示音 | 见失败表 |
|
||
| 50~90s | 每轮 +1 音;答对必有表扬句(≤4 字) | 复现 | 三档 + 接管 | 归因 + 免费重听 |
|
||
| 90~180s | 第 4 轮完成 → 解锁菜单教学句;序列渐长 | 复现 | 接管 L2 免费重听 / L3 放慢演示 | 第 3 次失败放慢 |
|
||
|
||
节奏检查 ✓:3s 内动手;首成功=第一击音色回响(≤10s);每轮都有进展回报。
|
||
|
||
## 7. 失败表(替代旧「机会账」经济)
|
||
|
||
| 失败次数 | 处理 | 台词 |
|
||
|---|---|---|
|
||
| 1~2 | 2 秒内归因(「错了。是向左滑。」)→ 免费重听整串 | wr_* + relisten |
|
||
| 3 | 「我放慢一些。」→ 间隔 ×1.6 + 序列减 1 音 | slow_down |
|
||
| 4 | 结算(成绩段位 + 破纪录 + 承诺句) | gameover + score_band + replay |
|
||
|
||
新手期失败零资源消耗(原则 15);归因真话(错的音色名如实说)。
|
||
|
||
## 8. 台词表(类别标注)
|
||
|
||
- `critical`:t0_new、t7_new、教学指令链(t1~t6 各 <3s)、结算承诺段(replay + 解锁教学)
|
||
- `content`:round_01..20、score_band1..6、gameover、new_record、t_ok、correct、gd_clear、gd_record
|
||
- `hint`:your_turn、t_retry、st_b1..4、sys_demo、menu_help
|
||
- `feedback`:wr_*(归因)、relisten、slow_down、t_wrong_*、inv_busy、inv_generic
|
||
- 完整清单见 `tools/gen_voice_dual.py` SIMON_LINES(74 句 × 双性别)。
|
||
|
||
## 9. 断点复述句
|
||
|
||
对局内不设存档(单局 2~5 分钟,微循环自洽);历史最佳跨局持久
|
||
(`soundgame.simon.best`),决定音色池与新音教学。
|
||
|
||
## 10. 测试记录
|
||
|
||
- 无头 playtest:`web/simon/test/playtest.mjs`(21 断言,乱点机器人:无声操作 0
|
||
(播放期也有 busy 回执)/ 被动原句重复 0 / 第一次成功 10.2s)。
|
||
- 真人冷启动:待测。
|