- S2:新增input_open双音柔铃标记「能答了」边界(playback/input边界此前吞手势无标记) - S1/S3/S4:input阶段长按=状态查询(13句status_*分档整句:长度4档×进度4档×账目5档,两本账口径一致,不耗账不闭窗) - S5:announce/roundend非单击手势补error震(00 §5.4三秒反馈律) - S6 P0:gameover下滑进菜单→结算链死锁8.4s修复(结算看守+挂起补播) - S7:your_turn每局一次(原每轮重念) - 取证:live两会话+4人设评审,S清单见research/simon-polish/round1/findings.md - 验证:playtest 156/156 + guide 122 + 终检绿 + 14游戏回归零回退 + live复跑核对局14/14压力局8/8;状态感知2/5→4/5(四席同升),愿意玩改口为是 - 02号文档追加§9修订记录;新增input_open+13句status_*走完整TTS管线(flock串行QC无离群)
102 lines
6.6 KiB
Markdown
102 lines
6.6 KiB
Markdown
# 音序回响 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(乱按压力线)补证。
|