Files
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

17 KiB
Raw Permalink Blame History

《深海回音》全拟真试玩报告 — 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.790.87 / gao 系 0.650.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 死窗(或链末保护)——急性子连点不该能把「氧气见底,必须上浮」和「医疗舱躺满了」剁成一个字。