- radio:帮助链去重(同等待点二次=beat震+earcon,全量口令38→20)/rep_low警告震/空点轻震/状态链重排(状态在前)/「首播必完整、复播可即掐」显式规则登记/G3核查为设计使然转断言;221→246断言 - dungeon:看门狗双轨制(无操作轨+无进展轨,30/60/90s三级升级到导航接管)/跳教学90s自动滚出(2403s→95s内)/踩楼梯到达即报贴身铁器/band1新词「带回来一点,不多」全管线重录/逃跑长按900ms+提示句;1610→1642断言 - R3 验证(进行中已入库部分):全量回归 9/9 全绿;R3 转写×4;P2/P3/P4 终审×6份(radio 满分档首评/三审,dungeon 4/4.5/3-4 全票愿意玩,无P0);两处独立定址同一残余=漫游型迷路刷不响无进展轨(R4 第一条) - 8套件+guide全绿;Mureka 累计 $0.87/$2.00
116 lines
17 KiB
Markdown
116 lines
17 KiB
Markdown
# 《回声地窟》R2 全拟真复测报告 — 老陈(细心的盲盒 Roguelike 老手)+ 急躁压力局
|
||
|
||
## 基本信息
|
||
|
||
- 身份:老陈,34 岁,Roguelike 玩家,认真跟教学、脉冲探路;另一局换急性子表弟小飞(1.7x 语速、乱按狂点)代打压力局。R1 同款人设,目标是逐条验收 R2 结构修复。
|
||
- 设置:
|
||
- 局 A(新手完整弧线):`voice=male, speed=normal, bgm=normal, guide=full`,主会话 `dungeon-20260902103332`(约 2.3 小时真实时间,247 段语音 100% 纯净可析),另加一个短补测会话 `dungeon-20260902131022`(教学跳过→带路→楼梯格交互补测)。
|
||
- 局 B(急躁压力):`voice=female, speed=1.7, bgm=normal, guide=standard`,会话 `dungeon-20260902125330`(乱按 400 秒 / 273+ 手势;**未 /stop 落盘,仅 events+mix partial**——收尾时被主管催停,事件流已现场导出)。
|
||
- 手势统计:局 A 约 400+ 次(tap/longpress/swipe×4/doubletap 全用上);局 B 随机乱按 400 秒。
|
||
- 最深层:**第 3 层**(局 A,死于 L3 窟主石甲蟹 tel_heavy_r;L1/L2 完整走完,教学 D0-D9 全步骤)。
|
||
- 结局:局 A 走完 **教学→探索→L2→L3→Boss 战死亡→归因链→元进度→新周目(跳教学)→再下 1 层(L2)→再死一次(全链完整收听)→TITLE 元进度复核** 全闭环,两场死亡、零死锁。
|
||
- 报错:全程无 fetch 失败、无资产 404、无页面崩溃;**全会话 `vend reason=preempt` = 0 次**(R1:71 分钟 35,611 次)。
|
||
- 证据落盘:`web/harness/live/out/dungeon-20260902103332/`(全量)、`out/dungeon-20260902125330/`(partial)、`out/dungeon-20260902131022/`(全量);事件流全量副本 `/tmp/sessionA_events.json`(5865 条)、`/tmp/sessionB_events.json`(1030 条)。收尾已 `POST /stop` + `fuser -k 8124/tcp`。
|
||
|
||
## 局 A 体验叙述(第一人称,验收视角)
|
||
|
||
**0:00–4:00 教学开场:每句都是完整的。** 解锁单击后 TITLE 正常;单击开局,`sys_new_run`→`intro_1`(4.8s)→`intro_2`(3.9s)→`tut_d0`(5.0s) 全长串行。D0 单击确认震干净。
|
||
|
||
**t=195 D1 引爆点(R1 灾难起点)——这次什么都没炸。** 脉冲照常(pulse+回声组),**且两侧第一次就报了开口**(side_open_l/r 同至,R1 全程 0 次)。`tut_echo_come` 完整播 2.24s、`tut_front_rule` 完整 2.8s,一句接一句,没有抢占。此后 D2-D9 每一步旁白、每次纠错、每条规则句全部完整入耳——我第一次「听着教学」打完了教学。
|
||
|
||
**4:00–5:30 D7 状态链与菜单,第一次真正听清。** 上滑状态链五段(st_floor_1→st_hp_1→st_gold_1→st_face_e→st_threat_none)逐段全长播完(R1 全是 0.2 秒渣渣)。下滑开菜单:menu 音+BGM 切换+`sys_menu`+**菜单首项名播报**(`sys_menu_resume`——复核代码确认这就是「打开即报首项」,R1 报告把它误判成「菜单被系统自动收掉」,此桩旧案当场平反);再下滑,菜单一次就关、BGM 立即切回 explore(D1-1 ✓)。教学蝠随后主动撞脸接战(脚步渐强+心跳预警),格挡练习失败两次(我手慢)、miss 句照播、ATK=0 无伤,第三刀杀之——**BGM 立即切回 explore**(D1-4 胜利路径 ✓)。D9 找楼梯时故意静置:**恰 +30.1s 播 `stair_hint_a`**(D1-2 升级兜底 ✓;8s 纯 nudge 是 earcon,探针不记事件,无法证伪)。
|
||
|
||
**5:30–25:00 L1→L2:靠耳朵真的能走。** 脉冲-移动循环:前方距离四档+材质尾音、左右侧墙/开口(side_open/wall 全程 76 次),撞墙 bump 与回声距离始终一致。拾金币有 `evt_coin_3` 档句。两次下潜演出全套:`stairs_down`+`evt_descend`(3.12s)+`st_floor_2`。L2 落地即被窟鼠贴脸(脚步渐强+心跳),第一次格挡成功就在这场:tel_small 后 0.7 秒双击——**parry 音+`btl_parried` 播报(R1 是死资产,R2 已接线)+减伤入账**,两格挡一击杀,`btl_loot_1`+BGM 回 explore。战斗中静置 15 秒,**turn_tick+gd_turn 恰 15.0s 到场**(D1-6③ ✓,三场战斗三次全中)。
|
||
|
||
**25:00–40:00 L2 全清与一次意外验证。** DFS 扫图途中把 L2 三只鼠全引了出来——**全是它们主动扑上来的**(R1 的「贴身绕圈就是不开战」彻底绝迹)。中途长按走位撞上接战瞬间变成逃跑(btl_flee+hurt),**BGM 立刻切回 explore**(D1-4 逃跑路径也验了)。菜单在探索态开/关各一次,一次即关(D1-1 主诉直证)。静默 20 秒后 `amb_cave` 垫入;L1 楼梯上静置时 **2769.0/2789.0 两次 amb_cave 严格 20s 间隔**(D0-3② ✓)。
|
||
|
||
**40:00–55:00 L3:蘑菇会扑了,Boss 会绕了,我死了。** L3 卡关链全 tier 实测:静置 60s→`stair_hint_b`(窟主未清的正确变体句)→120s→`stair_dir_n/w`(直线方位+警告震)→180s→**nav 带路**(最短路首步,**每走一步重报下一步**,s→s→w→n 逐步自校正,R1 的「咬死北边指墙」不复现;L2 明示说北、带路首步说南——两者坐标系不同但各自为真)。蘑菇贴身即扑(3229.1、3597.1),三只全被我正面打掉(btl_loot_2 档句+btl_lvup 升档)。HP 被放低时**自动喝药实锤**:warning 震+potion 音+`st_hp_2` 档播报(3270.6)。最后踩上 Boss 战:长按被 **`btl_flee_boss`+纠错震** 拒绝三次(Boss 禁逃 ✓),换位脚步 mob_step_heavy_r+派生前摇 tel_heavy_r、半血 `btl_half_crab` 全部到位,然后被两刀放倒——**die_intro→die_cause_2(Boss 重击,真话)**。(我脚本的手滑在 die_cause_2 播到一半点了 SETTLE=立刻重开——意外验证了「重开入口 ≤2 秒」和死后重开直接 EXPLORE 不再进教学。)
|
||
|
||
**55:00–75:00 第二次死亡:把归因链一个字不落听完。** 新周目一路下到 L2,用「逃跑-挨打」循环主动送死(7 次 btl_flee,鼠 ATK=1 真实放血),倒地后**全链一字不差**:die_intro→**die_cause_1**(「你被小怪拖垮了」——真话,确实是鼠群逃跑反击放死的)→**die_adv_1**(「下次前摇声响时就双击」——真话,本局 0 格挡)→st_floor_2(真死于 L2)→**meta_gold_1**→settle_stronger→settle_again。单击回 TITLE,上滑元进度:**meta_gold_1(与 SETTLE 同档!D1-5 ✓)**→st_best_2(到过 L3=中层档,正确)→**unlock_potion**(遗产购置播报,账本自洽)。元进度闭环成立。
|
||
|
||
**补测会话(131022)**:专程回去验「楼梯铁器回声」,结果收获一条重要边界:**站上楼梯格时单击=下潜(模态优先),脉冲永远发不出去**(t=1288.7 现场演示,直接把我送下了 L2)——详见 P1-1。
|
||
|
||
## 局 B 体验叙述(急躁压力:female / 1.7x / standard)
|
||
|
||
小飞乱按 400 秒:**136 段语音(其中 dungeon 53 段)、零死锁(无 25s+ 事件空窗)、零抢占**。乱点打死了开场蝙蝠(btl_bat→btl_kill→btl_loot_1),乱滑被 `btl_no_turn` 正确拒绝,菜单被开 12 次每次都能下滑关掉,双击砸在「保存并回大厅」上一次→sys_saved 退到大厅→乱点又开了别的游戏(88 段他家台词)——**与 R1 局 B 的大厅层乱象同款,非本轮修复范围**。注意:本局事件流混入了同机并行 radio 测试的外来语音(探针通道未按会话隔离,详见 P3-4),dungeon 侧结论均按纯 dungeon 事件清洗后得出。1.7x 语速 ASR 盲区依旧(MISMATCH 34/153:`sys_menu_save`→「否则命为大师」0.17),按协议以 events 为准。
|
||
|
||
## R2 修复逐条现场验证
|
||
|
||
| # | R2 修复 | 结论 | 现场证据(t=会话内秒) |
|
||
|---|---|---|---|
|
||
| D0-1 | 语音抢占死循环 | **修好(铁证)** | A 局全程 preempt=**0**(R1:35,611);**教学后 10 分钟窗口语音 38 段=3.8 段/分钟**(中位间隔 5.7s、最短 1.3s、同 id<1s 重复 0 次;R1 同期 >2000 段/分钟且 99.7% 被掐)。D1 引爆点 t=195.3:tut_echo_come 完整 2.24s→tut_front_rule 完整 2.8s,严格串行;全部 247 段语音逐句可听 |
|
||
| D0-2 | 回声信息真实性 | **side_open 修好;mat_stair 现场仍未兑现(P1-1 挂账)** | side_open 全程 **76 次**(R1 两局 0 次),首个脉冲即双侧开口;但 **mat_stair 全程 0 次**:站楼梯格 tap 被下潜模态优先截走(补测会话 t=1288.7 实演),「楼梯前一格正对脉冲」路径被会话收尾截断未走完。铁器回声 live 缺一环 |
|
||
| D0-3① | 主路径遭遇密度 | **修好** | L2 三鼠落地后 40-70s 内全部主动扑击(1300.5/1607.9/1849.0);L1 蝠进探索数秒即扑(281.2);探索期无 >20s 无内容体感 |
|
||
| D0-3② | 探索呼吸层 amb_cave | **修好** | A 局静默 ~20s 垫入(2514.5);严格 20s 节奏复现(2769.0→2789.0;补测 2619.9/2639.9/2659.9);有人声时不垫 |
|
||
| D0-3③ | 下潜演出 | **修好(本就有,转写伪影已除)** | 三次下潜全套 stairs_down→evt_descend(3.12s)→st_floor_N,无一缺失 |
|
||
| D0-3④ | 卡关计时器 | **修好(按设计口径)** | A 局 60/120/180s 三级精确触发:hint_b(3511.5=lastAct+63.5s)→stair_dir(3215.5=+120s,警告震)→nav(3936.6=+180s);「任何有效手势重置」口径确认(拾取金币=进展,重置全链) |
|
||
| D1-1 | 探索态菜单可关+关闭回执 | **修好** | 2526.5 探索态下滑一次即关,BGM menu→explore 立即回切;关闭签名 earcon 为引擎音、探针不单记(如实注记)。B 局菜单开 12 次全部可关 |
|
||
| D1-2 | D9 看门狗兜底 | **修好(30s 级实锤)** | stair_hint_a 恰 lastAct+30.1s(956.5/1307.4/956.5 三次);8s 纯 nudge 为 earcon 无法从事件证实(仪器局限) |
|
||
| D1-3① | 导航指墙 | **修好** | 带路=最短路首步且逐步自校正(nav s,s→e,e→n;1264.1/1267.4 每步重报);同向节流(全会话 nav_* 仅 14 次、最小间隔 3.21s,R1 是亚秒互掐);「L2 明示北、带路首步南」系两种坐标语义(直线 vs 路径),各自为真 |
|
||
| D1-3② | 蘑菇/游走怪相邻即接战 | **修好** | L1 蝠秒扑(281.2)、L2 鼠全主动(1300.5/1607.9/1849.0)、L3 蘑菇扑(3229.1/3597.1);R1「35 分钟软封锁」不复现,两场 L3 战均为怪主动开 |
|
||
| D1-4 | 战斗结束 BGM 回探索曲 | **修好(双路径)** | 胜利路径 4 次(547.0/2626.8/4040.7/7068.9 敌死即 explore)+逃跑路径 1 次(1206.4 flee 后即 explore) |
|
||
| D1-5 | SETTLE/TITLE 金币档一致 | **修好** | SETTLE meta_gold_1(8199.3) = TITLE meta_gold_1(8257.7),同账本;后随 st_best_2+unlock_potion(购置后 meta 计提)自洽(R1 是 3 vs 2 互相打架) |
|
||
| D1-6① | 长按 boost 闪跳 | **修好** | A 局事件流 0 次 boost on/off 窗口事件(R1 每次长按闪一对) |
|
||
| D1-6② | D7 菜单自动收 | **结案(非 bug)** | 复核:sys_menu_resume=菜单首项名播报(MENU_ITEMS[0],openMenu 固定播),R1 误听为自动执行 |
|
||
| D1-6③ | 回合 15s 防呆 tick | **修好** | turn_tick+gd_turn 恰 15.0s ×3 实测(477.5/2396.3/3247.9+541.6/2941.5),standard 档也有音 |
|
||
| 整体 | 一命全弧线无死锁 | **通过** | 教学→3 层→Boss 死→结算→新周目→再下 1 层→再死→全链→TITLE,全程零死锁;B 局乱按 400s 零死锁 |
|
||
|
||
## 问题清单
|
||
|
||
### P0(破坏核心体验的系统性缺陷)
|
||
|
||
无。R1 的失聪循环没有复现,本轮没有任何「不听人话就玩不下去」级别的缺陷。
|
||
|
||
### P1(功能失效/设计违约)
|
||
|
||
1. **「铁器=楼梯」的贴身铁器回声在输入层不可达,mat_stair live 仍为 0 兑现**
|
||
- 站上楼梯格时,单击被「下潜」模态优先(补测会话 t=1288.7:tap→stairs_down,脉冲根本发不出),「站楼梯格→贴身(dist1)铁器回声」这条 R2 新接的回声路径,玩家用正常手势永远听不到;
|
||
- 唯一可听路径是楼梯恰在正前方射线(echo 距离+mat_stair),本局两次到站都因「踩格即播 tut_stairs_on→顺手单击下潜」错过,补测的「到站退一格转身脉冲」实验被收尾截断;
|
||
- 后果:教学 D9「听到铁器回声再走过去」对新手仍是碰运气(本局老陈是靠 tut_stairs_on 踏格句而非铁器音找到楼梯的)。playtest 断言层面已全绿,但 live 端承诺未闭环。
|
||
|
||
### P2(不适/可疑)
|
||
|
||
1. **看门狗 8s 纯 nudge(earcon)仪器不可验证**:earcon 不产生独立事件,live 只能证实 30s 升级句;建议给 earcon 加轻量探针(本条是仪器欠账,不是游戏缺陷)。
|
||
2. **连续战斗时救援链会饿着**:拾取/击杀=进展事件重置卡关链(§10.3 口径),叠加怪主动扑击后,L2 三连战期间玩家永远攒不满 60s 空闲,带路全程沉默(实测 hint_a 被拖到 lastAct+90.6s)。战斗本身是内容所以体感不空,但「打完三只鼠还没头绪」的新手要再等一整轮 60/120/180s。
|
||
3. **教学跳过标志跨会话不一致**:B 局开局跳教学(meta.drillDone=true 生效),补测局却重进教学——同一 localStorage 键 `soundgame.progress.dungeon`、游戏内逻辑正确,根因指向 harness 会话上下文/并行测试互串(仪器侧),挂账复核。
|
||
4. **amb_cave 听感未验**:事件层节奏全对,但 ASR 对环境垫无评判能力(全落 SFX_BGM_ONLY 行),音量/辨识度是否「像洞里的空气」待人耳。
|
||
|
||
### P3(建议)
|
||
|
||
1. **长按三义在「相邻扑击」时代更危险**:走位中被扑→下一步长按=瞬间逃跑挨打(本局实录 flee×7+扫图误逃×3)。R1 P3 原样存在且触发率变高;建议逃跑加前摇音或改绑手势。
|
||
2. **大厅层老问题原样**:乱按双击「保存并回大厅」无确认退局(B 局 ×1),退局后无「你在大厅」定位句、乱点直接开别的游戏——dungeon 侧无责,但它是被 dungeon 菜单送进去的。
|
||
3. **st_best 播报语义**:死于 L2 时 TITLE 播「你到过中层」(bestFloor=3 是前世纪录),句面对新玩家易误读为「本局到过」,建议加「最远」二字级别的措辞。
|
||
4. **仪器三件**:① longpress 定长 600ms≈1 格,教学「按住走≥2 格」只能靠撞墙兜底通过(撞墙也算过,本轮实走通了这条兜底);② 1.7x+短句 ASR 盲区依旧(MISMATCH 34/153);③ /session 探针通道未按会话隔离,同机并行测试(radio-103345/110919/112548)语音互串进 B 局事件流(88 段外来),且 B 局因被催停未 /stop 仅存 partial。
|
||
|
||
## 做得好的地方(实话实说)
|
||
|
||
- **死亡归因真话律两场全对**:Boss tel_heavy_r 放倒→die_cause_2;鼠群 flee 反击放血→die_cause_1;0 格挡→die_adv_1。全游戏最严苛的承诺继续满分。
|
||
- **格挡系统第一次完整可玩**:0.7 秒时机双击→parry+btl_parried 播报+减伤(R1 死资产已接线);格挡失败有 miss 教学句兜着。
|
||
- **Boss 战规格全兑现**:换位脚步报位(mob_step_heavy_r)、派生前摇(tel_heavy_r)、半血句(btl_half_crab)、禁逃回执(btl_flee_boss+纠错震)。
|
||
- **自动喝药**:HP≤25% 一瞬间 warning 震+potion 音+血量档播报(3270.6),一次不落。
|
||
- **btl_lvup 击杀升档 ×2**、loot/coin 全部分档句正确; Economy 账本跨死亡、跨购置全部对得上。
|
||
- **靠耳朵真的能通关 3 层**:回声距离+材质+侧向开口+怪物脚步三套信息全程零矛盾(R1 的 L3 漂移未复现);卡关三级链是真能把人带到楼梯的。
|
||
- **节奏**:教学后每分钟都有事发生(战斗/拾取/氛围垫轮转),R1 的「350 秒真空」体感彻底消失。
|
||
|
||
## 玩家情绪时间线
|
||
|
||
- 0:00 开场四句完整清晰:「等下,这次每句都听完了?」
|
||
- 3:15 D1 脉冲,教学句没被掐:「风暴真死了,服」
|
||
- 6:00 状态链五段完整入耳:「原来这游戏是这么告诉状态的」
|
||
- 20:00 菜单一次就关:「口袋终于有出口了」
|
||
- 30:00 格挡成功叮一声+播报:「parried!这词我等了一轮」
|
||
- 45:00 带路每步重报方向:「这导航成精了,指哪走哪」
|
||
- 55:00 被 Boss 两刀放倒:「输得明白,死得服气」
|
||
- 70:00 第二次死亡全链听完:「两场死法两句真话,这游戏说话算话」
|
||
- 75:00 TITLE 上滑金币档一致:「账目都对,行,冲这个我愿意三周目」
|
||
|
||
## 如果只能改 3 件事
|
||
|
||
1. **让玩家真的听到铁器**:楼梯格上的单击下潜保留,但把「贴身铁器回声」改挂到踏格瞬间或下潜确认前播,或允许「楼梯上双击=重发脉冲」——别让唯一的新回声路径在输入层死锁(P1-1)。
|
||
2. **战斗中的救援链别饿着**:扑击接战计入「有内容的证据」,或战斗胜利后把卡关计时从「上次手势」改从「上次进展+战斗时长折算」。
|
||
3. **逃跑加前摇**:长按三义在主动扑击时代太容易误逃挨打,一拍前摇音就能把「撤退」变成玩家的选择而不是事故。
|
||
|
||
## 一句话裁决
|
||
|
||
**R1 那个捂着我耳朵 71 分钟的死循环真的死了——风暴 0 抢占、菜单能关、账目分毫不差、两场死亡句句真话,这游戏第一次从头到尾「说着人话」陪我走完了三层地窟;只剩「铁器回声」这一句教学承诺还差最后一口气,修掉它我就敢把「立刻再来一局」说满。**
|