Files
SoundGame/research/new8/abyss/round1/live-player.md
T
xsl c8843233b0 research(new8/batch2): abyss + detective 迭代闭环收口——双双 R1-R2 连续达标裁定可交付
abyss《深海回音》:
- R1 补 synthesis(5/5 愿意玩 P0=0)+ 补录 R1 缺失裁决材料
- R2 十修全部现场坐实:F1 ping迟到/尾句保护首播制/链末看门狗不拆/回波静默一拍/dv4_dual扣账口播/crit水面变体/看门狗13s/震循环1.1s/震去重/状态链人数句
- 补录语音18段(flock串行,QC无离群);playtest 242→278
- 终裁:4/4 人设满分档,连续 2 轮达标 → 可交付 ✅

detective《雨夜专案》:
- R1 取证轮:补跑 live 两会话(认真新手33分钟全弧线/乱按200s三级保底抢救),5/5 愿意玩 P0=0
- R2 十一修全部坐实:intro完整落声/tut不被掐/按轴取句/人名指认/结案确认闸/指路句/选句记忆位/hint轻震/st_wrong当场记账/tut_skip补动词/L2疑点齐分支
- 补录+改词33条(29新增+4重录);playtest 265→279
- 终裁:6/6 愿意玩,连续 2 轮达标 → 可交付 ✅

公共:00-program 批次2进度账收账、13号文档 R2 断言关键词、gen_voice_dual 两游戏段、voice_text.json
验证:abyss 278/278 + detective 279/279 + guide 122/122 + check_all_assets 全项目全绿
2026-09-14 00:05:42 +08:00

84 lines
17 KiB
Markdown
Raw 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.
# 《深海回音》全拟真试玩报告 — R1 双局(认真新手 + 急性子)
## 基本信息
- 对象:`web/abyss/` @ localhost:8001,真头 Chromium + SenseVoice ASR 全拟真(mix.webm/events.jsonl/verdicts.json 落盘在 `web/harness/live/out/abyss-20260909174158`(局 A)与 `abyss-20260909180247`(局 B))。
- 局 A(认真新手):`voice=male, speed=normal, bgm=normal, guide=full`。约 20.6 分钟游戏时长,38 个有效手势(tap 31 / swipeleft 7),全程听完关键句再动,五潜抉择全走心(左)。**结局 e4「按规程上浮」**(saved=3,p9 左被氧气封锁 → g9_dry → 自动右)。通关后在 ENDING 结算态单击验证「再来一局」→ sys_new_dive → b_open 正常重开。
- 局 B(急性子):`voice=female, speed=1.7, bgm=normal, guide=standard`。约 17.8 分钟,120 个有效手势(tap 54 / swipeleft 52 / swiperight 9 / swipedown 2 / swipeup 2 / doubletap 1),抢跑跳句、乱按 96s、中途开菜单又关、结算链连点。**结局 e2「满载的黎明」**(saved=5,p9 右)。开场实测 ASK 续玩态(局 A 存档在场:sys_continue_ask → 单击继续)。
- 两局合计 191 个 voice 段:A 局 OK 83 / MISMATCH 2 / TRUNCATED 1;B 局 OK 63 / MISMATCH 32 / TRUNCATED 5(1.7x 下 MISMATCH 多为 ASR 伪影,见「测量局限」)。
- 全程无卡死、无死锁、无语音叠语音;结算链/结局链/菜单/重开全部走通。
## 局 A 叙述(认真新手,male/normal/full)
开场链完整:t=0.1 sys_new_dive「新的一次下潜开始了」→ gd_brief(操作口令)→ t=7.1 b_open「风停了。我站在问海号甲板上…」→ sys_skip → 逐节点单击推进 b_rule(「气不够一潜,人就必须上浮」)→ b_goal(「五个人…够下四潜」,ASR 把「够下四潜」听成「勾下4000」=数字盲区伪影)→ b_go → 下潜①。每步我磨蹭 >25s 时 gd_continue/gd_again 两级不同句按时响起,不烦人。
D1 教学潜:dv1_teach「单击,发一枚脉冲」后我等了 10s(新手犹豫),gd_ping1 响起「声呐待命。单击,发脉冲」,我照做——**问题来了:没听到 ping**,1.3s 后直接 echo_metal_l + dv1_metal「金属回波,钢板…」,我的 ping 音直到 17.3s 后(t=200.86,z1_a 说完的瞬间)才在电台人声缝隙里「叮」一声(详见 P1-1)。接通小舟:z1_a/z1_b/z1_knock(垫 pipe_knock)→ p1 左(听暗号,-1 气)→ d1_code「是老白的暗号…记住这个敲法」(knowsPipe 到手)→ p2 左(等日志,hasLog)→ 上浮:surf_splash+ascent_chime+d1_surf「往返,扣三格气」→ oxy_ok「氧气还够两潜」(账目 12-3-1-1=7 ✓)。
D2 机舱:脉冲 → echo_debris+pipe_knock → dv2_found(敲管承诺兑现)→ 老白 bai_a/bai_b → p3 左(慢撬)→ **d2_pry_ok「暗号没白听」**(knowsPipe 差分兑现,-0 气)→ bai_out → p4 左(陪关阀门)→ d2_valve + valve_close 音效 → d2_valve_e「两格气,换一片干净海」→ bai_thanks → d2_supply「粥给你温着」+ oxy_gain「应急瓶接上了,多三格」(恰一次 ✓)→ oxy_low「氧气告急,只够最后一潜」(账目 7-3-0-2+3=5 ✓)。
D3 病舱:gd_ping2 响起后我单击,ping 又迟到了 13.6s(t=842.4,chen_a 句末,P1-1 第二次)→ echo_groan + dv3_groan(船体呻吟预警)→ chen_a/chen_b → p5 左(先带陈医官,小郑留守)→ chen_up「上面给你热粥」→ p6 左(留备用瓶)→ **oxy 扣到 0 当场 dry_a「气瓶用干了。立刻上浮」**(干涸链首句按设计触发)→ 救援照常完成 → 上浮结算内 dry_b「气花在了人身上。人,都上来了」(归因真话,不假安慰)→ oxy_crit「氧气见底,必须上浮」(0 格 ✓)→ **氧气门走终局取消链**:dv4_none「气不够一潜了。第四潜,取消」→ gao_final「别下来。带他们回家,就算救完了」(克制、零描写)→ 签收 g9_in/g9_knot → p9。我(走心玩家)本能左滑取船钟——**g9_dry「一格气都不剩了。能带的,你都带回来了」后自动走右,不摆假选项**(设计 §3.2 精确兑现)→ d9_rest → e4_a「我按规矩上浮了。规矩里,没写怎么难过」→ e4_b → ep_lead + 逐人回响:ep_zhou_ok / ep_bai_ok / ep_chen_ok / ep_zheng_lost / ep_gao_lost / ep_trench_deep(每人按生死/好感选播,我的每个选择都被点名)→ 结算单击 → 新救援重开 ✓。
## 局 B 叙述(急性子,female/1.7x/standard)
开场撞上局 A 存档:sys_continue_ask(单击=继续上次),我单击直接续进 b_open。抢跑连点:**发现跳句基本无效**——b_rule/b_goal/z1_b/bai_* 句中单击全部只换来一下 [8] 轻震,句子照播完(对照资产时长全部自然结束;原因见 P1-2)。INTRO 里故意 swipeleft → error 震([10]+[60,40,60])无语音(standard 档);doubletap → b_go 重听 ✓。
搜索等待乱按测试:**48 次无效 swipeleft,每 2s 一次,持续 96s**——无操作轨全程零打扰(每个手势复位),无进展轨 t=158.7(=60s 整)gd_prog1「滑动在这里用不上…」、t=218.7(=120s)gd_prog2「别乱。停一下,想想下一步」两级不同句把我捞回来(设计 §7.2「乱按饿不死」实测成立)。停手 10s 后 gd_ping1 响,我立刻单击——ping 又迟到 12.4s(P1-1 第三次,t=259.4 落在 z1_a/z1_b 之间)。
抢跑代价实录:p1 播完 24s 后我才右滑(ui_confirm+d1_up);**z1_bye 链末等待时提前 swipeleft 被静默吞**(无语音解释,只震,看门狗重挂又响一轮 gd_continue/gd_again)——急性子被罚「再等一句」却不知为何。p2 右 → d1_surf(12-3=9 未跨档,**静默不播档位句** ✓)。D2:干净脉冲 → bai 链 → p3 右(切割)→ **危机拍实测:我句中单击把 d2_cut 掐了(TRUNCATED「切哥墙宝白」),危机编排纹丝不动**——spark_flash t=545.7 与 danger 震签名 [25,40,25,40,25] 同窗起播,d2_flash 语音 t=547.71 = **精确 2.01s 前置**;前置窗内再单击只 beat 不快进 ✓。p4 我滑错成左(急性子手滑)→ breath_loop 即刻起(oxy 6→4 跨 low ✓)→ **立刻下滑开菜单**:d2_valve 被掐(菜单暂停一切链)→ sys_menu → 单击轮播 sys_menu_restart→sys_menu_lobby → 上滑 sys_help+sys_settings → 下滑关闭 → **d2_valve 原节点重播复述,局面不丢** → valve_close → 正常走完 D2(+3 供给 → oxy_ok 跨档 ✓)。
D3:脉冲(这次干净)→ chen 链 → p5 右(先带小郑,chen_stay 留守)→ p6 右(约定来接)→ d3_surf + oxy_low「只够最后一潜」(账目 4 ✓)→ **氧气门 4≥4 → 双载形态自动直进 DIVE(4)**。D4:脉冲 → echo_groan+echo_metal_r → **滑坡危机拍:landslide t=794.67 起 + danger 签名同窗 + 500ms 间隔 danger 震循环,dv4_slide 语音 t=796.68=2.01s 前置;dv4_slide 播完震循环即停** ✓。gao_a/gao_b(hasLog=false → gao_c 差分 ✓)→ p7 双载提示(快/慢浮)右 → d4_fast/d4_fast_e → p8 右 → d4_silent → 上浮结算:d4_surf → oxy_crit(1 格 ✓)→ **我在 oxy_crit 播报中单击,一次 tap 连锁把 oxy_low 报告掐成 0.7s、把签收句 g9_in「医疗舱躺满了…」剁到只剩 0.28s(TRUNCATED,ASR 只听到「幸福」)**(P1-3)——但链没断,g9_knot/p9 照常。p9 右 → d9_rest → **e2_a「五个人都救上来了,船钟留在了沟底」+ e2_b「…半夜醒来总听见钟在响」**(e2 钩子原文)→ epilogue 与局 A 完全不同(ep_zhou_no「声呐日志没了」vs A 局 ep_zhou_ok;ep_gao_up「一直没说话」vs A 局 ep_gao_lost;ep_zheng_ok 存活)→ 结算态乱按:swipeleft error 震 ✓、swipeup 状态链(e2_a→oxy_crit→sys_help,G6 顺序 ✓,附 warning 震)✓。
## 问题清单
### P0(阻塞/卡死)
无。两局完整到结局;乱按 96s、菜单开关、结算链连点、存档续玩、结局重开全部无死锁。
### P1(体验断裂:截断/叠音/错乱)
1. **看门狗语音期间发脉冲:ping 音被排队迟到 12~17s,「回波先于脉冲」打破核心教学承诺**(3/5 次搜索复现:A-D1 t=183.6tap→200.9ping 晚 17.3s;A-D3 t=828.8→842.4 晚 13.6s;B-D1 t=247.0→259.4 晚 12.4s)
- 触发条件精确:gd_ping1/gd_ping2/gd_prog* 正在播时玩家单击(看门狗行喊的正是「单击,发脉冲」,照做必中)。`_firePing()` 起 sv*_echo 链,step(0) 的 sonar_ping 经 `_sonar()` 见 voice 忙入队;链在定长计时器上照走(回波、解读句不等人),队只等「链真歇下」才排水——落在 COMMS 首节点句末。
- 后果:a) 玩家单击瞬间没有 ping 音反馈(触觉-听觉因果断开);b) 回波没有自己的脉冲,教学潜第一次演示「单击→脉冲→回波」就是错序;c) 一声孤零零的 ping 在 12~17s 后电台对话句隙冒出来,像 bug 多像像叙事。零重叠不变量字面保住(ping 落在句隙),但 §6.3「搜索等待单击恒出 sonar_ping」的顺序语义不成立。修法:firePing 时先 stopVoice(gd 行可掐)再立即播 ping,或玩家 ping 不入 sonarGate 队列。
2. **「单击跳句」承诺名存实亡——sys_skip 教了,但几乎全部句子不可跳**(局 B 全程实测)
- sys_skip(两局都播了)说「想跳过这句,单击就行」。但本作叙事节点几乎全是**单句节点**,句句命中 F5「链末句保护」:句中单击只得到 [8] 轻震。B 局逐段对照资产时长核验:b_open/b_rule/b_goal/z1_b/z1_bye/bai_a/bai_b/d4_fast_e… 句中单击后 vend 全部=自然结束,无一被跳。p* 提示不可跳(PROMPT_RE)+ G4 震完全正确;但普通叙事句也 100% 不可跳,与教学直接矛盾(dungeon「铁器=楼梯」同类教训:教了的必须真)。1.7x 语速成了唯一加速器——对急性子等于「没有跳句功能」。
3. **上浮结算链/签收链不设防:连点可把氧气档位播报和签收开场白拦腰截断**(局 B t=765.2 / t=877.2)
- oxy_low 播 0.71s 被掐(TRUNCATED,听到「点档期购机」);oxy_crit 自然结束的同一瞬间我的在途 tap 落到下一句 g9_in 头上,g9_in「医疗舱躺满了。你的气瓶剩多少,你比我清楚。」只播 0.28s(TRUNCATED,只听到「幸福」)。
- H1 死窗只盖终局取消链/干涸链/结局链;普通 SURFACE 链的档位后缀句(tier 句不在 `_isTailSentence` 的裸步序里,不受链末保护)和签收 auto 单句节点全裸奔。链没断(后续句照常),但「氧气播报与账目一致播完」的承诺对连点玩家不成立。修法:档位句/签收链入口同样盖 800ms 死窗,或档位句并入链末保护。
### P2(不适)
1. **每个回波尾巴压住解读句开头 0.35~0.55s**(两局全部 6 个 echo→voice 接缝,数字完全一致=确定性):echo_metal_l 实长 2.76s vs 等待 2.2s → 0.55s;pipe_knock 2.96s vs 2.6s → 0.35s;echo_groan 4.43s vs 4.0s → 0.41s。R1 断言「信息音与 voice 播放区间零重叠」按事件层字面不成立(起播侧 gate 成立——回波从不曾在语音在播时**开始**;违反的是收尾侧:资产尾长超 wait 常数)。听感上是衰减余音垫进解说词,可能是有意混音;要么调 wait 常数要么修订断言措辞(区分「起播零重叠」与「区间零重叠」)。
2. **电台滤波 NPC 的 ASR 可读性整体偏低**:z1_a 0.72 / bai_a 0.83 / chen_a 0.79~0.87 / gao 系 0.65~0.73,且偶有前置语气词被 ASR 幻听(chen_a 听出「啊,你来了」,expected 无「啊」)。事件层无截断,属滤波+短句叠加伪影——**滤波可读性待人耳复核**(已知测量局限)。
3. **1.7x 下 ASR 相似度整体崩**(B 局 MISMATCH 32/100 vs A 局 2/85):「氧气还够两潜」→「还够2000」、「够下四潜」→「勾下4000」、「d4_fast_e」0.28「云飞佩服…」。事件层(TRUNCATED/SILENCE)两局全部可信,MISMATCH 在 1.7x 档只做参考——自动化验收脚本应对 1.7x 会话降权 ASR 判定。
4. **gd_continue 常被玩家的推进单击掐死**(A t=645.7、B t=657.0 两处 TRUNCATED:「单击屏幕记」):看门狗行教的动作正是「单击」,单击推进链时把它掐在半句。动作成功、下一句正常,伤害小,但半句话+判定噪声。
### P3(建议/记录)
1. NPC 平铺回退每句产生 4 个 404(voice/female/ 的 ogg/m4a/mp3/wav 全试一遍再落到 voice/ 根),两局共 104 次失败请求。功能零损(全部回退命中并正常播出),纯日志噪音——可先探测根路径。
2. 提示节点前的抢跑滑动被静默吞(B t=417.2:z1_bye 链末等待时 swipeleft,无 gd_invalid 语音只有轻震+看门狗重挂再等 13s):「无效手势零静默」的语音半边在 standard 档未见兑现(A 局 full 档未撞到无效滑,无法对照)。建议无效滑动也给一句极短 gd_invalid(或 standard 档明确只震的设计写进文档)。
3. 覆盖缺口记录:搜索等待双击=回波重听(R5)两局均未触发实测(B 局唯一 doubletap 落在 INTRO 重播,功能正常);e1/e3 结局、键盘 _k 变体、guide=off 留给后续轮。
4. 存档续玩链路实测可用(B 局开场 ASK:sys_continue_ask → 单击 → b_open 复述);progress PUT 不在探针 audio-only fetch 记录内,存档落盘未验证(仪器限制,非问题)。
### 做得好的地方(实话实说)
- **氧气账目两局逐检查点全对**:每潜起播 -3、p* 左路计分(knowsPipe 免气、valve -2、spare -2)、supply 恰一次 +3、`floor(oxy/3)` 档位句义逐格为真(7=ok「够两潜」、5/4=low「最后一潜」、0/1=crit「必须上浮」)、9 未跨档静默不播。§4.5 公式(SURFACE(3)=6−lefts)实测兑现:A 局 lefts=6 → 取消链;B 局 lefts=2 → 双载。
- **软失败三件套全兑现且不假安慰**:dry_a 当场播+dry_b 归因真话(「气花在了人身上」);取消链 dv4_none→gao_final 措辞克制零描写;p9 左封锁 g9_dry 后自动右、不摆假选项。已救上的人(小舟/老白/陈/郑)一次都没丢。
- **危机拍节拍器级精确**:D2 spark 545.70→语音 547.71(2.01s);D4 landslide 794.67→语音 796.68(2.01s)+ danger 震签名同窗 + 500ms 震循环 + 链推进即停;危机前置窗内单击只 beat 不快进——且我把 d2_cut 掐了它照样纹丝不动。
- **看门狗双轨教科书级**:96s 乱按(48 次无效滑)无操作轨零打扰 + 无进展轨 60s/120s 两级不同句抢救;COMMS 链末 standard [13,30] 计时精确(13.0s/30.0s);搜索 [10,25] 精确。
- **菜单与状态链完整**:中途开菜单掐当句暂停 → 三项轮播 → 帮助 → 关闭重播当前节点(局面复述不丢);ENDING 上滑状态链顺序「结局名→氧档→帮助」+ crit warning 震。
- **状态差分零错案**:knowsPipe→d2_pry_ok、无 hasLog→gao_c、stayer/p5 路线→chen_stay、双载→p7 快慢浮、两局 epilogue 六句全不同且全部对应我的实际选择;两结局判定与 §3.4 表逐字吻合(e2 钩子「半夜总听见钟在响」原文播 出)。
- 191 段语音零叠音;breath_loop 4 次起播全部恰在 low/crit 档(含 p4 左当场跨档那次的即时起播);两局时长 20.6/17.8 分钟落在 15-25 承诺区间。
## 玩家情绪时间线
- 局 A:0:00 甲板口播入戏 → 2:00「单击发脉冲」照做却没听见 ping,第一次困惑(回波来了也就没追究)→ 4:00 暗号+日志两笔投资,感觉在变强 → 7:00「暗号没白听」爽点 → 12:00 留备用瓶扣到 0,dry_a 一声令下紧张 → 13:00「第四潜,取消」+船长诀别,安静地难过 → 15:00 想取钟被 g9_dry 拦下,「它说的是真的,我一格都没有了」→ e4 收队点名,小郑和船长两句戳中 → 单击再来一局,心服口服。
- 局 B:0:00 续档直接进 → 抢跑连点发现跳不动,改听 1.7x 硬灌 → 乱按 96s 被两句 prog 捞回,服气 → D2 危机拍 2s 前置音到位,肾上腺素 → 手滑选左+开菜单一气呵成,回来发现局面没丢,安心 → D4 滑坡+双载全救,最后连点把签收句剁碎,虽然链没断但「医疗舱躺满了」只听到一个字,扫兴 → e2 五人全救+钟留在沟底,半夜听钟的钩子记住我了。
## 如果只能改 3 件事
1. **修 ping 迟到**:看门狗行在播时发脉冲,先掐 gd 行立即出 ping(或玩家 ping 绕过 sonarGate 队列)——教学潜的第一声脉冲是全作「声音即世界」的立身之本,现在 5 次里错 3 次。
2. **兑现或撤回跳句承诺**:要么放开叙事单句节点的句中跳过(保留 p*/档位/结算保护),要么删掉 sys_skip 的「单击跳过这句」教学、把加速交给长按——现在的组合是「教了钥匙却给假锁」。
3. **给档位句和签收链上保险**:氧气播报与 g9 签收并入 H1 800ms 死窗(或链末保护)——急性子连点不该能把「氧气见底,必须上浮」和「医疗舱躺满了」剁成一个字。