Files
xsl 258ffd5ba3 fix(simon): 音序回响状态透明打磨(玩家代理取证迭代,玩法零改动)
- 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无离群)
2026-09-14 20:17:28 +08:00

102 lines
6.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 音序回响 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(乱按压力线)补证。