Files
SoundGame/research/new8/dungeon/round3/live-player.md
T
xsl 45124a1b9b feat(new8): 批次1收口——radio/dungeon 双双标记可交付(R3 synthesis×2 + H1 热修 + 定向live复验PASS)
- radio:R3 放行(4/4 人设满分档 5/5、愿意玩、P0=0;live 四修坐实+SA3 真声入局)
- dungeon:R1 0/4→R3 4/4 翻案达成;H1 死亡结算链截断根修(真凶=双击窗幽灵 tap 死后回调路由进 SETTLE,800ms 手势死窗;7 断言含旧代码反证)+ 定向 live 复验 PASS(两局含 R3 同款幽灵场景,结算链 7 句逐句完整)
- 章程账本更新:批次 1 验收 ☑(R4-R6 经用户裁定暂停,视上手反馈续;v2 首条=漫游迷路抢救盲区)
- 断言账面:radio 246 / dungeon 1649 / 9 套件全绿
2026-09-03 03:01:45 +08:00

73 lines
14 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.
# 《回声地窟》R3 live 确认局报告 — 老陈(认真局)+ 急躁压力局(收口验证)
> R3 轮次协议第 3 步:dev 交付 E0-1/E0-2/E1-1/E1-2 + 打磨项后的 1 局 live 确认。红线遵守:未改任何游戏代码/资产/harness 代码;乱按局抢救触发时刻均给 t=(录音时基秒)。
## 基本信息
- 身份:老陈,R2 同款细心中年玩家,认真局走完「新手弧线」;另一局换急性子表弟小飞代打乱按压力局。
- 设置与会话(`web/harness/live/out/` 落盘,events.jsonl + verdicts.json + mix.webm + transcript.md 四件套齐全):
- **局 A0**(意外收获局)`dungeon-20260902150137`:male/normal/normal/full。本想在 D1 教学步停顿读一下说明书,静置 92 秒——被 E0-2 接管当场滚出教学。这个「事故」成了 E0-2 的第一份 live 证据,遂保留。
- **局 A**(认真主局)`dungeon-20260902150633`:male/normal/normal/full。因 A0 的自动滚出把 `drillDone` 写进了存档,本局直接跳教开局(恰好覆盖「跳教学路径」);跳教 → L1 → L2 → L3 → Boss 战死亡 → 结算 → 新周目。206 手势,266 段语音事件。
- **局 B**(乱按压力局)`dungeon-20260902155741`:female/full。**注**:settings 传 `"speed":"1.7"` 被引擎规整为 `1`(本 harness 的 speed 枚举是 1.0/0.3/0,R2 的 1.7x 语速通道本次不可复现——仪器侧,见 P3-2),故 B 局是「同速乱按局」而非 1.7x 局;E0 断言全部依赖事件层时基,不受影响。
- 手势统计:A0 = 4;A = 206(tap/longpress/swipe×4/doubletap 全用,另用第二 CDP 客户端补了 2 次 1300ms 裸长触,仅仪器手段、未碰代码);B = 56(乱按:longpress/双滑/双击/上滑混撒,刻意不含下滑=跳教学,把「滚出教学」留给看门狗)。
- 报错:三会话 `asset404=0、pageerror/unhandledrejection=0、console.error=0`;**`vend reason=preempt` = 0**(R1:71 分钟 35,611 次;R2:0;R3:0,连续两轮干净)。
---
## R3 修复逐条现场验证
| # | R3 修复 | 结论 | 现场证据(t=会话内秒) |
|---|---|---|---|
| **E0-1** | 看门狗双轨(无进展轨 30/60/90s:earcon→短句→导航接管;只由状态推进重置) | **修好(两局双确认,阶梯逐级实锤)** | **A 局**:最后进展=1010.5(走格)→ earcon(confirm 震+tick)**1034.8**(+24s)→ `stair_hint_a` **1064.9**(+54s)→ **`nav_s` 1094.9**(+84s,=90s 档 + 5s 轮询粒度);期间脉冲/手势不断但零进展,无操作轨被喂饱照样升级——「乱按不再饿死」直证。**B 局**复现:杀怪进展 ≈486 → earcon **517.6** → `stair_hint_a` **547.7** → **`nav_e` 577.7**,30/60/90 三档严丝合缝;导航模式下每走一步重报(**2494.1** step→`nav_e` 随步重指)+60s 周期重报(1094.9→1154.9→…→2438.5,严格 60s)与 R2 L3 带路口径一致。「有真实进展不误触发」:A 局 1094.9 接管后我一路走格/打怪推进,全程无 earcon/短句误发;B 局 697-718 走格+撞墙期间同样零误报,只有随步 nav 重指。**
| **E0-2** | 跳教学路径:教学态同享无进展轨,90s 接管=自动滚出教学;跳教后 120s 内必有遭遇或指向语音 | **修好(两条退出路径都验到,且跳教后 6 秒即有遭遇)** | **路径①(A0 局,静置型)**:D1 教学步零输入静置,最后进展 80.7 → **`tut_skip` 172.4(+91.7s)** 自动滚出教学进探索——「R2 的 39 分钟」vs R3 的 92 秒。**路径②(B 局,乱按型)**:小飞从 TITLE 起乱撒非下滑手势,教学被「两次做错自动演示通过」快速推进(`tut_front_rule` 59.7 → `tut_side_rule` 65.9 → `tut_walk` 71.7 → `tut_turn` 80.9 → `tut_replay` 102.8 → `tut_status` 111.3 → `tut_mob` 117.8),卡在 D9 寻路步后:`stair_hint_a` **171.6** 与 **194.4** 两次短句 → **`tut_skip` 224.4(最后进展 129.6 走格 + 94.8s)** 滚出教学。**跳教后密度**:`tut_skip` 228.7 播完 → **230.3 蝙蝠扑击接战(+5.9s)**,远优于「120s 内必有」断言(A 局跳教开局 62.7s 也已有 mob_step 逼近、71.4s 接战)。**
| **E1-1** | 踩上楼梯格「到达即报」:自动贴身铁器回声 + 下行提示,不靠玩家脉冲;tap 下潜照常 | **修好(两个干净样本 + 脉冲射线报铁器也活着)** | **样本1(A 局 L1,误打误撞全程录到)**:519.27 longpress 踏上楼梯格 → **同一拍自动 `echo_1`(519.72)+ `mat_stair`(519.84)+ `tut_stairs_on`(519.82,「楼梯就在脚下。单击,下潜。」)**,零玩家脉冲输入;523.78 tap → `stairs_down`+`evt_descend`(3.12s)+`st_floor_2`,下潜演出照常。**样本2(A 局 L2,刻意复现)**:1371.66 脉冲先听到 `echo_1`+`mat_stair`(正前射线铁器回声,R2 D0-2 的「相邻格兑现」同时活着);1377.47 踏格 → **自动 `echo_1`+`tut_stairs_on`+`mat_stair` 三连**;1382.04 tap → 下潜 `st_floor_3`。教学 D9「听到铁器回声再走过去」的承诺第一次在输入层无死锁地兑现(R2 P1-1 当场销案)。**
| **E1-2** | band1(0<金<50)新句 `gold_some`「带回来一点,不多」,上滑/结算/TITLE 同账本同分档 | **修好(含 0 金对照,全表面零谎报)** | **A 局上滑**:杀怪入账后 meta.gold=6/11/21 三次上滑状态链金币位全部播 **`gold_some`**(250.9,ASR「带回来一点不」sim 0.92;642.5 附近 B 局亦同);金到 ≥50 后同一条链换 **`st_gold_2`「有些积蓄」**(2545.9)——同一分档函数随账自动升档。**0 金对照(B 局开局)**:129.6/144.5 金币位播 `st_gold_1`「口袋空空」——0 金说空手、少量说「带回来一点」、攒多说「有些积蓄」,三档句句真话,R2/P2「捡到金币→口袋空空」的谎报结构已消除。**结算/TITLE 表面**:A 局死亡结算链因新 P1(见下)在 `die_intro` 即断,`_metaGoldVoice` 的死亡链样本未能采到;TITLE 面亦未访问——但状态链已实证同一 `_goldBand/_stGoldVoice` 出口(与 SETTLE/TITLE 共函数),代码面单出口 + live 面三档真话,判修好,仅欠一张死亡链的现场收据。**
| **打磨** | 战斗逃跑长按需按满 900ms;短松(<900ms)=取消+区分提示「想逃跑,按住别松手」 | **修好(两半都实测)** | **短松取消**(harness 长按固定 600ms<900ms):A 局 570.4 → error 震 `[60,40,60]` + **`tut_flee_hold`**(「想逃跑,按住别松手」,ASR「抢逃跑,按住别怂」sim 0.67)✓;且每场战斗只播一次(同场第二次 528.2/1528.8 只震不播,1519.7 新战斗重播——按设计);B 局 2011.7 第三次独立战斗同款复现。**按满真逃**:第二 CDP 客户端裸触 1300ms(仪器手段)→ A 局 682.5 **`btl_flee`**「必成挨一下」(hurt 音随行)+ BGM 战→explore 立即回切 ✓。**Boss 禁逃**:L3 石甲蟹战裸触 1300ms → 2715.3 **`btl_flee_boss`「退路塌了,跑不掉!」sim=1.0** + 纠错震 ✓。**
| **整体** | 教学→2-3 层→战斗→死亡→结算→新周目,零死锁零抢占 | **基本通过(一处 P1 见下)** | 三会话合计教学 D0-D9 全步骤台词齐(A0+ B 覆盖);A 局 L1→L2→L3 三层全走(两跳楼梯全是「到达即报」接「单击下潜」);战斗 9 场(蝠×4 鼠×3 蘑菇×3 石甲蟹×1,含格挡成功 `btl_parried`、击杀升档 `btl_lvup`×2、自动侧移报位 `mob_step_heavy_r`、挥空真话 `btl_swish`「挥空了,他不在你面前」);死亡一场(Boss 重击)+ 结算 tap 直接开出**新周目**(`sys_new_run` 2864.1,且因 drillDone 不再进教学,与 R2 口径一致)。**零抢占**:三会话 vend reason 全部 =kill,preempt=0;**零死锁**:三会话最大事件空窗逐一归因——A 局 92.7s/91.6s 均为本玩家读代码静置、76.0s 即下述 P1 结算中断;B 局 207.5s 为下述 P2 战斗静置——无一处是游戏卡死。**
## 局 A 体验叙述(验收视角,第一人称)
跳教开局后上滑第一件事就是听金币位——上一轮还嘴硬「口袋空空」,这局捡了 3 金就改口「带回来一点,不多」,账本子终于说人话。L1 的蝙蝠扑上来,我手一慢吃了下 ACK,反手两刀放倒;第二只扑进来把我上滑状态链拦腰打断——遭遇优先级最高,这个「没礼貌」是对的。真正的高潮在 519 秒:我随手一个长按,脚下突然自己响起贴身铁器回声+「楼梯就在脚下,单击,下潜」——**上一轮我用尽办法都听不到的这句教学承诺,这一轮是踏上去自动送来的**。L2 重复了一遍(这次我先脉冲听到了正前方的铁器尾音,再踏格、再听一遍到达即报),L3 卡了会儿路,干脆静坐——24 秒后 earcon、54 秒短句、84 秒导航接管准时点名「往东」,导航模式每走一步重报下一步,把我一路带到石甲蟹脸上。Boss 战里短按长按被「想逃跑,按住别松手」劝住,真按满一拍被「退路塌了,跑不掉!」拒绝,两刀换位脚步报位、挥空播「他不在你面前」,最后被重击放倒——**然后结算链只说了半句「你倒下了」就哑了**,结算屏静坐 76 秒直到我自己单击开出新周目。这是本局唯一一次游戏「说到一半闭嘴」。
## 局 B 体验叙述(小飞乱按:非下滑混撒)
小飞不识字也不听课:教学 D0-D7 被他的胡乱输入用「两次做错自动演示」一路买通(每步 ~10 秒),卡在 D9 找楼梯时彻底躺平——17 秒后游戏开始喊「找找铁器的回声」,两遍之后一脚把他踹出教学(tut_skip),6 秒后蝙蝠扑脸。进了战斗他又躺平:15 秒一次「轮到你了」喊了一轮之后就再没人理他(见 P2)。他惊醒后乱拍了几刀拍死两只蝠,然后原地脉冲装死——30 秒 earcon、60 秒短句、90 秒导航接管全套准时上演,比 A 局那个假装的「新手」还标准。0 金时状态链老实说「口袋空空」,乱拍捡了 6 金立刻改口「带回来一点」——账本子对乱按党也不撒谎。
## 新问题清单
### P0
无。R2 收敛出的 P0(看门狗饿死)在本轮双局三场景(静置/乱按/导航中推进)全部按新阈值工作。
### P1(功能失效/设计违约)
1. **死亡结算链在 `die_intro` 处截断,后 6 句全部未播,结算屏静默直至玩家输入**(A 局 2786.88)
- 现场:被石甲蟹重击放倒瞬间,`die_intro`(dur 1.44s)只播了 **0.18s** 即被杀(event 层 vend 2787.06 + ASR verdict `TRUNCATED sim=0`「我。」双证),其后 `die_cause_2`/`die_adv_*`/`st_floor_3`/金币档句/`settle_stronger`/`settle_again` **零 fetch 零 vstart**,结算屏 76.0s 无任何事件(事件空窗榜第 3 位),直到我 2863.7 单击直接开出 `sys_new_run`;
- 后果:**归因真话律的死亡链(你死于什么/下次怎么办)在本局一个字没播**,E1-2 的死亡链金币句样本也随之丢失;新周目只能靠玩家盲点结算屏;
- 嫌疑:死亡瞬间与挥空链同 tick(2782.7 `btl_swish` speakGuarded 链未清 + 2786.7 致命 tel_heavy 同窗),竞态杀掉了 `_speakGuarded` 结算链;R2 两场死亡全链逐句播完,本条按回归嫌疑处理,建议 dev 用「挥空瞬间被打死」复现;
- 缓解事实:点击结算屏仍能正确开新周目,不卡死。
### P2(不适/可疑)
1. **战斗中完全静止(不出招也不乱按)超过一轮提示后彻底安静**(B 局 248.8 → 456.3,实测事件真空 207.5s):战斗看门狗只有 15s `gd_turn`+30s tick 两级,之后 disarm;代码面 `_stuckCheck` 仅在 EXPLORE/DRILL 态运行,无进展轨不进战斗。设计逻辑自洽(乱按会推进战斗回合=进展,不该升级),但「吓得僵住不动」的玩家在战斗里喊一轮「轮到你了」后无人再理——还好回合制敌人也不主动出拳,无实际伤害,体感空。建议:战斗态静止 60s 后重复 `gd_turn` 或补一句战斗提示。
2. **导航接管与随步重指短窗叠加**(A 局 2494.1 与 2498.5,4.4s 内两条 `nav_e`):随步重指 + 60s 周期重报在同窗相撞,`NAV_MIN_GAP`(1.5s)拦不住。 harmless 但听着重复,建议周期重报与随步重指共享节流窗。
### P3(建议/仪器)
1. **`gd_pulse` 被遭遇打断时 vend reason 仍记 `kill`**(A 局 71.2-71.38,verdict TRUNCATED sim=0):引擎把「抢占让位」也走 `_killVoice`,探针 reason 字段分不出「播完」与「让位」——本局语义正确(遭遇优先),但仪器口径上 R2 的「reason=preempt 计数」可能漏计这类正常让位,建议 vend 增加区分原因。
2. **harness speed 枚举不接受 1.7**:`{"speed":"1.7"}` 被规整为 1,R2 的 1.7x 语速+ASR 盲区压力通道本轮不可复现(仪器侧,未改 harness)。
3. 未覆盖的 R2 已验项未重测(非本轮范围):自动喝药、D9 教学看门狗 30s `stair_hint_a`(B 局在真实 D9 中已顺带复现 171.6/194.4)、菜单首项播报。
## 做得好的地方(实话实说)
- **30/60/90 无进展阶梯是精确的**:两局四个场景,earcon→短句→接管的间隔全部落在阈值+轮询粒度内;且「任何手势都不重置无进展轨」真的做到了——我一边脉冲一边读秒,它照样按点升级。
- **「到达即报」是本轮最动人的修复**:R2 那句我一辈子听不到的「楼梯就在脚下」,现在踏上去就自己响,还带贴身铁器回声;同时脉冲射线报铁器的老路没被拆掉。
- **两条教学退出路径都是活的**:静置 92 秒被请出去,乱按卡 D9 也被请出去,跳教后 6 秒就有蝙蝠来面试——E0-2 的两个断言全都不是压线过。
- **逃跑三态干净利落**:短松=取消+一句教学补课(每场一次不烦人)、按满=真逃挨一下、Boss=拒绝回执 sim=1.0。
- **金币账本三档全真话**:0 金「口袋空空」、少量「带回来一点,不多」、攒多「有些积蓄」,上滑一条链随账自动换档,A/B 两局互为对照。
- 连续三轮(R1→R2→R3)`preempt` 从 35,611 → 0 → 0,风暴没有复发。
## 一句话裁决
**R3 四条修复全部在真机上兑现——看门狗终于长了一张按 30/60/90 秒准时报事的嘴、教学留不住赖子也困不住新手、楼梯一踩自己报、金币账本三档全真话、逃跑长按有了手感——唯独死亡结算屏在 Boss 战说了一半「你倒下了」就哑火 76 秒(新 P1),把这条修顺,dungeon 就是可交付状态。**