# 音序回响 round1 取证 · 状态维度候选清单(通读 game.js + 02 号文档) > 阶段一第 1 步产物:把"玩家可能不知道自己在哪"拆成状态维度,逐维度对照 game.js > 现有信号(语音/earcon/震动/静默)找盲区。最终 S 编号清单见 findings.md(带 live 证据)。 ## 维度 1:当前轮次 / 本序列长度 - 现有信号:announce 阶段播 `round_NN`/`round_more` 整句(game.js `_nextRound`)。 - 盲区: - 轮次播报**可单击跳过**(`_tapSkipsVoice` announce=true,12 号文档)——急性子玩家 从此失去轮次信息;序列长度 = round+1,**长度信息也随之丢失**(playback 期间不知 该听几个音)。 - 播报被跳/缺失兜底路径(2.5s 看门狗)同样没有轮次信息落点。 - 第 20 轮后只有"新的一轮"兜底,长度仍在涨,玩家对"还要记多少"完全无感。 - 风险级候选:P1(不致命但全程迷失)。 ## 维度 2:播放阶段 vs 答题阶段边界 - 现有信号:序列播完 400ms 后 `CONFIRM` 震(game.js:348)+ 向导层 `turn` earcon (guide=full/standard 才有);第 1 轮另有 `your_turn` 语音。 - 盲区: - **guide=off 时 turn earcon 静默**(Guide no-op),非第 1 轮只剩一次 confirm 震; - **iOS 无震动**(00 §2.5 静默降级)→ 第 2 轮起边界**零信号**; - 占用预告句(gd_occ_*)插在 confirm 之后、input 之前:语音播完才 `_toInput`, 玩家听到"这一轮,向上滑是作答"时**还不能答**(phase 仍是 playback,手势被吞), 句尾与可输入时刻之间无任何标记。 - 风险级候选:P1(边界误答被吞 → 维度 6)。 ## 维度 3:自己刚输入的音符是否被收进答案(逐音进度) - 现有信号:input 阶段每手势即时回声放对应音色(game.js:421)+ 引擎内置识别震 (swipe/confirm)。 - 盲区: - 回声 = "系统收到了",但**"对了几个 / 还剩几个"无任何信号**(无 X-of-N 进度 earcon/震动分档)。长序列(第 10 轮起 ≥11 音)复现中途断片时,玩家不知道自己 答到第几个音,只能从头再来或赌。 - 回声音色与答错音色的关系:答错的瞬间即触发 retry/gameover(有反馈),但 "当前已确认正确的进度"在复活重听后重置,玩家必须记住自己之前答到哪—— 实际上重听要求**整轮重输**(inputIdx=0),"我上次答对了几个"成为无效信息但 玩家并不知道规则是"清零重输"还是"接着答"(教学未讲)。 - 风险级候选:P1。 ## 维度 4:答对 / 答错即时反馈 - 现有信号:整轮对 → success 震 + 表扬句(每轮);错 → error+warning 震 + retry_use(有机会)或 gameover 链(无机会)。 - 盲区: - 对错反馈**以整轮为单位**,中途无逐音对错确认(设计使然,simon 经典规则); 可接受,但与维度 3 叠加放大迷失。 - iOS 无震:答错后 retry_use 语音前有最长 300ms 静默+无震,"刚才那下算数吗" 要靠语音第一句"错了。"兜底——可过。 - 风险级候选:P2。 ## 维度 5:复活机会 / 免费重听余额(两本账) - 现有信号:消耗时如实报(gd_chances_left1/left0/chances_out/chance_plus/retry_use)。 - 盲区: - **余额不可主动查询**:input 阶段六手势全是答题输入,**没有 status key** (space-polish P1 同款诉求)。账目只在"用掉那一刻"播报;记忆游戏脑负荷高, 隔几轮后"我还有几次免费/几条命"必然遗忘,而遗忘的代价是猝死或不敢重听。 - 答错自动消耗路径(retry_use)与主动重听路径分账,两账合计余额(免费+真机会) 从未作为整体报过。 - 风险级候选:P1。 ## 维度 6:手势被吞(非输入阶段做手势) - 现有信号:无。playback/announce/roundend 阶段手势**静默忽略**(game.js:154 default 分支;02 §4.1 裁定"播放期误触静默忽略,不给 ERROR 震")。 - 盲区:00 宪法 §5.4"做了手势 3 秒内必须有反馈"在此被设计豁免;急性子玩家在 播报/重听语音链期间作答**零反馈**(连吞数下都无声无震),既不知"被吞"也不知 "现在能答了没有"。round1 live 已有 P1 前科(答题阶段长按 9 秒零反馈→已修为 error 震兜底),但**播放期/播报期**仍是零反馈区。 - 风险级候选:P1(压力线必现)。 ## 维度 7:连击 / 最佳纪录 - 现有信号:破纪录时 `gd_record`(局中,每局限 1 次)+ 结算 `new_record`;best 存 localStorage/服务器,局内不报具体数值。 - 盲区:第 2 局起玩家不知道自己 best 是几轮;"离纪录还差几轮"无信号。 (simon 无连击概念,维度弱。) - 风险级候选:P2。 ## 维度 8:菜单 / 教学 / 结算阶段边界 - 现有信号:菜单逐项播报(menu_open/restart/home/back);教学逐音教-练; 结算五句链(gameover/score_band/new_record/replay/rules_prompt)。 - 盲区: - 教学→对局过渡:t7 链播完**静默**直进 round_01,中间无标记("教学结束"信号 靠 round_01 本身承担,可过)。 - 菜单"返回游戏"回结算页后,rules 语音链可能仍在播(_speak 无守卫),此时 单击=重开(言行一致 P0 已修);但**菜单内上滑听规则**后双击确认项,选中项 与规则语音同时播,语义叠话(P2 瑕疵)。 - 风险级候选:P2。 ## 维度 9:input 阶段静默(不知"系统在等") - 现有信号:5s 看门狗 nudge + gd_relisten(占用轮只 nudge);25s turn+confirm。 - 盲区:guide=off 无看门狗(不挂定时器),挂机=永久静默(设计承认:"挂机永久 静默")。该维度在 guide 档内已覆盖,off 档是玩家自选,不另列。 - 风险级候选:不修(既定裁定)。 ## 交叉观察(转写 transcript.md 预读) - 行 64-75 / 90-95 / 105-113:复现全程只有回声 tone + 结尾 success 震;"已对上 k/N"只存在于 harness describe()(行 64「已对上 0/2」是**剧本旁白,玩家听不到**)—— 维度 3 的直接证据形态。 - 行 65-71:R1 静默 5s 只有 nudge earcon(占用轮无建议语音);非占用轮行 153-156 5s 即有 gd_relisten 语音——看门狗覆盖尚可。 - 行 136 / 162 / 190-191 / 251:机会/免费重听账目只在消耗/获得时播报(维度 5)。 - transcript 未覆盖 gameover/菜单/复活耗尽(剧本收工于第 7 轮边界)——由 live 局 A(打到高轮次+结算+菜单)与局 B(乱按压力线)补证。