# 02 · 《音序回响》重设计(26 号对齐) > **给开发者的实现要点摘要** > 1. **交互权威**:26 号手册。设计单摘要见 [26-apply-simon.md](26-apply-simon.md)。 > 2. **玩法保留**:听一串音色,原样复现。对局/教学**无 BGM**;仅菜单与结算挂 `bgm/menu`(0.3)。六手势音色映射保留,但**按实力渐进开放**,新手只有单击/左滑/右滑。 > 3. **帮助=长按**(六手势都是答题输入)。新手期无双击音色;`doubleTapWindow: 0`。 > 4. **失败不扣机会账**:第 1~2 次答错=真话归因 + 免费重听整串;第 3 次放慢;再错才结算。新手期零资源消耗。 > 5. 听序列 = Floor `BUSY`(任何手势=`busy`,序列不变);答题 = `YOUR_TURN`(`input_open` + 风铃 + 等待声)。回执 ≤100ms,禁止只震不响。 --- ## 0. 设计单(26 号附录 C) ### 0.1 一句话核心动作 **听一串音色,原样复现。** ### 0.2 玩家可感知的状态(3 个) | 状态 | Floor | 听感 | 第一次教 | |---|---|---|---| | 听序列 | `BUSY` | 音色序列;手势=`busy`「嗯」 | 「先听,不要动手。」 | | 轮到你 | `YOUR_TURN` | `input_open` → `turn` 风铃 → 等待声;答题立即回声 | 「听到这个声音,就是轮到你了。」 | | 结算 | — | `gameover` + 结算链 + menu pad | — | 不要用 BGM 区分听/答。对局全程无 BGM。 ### 0.3 新手手势与音色阶梯 全部六个手势在本作都是**音色**。帮助换到长按。音色按历史最佳轮数开放,一次只学一样: | 音色 / 手势 | 解锁条件 | |---|---| | 单击 / 左滑 / 右滑 | 阶段 0(选项 ≤3) | | 上滑 | 清过第 1 轮 | | 下滑(同时=菜单手势,仅结算/菜单相位) | 清过第 3 轮;对局答题中下滑仍是音色(阶段 2 后结算才开菜单) | | 双击 | 清过第 6 轮(阶段 3 专属高级音色);未入池按单击处理 | | 长按 | 帮助:状态句(轮次/段位),不闭窗、不耗资源、不判错 | 新音色第一次进序列时现场教一句(「向上滑,是这个声音。」)马上用。`best>0` 的老玩家跳过已会的教学。 ### 0.4 状态 × 手势矩阵(新手期) | 状态 \ 手势 | 单击 | 已解锁滑动 | 长按 | 双击(未解锁) | 连点 / 乱滑 | |---|---|---|---|---|---| | 教学指令 `critical` | `busy` | `busy` | 帮助 | `busy` | `busy` | | 教学答题 | 答题 / 纠错(回声即反馈) | 答题 / 纠错 | 状态句 | 按单击处理 | 计入迷茫 | | 播报 / 序列 `BUSY` | `busy` | `busy` | `busy` | `busy` | `busy`(序列不变) | | 答题 `YOUR_TURN` | 作答(回声=`silent-ok`) | 作答 | 状态句 | 未入池=`invalid`+首次解释 | 乱滑计入迷茫;有效作答照收 | | 结算 | 再来一局 | `invalid`+首次解释 | 重听结算 | 按单击处理 | 只处理第一下 | | 菜单 | 确认 | 左右滑切换 | 重听说明 | 按单击处理 | `busy` | ### 0.5 等待点 | id | 期待 | `_full` | `_short` | 静默 | L2 | L3 | |---|---|---|---|---|---|---| | `tut0` | 单击 | (指令刚说过) | 「点一下。」 | 6s / 15s | 单击 | 提示音 | | `tut_` | 当前教的音色 | 教学句 | 「再试一次。」 | 6s / 15s | 该手势 | 提示音 | | `input` | 已解锁音色 | 「轮到你了。」 | (提示音) | 10s / 25s | 免费重听整串 | 放慢 + 重听 | | `settle` | 单击 | 「单击,再来一局。」 | 「再试一次。」 | 20s / 45s | — | 提示音 | | `menu` | 单击/左右 | 菜单说明 | 同左 | 20s / 45s | — | 提示音 | ### 0.6 首 3 分钟逐秒脚本 | 时间 | 游戏说 / 播 | 期待 | 没做 | 做错 | |---|---|---|---|---| | 0~3s | 「音序回响。点一下屏幕。」(`critical`) | 单击 | 6s:「点一下。」 | 滑动:`invalid`+「先点一下。」 | | 3~10s | 单击音色回响(第一次成功)→「向左滑,是这个声音。」+ 音色 | 左滑 | 「再试一次。」 | 纠正(30s 内不重播同一句) | | 10~30s | 「对。」→ 右滑、单击各练一次 | 左/右/单击 | 短句档 | 纠正 | | 30~40s | 「记住顺序,原样复现。答错,我们就再听一遍。」→「第一轮,听好了。」→ 2 音序列(仅已教音色) | 听 | — | 播放期=`busy` | | 40~50s | `input_open` + 风铃 + 等待声 | 复现 2 音 | 10s:「轮到你了。」 | 见失败表 | | 50~90s | 每轮 +1 音;答对 ≤4 字肯定 | 复现 | 三档 + 接管 | 归因 + 免费重听 | | 90~180s | 第 4 轮后可教学菜单(结算相位);序列渐长;上滑音色在清第 1 轮后入池 | 复现 | L2 免费重听 / L3 放慢 | 第 3 次失败放慢 | 3s 内动手;第一次成功=第一击回响 ≤10s;每轮有进展回报。 ### 0.7 失败表(取代机会经济) | 失败次数(本局同序列) | 处理 | 台词 | |---|---|---| | 1~2 | 2s 内归因(「错了。是向左滑。」)→ 免费重听整串,进度清零重输 | `wr_*` + 重听 | | 3 | 「我放慢一些。」→ 间隔 ×1.6,序列可减 1 音 | `slow_down` | | 再错 | 结算(成绩段位 + 破纪录 +「单击,再来一局」) | `gameover` + `score_band*` | 归因必须点名真实按错的音色。没出手不得说「错了」。新手期不扣「机会」、不加「机会加一」。 ### 0.8 台词类别 - `critical`:`t0_new`、各教学指令(每句 ≤3s)、结算承诺段。 - `content`:`round_01..20`、`score_band1..6`、`gameover`、`new_record`、`t_ok`、`correct`。 - `hint`:`your_turn`、`t_retry`、状态查询句、`sys_demo`、菜单说明。 - `feedback`:`wr_*`、`slow_down`、教学纠正、`inv_busy`。 全文见 `SIMON_LINES` / [02-simon-voice-ids.md](02-simon-voice-ids.md)。停用「机会加一 / 重听机会用完 / 双击重听」旧句。 ### 0.9 断点复述 对局不存档(单局 2~5 分钟)。`soundgame.simon.best` 跨局持久,决定音色池与是否跳过教学。summary:「最佳成绩:第 N 轮」。 ### 0.10 测试 `web/simon/test/playtest.mjs`。关键路径:3s 内单击 → 只教已解锁音色 → 第 1 轮 2 音复现 → 结算。序列期任何手势=`busy`。 --- ## 1. 现版诊断(问题仍在,解法已换) 1. BGM 与音色抢通道 → **对局不播 BGM**(保留,与 10 号一致)。 2. 数字拼接 → 轮次 1–20 整句 + 无数字兜底;成绩 6 段整句(保留)。 3. 8 句连播教学、零交互 → 交互式,一次一音色,且**先只教 3 个**。 4. 错一音即死 / 「机会账」+ 双击耗机会 → **免费重听 + 第三次放慢**,无机会货币。 5. `sfx/correct`/`wrong` 与音色同质 → 对错用语音短句 + 回执;内容结束音 `sfx/gameover` 保留。 --- ## 2. 音频层 - 对局不加载 BGM。间隙保持静默,利于记忆。 - 六音色映射不变:上=上行琶音 / 下=下行低音 / 左=左声道弹拨 / 右=右声道弹拨 / 单击=底鼓 / 双击=双连响。**未解锁的音色不进序列、不进教学。** - `sfx/gameover` 保留。`sfx/correct`、`sfx/wrong` 不作为对错主通道。 - `sfx/input_open`:进入答题的边界标记(S2 保留)。无语音链的轮次不要再叠 `turn` earcon 与 `input_open`。 - 播放序列时每个音可叠极轻 `beat` 震作 chunking;**回执声仍要响**(播放期误触=`busy` 声,不再静默忽略)。 --- ## 3. 旁白整句(保留句数,改交互口径) | 类型 | 句数 | 说明 | |---|---|---| | 轮次 | 21 | 「第一轮,听好了。」…「第二十轮」;>20:「新的一轮,听好了。」 | | 成绩 | 6 | 按完成轮数分段,原文档位保留 | | 新纪录 | 1 | 「新纪录!」 | | 教学 | 按已解锁音色,一次一句 | 禁止开场把六种声音一次讲完 | | 流程 | 含「轮到你了。」「单击,再来一局。」 | 删除机会账相关句 | | 反馈 | 「对。」「错了。是向左滑。」 | 肯定 ≤4 字;归因含正确手势 | SPEAKER 常量沿用 female=Serena / male=Uncle_Fu。 --- ## 4. 播放 / 答题节奏 **播放 `BUSY`**:序列不可打断。任何手势=`busy`,序列不变。最后一个音完 400ms 后 `yieldTurn`:`input_open` + `turn` + 等待声。 **答题 `YOUR_TURN`**: | 事件 | 声音 | |---|---| | 做出已解锁手势 | 立即回声该音色(`silent-ok`) | | 整轮正确 | 每轮「对。」或仅提示音(连续 3 次对后撤离语音) | | 答错 1~2 | `invalid` 语义用内容错音可选 + 归因 + 免费重听 | | 长按 | 状态句,不闭窗 | | 未解锁手势 | `invalid` + 该格首次解释 | 结算链只在结算屏交付;进菜单则挂起,回结算屏补播(S6 保留)。承诺「单击,再来一局」与相位一致。`your_turn` 每局教一次,复活/重听不再重念(S7 保留)。 --- ## 5. 交互式教学(只教已解锁) | 步 | 内容 | |---|---| | T0 | 「音序回响。点一下屏幕。」立刻动手 | | T1 | 单击音色 → 玩家点一次 | | T2 | 左滑音色 → 玩家左滑 | | T3 | 右滑音色 → 玩家右滑 | | T4 | 「记住顺序,原样复现。」→ 第一轮 2 音 | 上/下/双击**不在首局教学出现**。做对:「对。」马上下一步。做错:纠正,不惩罚。同一手势错 3 次:迷茫 L3 只给提示音或演示该手势。 禁止:下滑跳过教学绑在「向下=音色」上。回访者 `best>0`:开场「点一下开始」,跳过已会的音色课。 --- ## 6. 难度曲线(保留数字,去掉机会) ``` interval(round) = max(420, 700 - (round - 1) * 25) // 第 12 轮到 420ms 下限 ``` - 长度 = round + 1,从 2 开始。 - 前 5 轮:禁止同一手势连 3 次;第 1 轮两音不同手势。 - 全轮次:禁止连 4 个同手势。 - 重听序列不变。 - 序列只从**当前已解锁音色池**抽样。 `best` 写进度存储,带 `summary`。 --- ## 7. 状态机 `tutorial → announce → playback → input → (replay) → roundend → … → gameover` 菜单:阶段 2 以后,结算下滑呼出;左右滑切换、单击确认。废止双击确认、双击耗机会重听。 --- ## 8. 资产变动 - 不播 `bgm/theme`。 - 新录/停用:机会账句、六音色一次讲完的旧 T7、双击重听教学。 - 保留:6 个 `tone_*`、`sfx/gameover`、`sfx/input_open`、轮次/成绩整句、状态查询分档句(删「重听账目/机会桶」枝,只保留轮次与进度档)。 --- ## 9. 废止清单 | 废止 | 改为 | |---|---| | 每局机会货币;双击耗机会重听;答错扣机会 | 1~2 次免费重听;第 3 次放慢;无机会账 | | 开场教完全部六音色 | 先 3 个,其余按轮次解锁 | | 新手期双击=重听或答题 | 双击不存在;入池前当单击 | | 播放期误触静默 | `busy` 回执,序列不变 | | 对错只靠震动 / 删除提示音后无声 | 回执 + 短语音;震动可叠加 | | 菜单单击循环+双击确认 | 左右滑+单击 | | `your_turn` 每轮重念 | 每局一次 | | 上滑与双击双义重听 | 帮助=长按;主动重听=迷茫 L2 或阶段 3 双击(仅重听当前序列完整播放,不绑破坏) | S1–S7 状态透明层(`input_open`、长按查询、结算链看守)在不与上表冲突的范围内保留。