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 全项目全绿
This commit is contained in:
xsl
2026-09-14 00:05:42 +08:00
parent 005851d01a
commit c8843233b0
670 changed files with 6726 additions and 218 deletions
+29
View File
@@ -488,3 +488,32 @@ ENDING: e*_a → e*_b(按 savedCount × p9 四选一)→ ep_lead → ep_*(
| 档位措辞真实 | §4.3 档位=floor(oxy/3) 可下潜次数,句义逐格为真 | §9「氧气账目真实」块 |
| 失败结算链完整不被打断 | 800ms 手势死窗盖取消链/干涸链/结局链;seqToken 作废在途链 | §9「结算链死窗」块 |
| PC 键盘操作提示 | 11 对 _k 变体+inputMode() 选择+集中分组标注 | §9「键盘变体」块 |
## 12. R2 修订记录(2026-09-13,依据 research/new8/abyss/round1/synthesis.md)
> 追加记录,不改旧裁定;凡本节与上文冲突,以本节为准。全部改动已落地 web/abyss/game.js,断言增量见文末注记。
| # | 旧裁定 | 新裁定(R2 起生效) | 依据 |
|---|---|---|---|
| R2-F1 | 玩家脉冲走 sonarGate 空闲门(§6.2 R1 按构造不重叠) | 玩家脉冲**先于门**:搜索等待态 voice 层只可能是向导散句(gd_ping*/gd_prog*),单击发脉冲时先掐散句、ping 立即出音。信息类回波仍走空闲门不变 | live R1 P1-1:ping 迟到 12~17s「回波先于脉冲」(3/5 复现),教学潜核心承诺错序 |
| R2-F2 | F5 尾句保护按 \_nodeSteps 重算尾句;签收链无死窗 | 尾句保护改认**实际播放链尾**(dyn 注入的档位句纳入保护:档位句不可被单击掐断);签收链(g9_in)入口盖 800ms 死窗(与取消/干涸/结局链同款) | live R1 P1-3:oxy_low 播 0.71s 被掐、g9_in 被在途 tap 剁到 0.28s |
| R2-F3 | 回波 wait 常数 2200/2600/4000ms | W_Metal/W_Knock/W_Groan = 3300/3500/5000ms(资产实长 2.76/2.96/4.42s + 静默一拍),兑现 §6.2 R2「回波→静默一拍→解读」。玩家单击仍可快进回波余音(_sonarSkip 不变) | live R1 P2-1 + P1 评审:回波尾巴压解读句开头 0.35~0.55s,定位一拍被吃 |
| R2-F4 | D4 双载额外 +1 不口播 | 双载形态下潜链追加 `dv4_dual`「两个人下同一潜。这趟往返,扣四格气。」(3+1=4 扣账口播化) | R1 P1:心算账 12−3−3+3−3−3=3 与耳朵听到的 crit 档差一格 |
| R2-F5 | crit 档全场景播「氧气见底,必须上浮。」 | 水面场景(SURFACE/ENDING)播新句 `oxy_crit_deck`「氧气见底,一潜都下不去了。」;水下(DIVE/COMMS)保留原句。档界 floor(oxy/3)=0 不变,两句各自逐格为真 | R1 P1:人已出水后「必须上浮」是说错地点的正确话 |
| R2-F6 | G5「首播必完整、复播可即掐」(§2.3):实现只兑现前半句(尾句保护为永久态) | 非 auto 叙事节点尾句保护改**首播制**:链自然播完登记 `_tailHeard`,此后该节点重播(菜单/状态复述)尾句可单击跳过;auto 过场尾句、直入抉择尾句、p* 提示、F4 锁恒保护不变。sys_skip(_k) 同步改词(见 voice-ids R2-F6) | live R1 P1-2:跳句承诺名存实亡(B 局全程零句可跳);radio F5 吃尾根因由首播保护继续挡住 |
| R2-F7 | 叙事链末/ENDING 无操作轨 full [25,50] / standard [13,30](§7.2) | full 档对齐 standard:**[13,30]**(搜索 [10,25]、抉择点 [25,50]、无进展轨 60/120s 不变) | R1 P2+P3:接通小舟后 25s 静默掐在钩子落地上(走神/怀疑锁屏) |
| R2-F8 | D4 danger 震循环 500ms(§5.2,≥400ms) | **1100ms**(危机拍 4s 窗内约 4 遍;≥400ms 下限仍满足) | R1 P2+P4:4 秒约 10 连震,贴身躺玩/年长者过刺激 |
| R2-F9 | 状态链每逢 crit 档附 warning 震(G2) | 按「进入 crit 档」去重:档不变复听不重复震;s_tier 跨档播报位的 warning 震保留 | R1 P4:压力局摸状态十几回,回回挨三连震 |
| R2-F10 | 状态链 = 潜次 → 氧档 → 帮助(G6) | 状态链 = 潜次 → **已救人数(prog_saved1..5,saved=0 不播)** → 氧档 → 帮助 | R1 P3:被打断后捡局面缺「船上躺着谁」 |
### §9 断言增量(R2 登记,已随 playtest.mjs 落地)
- F1:gd 行在播(stub 引擎在播)时搜索单击 → sonar_ping 立即起播且 gd 行被掐(不再入队迟到)。
- F2:档位句(oxy_* dyn 注入)播放中单击不跳(beat 轻震);SURFACE(4)→g9_in 过场 800ms 内在途 tap 被吞、签收链完整。
- F3:回波起播→解读句起播间隔 ≥ 对应 wait 常数量级(含静默一拍)。
- F4:双载 D4 播 dv4_dual;单载/取消不播。
- F5:SURFACE 的 crit 播报 = oxy_crit_deck;水下状态链 crit = oxy_crit。
- F6:首播中叙事尾句单击不跳;链自然播完后经菜单复述重播,尾句单击即跳(复播可即掐)。
- F7:full 档 COMMS 链末 13s→gd_continue、30s→gd_again(原 25s/50s 断言同步改 13s/30s)。
- F8:D4 危机拍 danger 震间隔 ≥1000ms(实测 = 1100ms)。
- F9:同档 crit 期间连续两次上滑状态链,warning 震仅一次。
- F10:状态链含 prog_savedN 且 N=当前 savedCount;顺序 潜次→人数→氧档→帮助。