round4: H1 escape目标带实时方位 + H2 simon轮次占用预告(根治手势两义) + H3 重听账目真实化(诊断=初始发放1次vs承诺2次) + H4 input看门狗5s + H5 归因真话(gd_miss_none) + 20语音 + guide120断言全绿
This commit is contained in:
@@ -184,3 +184,65 @@
|
||||
其后再走两步;simon 看门狗提示上滑重听 + 期望恰为 up 时上滑作答 + 双击音
|
||||
双击作答,全程无双击歧义时刻;space 每次撞击前 500ms 警报与「左!/右!/上!/
|
||||
下!」同窗到达。
|
||||
|
||||
---
|
||||
|
||||
# 14 · 向导交互层设计裁定(round4 v1.3 增补)
|
||||
|
||||
> 依据:research/04-playtests/round3/synthesis.md(H1~H5 + §3 新语音表,唯一事实源)。
|
||||
> 本文只做**追加**,上文 v1 / round2 / round3 裁定不回改;实现载体同前
|
||||
> (`web/engine/guide.js` + 各游戏 game.js 接线),全部改动已落地。
|
||||
|
||||
## 11. round4 裁定落地摘要(H1~H5)
|
||||
|
||||
| # | 裁定 | 落地 |
|
||||
|---|---|---|
|
||||
| H1 | escape 目标带方位 | 目标句接线点盘点:**found_key**(储物间拾钥匙→cabinet (2,1))、**gd_next_fuse**(开柜得保险丝→box (0,0))、**fix_box**(修电箱通电→gate (2,2))三处,句尾接播 `gd_room_l/r/u/d`(游戏反馈层全档位,gd_next_fuse 先例)。方位按房间图对当前坐标实时计算(x 0西..2东 / y 0北..2南;方向语义 = escape 移动坐标系,up/down/left/right 滑动方向即方位);斜对角只播一句、轴序与 `_navVoices` 一致(先东西后南北);目标在同一房间不播。**引导期 g7_goal 不接**:引导本身逐句带路(g3_left/g4_down),方位句冗余,且引导链被 escape playtest 场景 A/D 的 `finishVoices(3)→PLAY` 断言冻结(断言零改动红线)。 |
|
||||
| H2 | simon 占用手势预告 | `_playSequence` 序列播完 400ms 的「轮到你了」回调里按本轮序列插占用预告链:含 up→`gd_occ_up`、含 doubletap→`gd_occ_dt`、两者皆有→`gd_occ_both`(都不含则不播、直达 input);链尾接第 1 轮 your_turn → `_toInput`(`_speakGuarded`,每句 2.5s 缺失兜底)。游戏反馈层全档位,插在轮次链中(**预告先于「轮到你」**)。被占用轮次(序列含 up)input 看门狗 `say` 动态置空——只发 nudge earcon 不播重听建议句(实现从简,say 按 arm 时刻序列选择);仅 doubletap 占用不影响建议(建议只关联上滑重听键)。 |
|
||||
| H3 | simon 重听账目真实 | **诊断结论:教学/演练/看门狗均无隐性扣减**(教学期不触 chances;watchdog 提示不消耗机会——guide.test 既有断言)。缺口在**初始发放**:`_beginGame()` chances=1,而教学句 gd_economy 承诺「免费机会有两次」——第二次免费要打完第 4 轮才发放(每 4 轮 +1、上限 2),P1 在第 1 轮用掉唯一一次即听到绝对化「用完了」,账面对不上。**修法=使用时如实报余量**:`_relisten()` 消耗后余 1 播 `gd_chances_left1`、余 0 播 `gd_chances_left0`(替换该路径旧「用完了」句,全档位)——「用完了」从此只在真实余量为 0 时出现。答错自动消耗(retry_use + chances_out)与余 0 再求重听的拒绝(chances_out)两处保留:前者是 t7_retry 明说过的「答错可以消耗机会重听」的机会账、后者播报时点余量确为 0;且两处被 simon playtest 断言锁定(零改动红线)。初始发放数值 1 不动(playtest「初始 1 次重听机会」断言冻结;「不动玩法数值」红线仅豁免 H3 的账目真实化,不做经济重发)。 |
|
||||
| H4 | simon input 看门狗首级提前 | `GUIDE_INPUT_WATCHDOG_AT` [10000,25000]→**[5000,25000]**:仅 input 首级提前(P4「10 秒干等」),升级级 25s 与两级次数不变;该常量只用于 input 看门狗,非 input 阶段不动。 |
|
||||
| H5 | rhythm 归因真话 | `_tutEvaluate` 教学首次失败归因改四档:先判**应答窗口无任何尝试**(任一 cue 在窗内无尝试——出窗的自由演奏不算尝试)→ `gd_miss_none`「这拍没接」(none 优先级最高);真出手再分 wrong/early/late(沿用 `_tutAttempts` 判据)。纠正链(retry_*)不变;正片连 2 Miss 仍 `gd_miss`(`_applyMiss` 不动)。 |
|
||||
|
||||
## 12. round4 新增语音资产台词表(10 句 ×2 性别 = 20 文件)
|
||||
|
||||
全文与 synthesis §3 逐字一致(speaker/instruct 沿用各游戏旁白 pair 常量):
|
||||
|
||||
| 游戏 | id | 全文 | 触发 |
|
||||
|---|---|---|---|
|
||||
| escape | `gd_room_l` / `gd_room_r` / `gd_room_u` / `gd_room_d` | 左面的房间。/ 右面的房间。/ 上面的房间。/ 下面的房间。 | 目标句(found_key/gd_next_fuse/fix_box)播完后接播(H1,全档位) |
|
||||
| simon | `gd_occ_up` | 这一轮,向上滑是作答。 | 序列含 up(H2,全档位) |
|
||||
| simon | `gd_occ_dt` | 这一轮,双击是作答。 | 序列含 doubletap(H2,全档位) |
|
||||
| simon | `gd_occ_both` | 这一轮,向上滑和双击都是作答。 | 两者皆含(H2,全档位) |
|
||||
| simon | `gd_chances_left1` | 免费重听还剩一次。 | 免费重听用掉后余 1(H3,全档位) |
|
||||
| simon | `gd_chances_left0` | 免费重听用完了。之后重听会花一次机会,别怕,慢慢来。 | 用掉后余 0(H3,全档位) |
|
||||
| rhythm | `gd_miss_none` | 这拍没接。我停下的时候,就轮到你了。 | 教学应答窗口无尝试(H5,full 档,guide.error 通道) |
|
||||
|
||||
资产落位与管线同前:`tools/gen_voice_dual.py --game <g> --only <id>` GPU 逐条生成 →
|
||||
`--convert` 落盘 → `tools/check_all_assets.py` 终检。
|
||||
|
||||
## 13. round4 验证记录
|
||||
|
||||
- 6 playtest(guide=off)**断言零改动全绿**:storyline 54 / escape 103 / simon 108 /
|
||||
rhythm 81 / space 113 / rpg 139(与 round3 基线一致)。
|
||||
- `web/harness/guide.test.mjs` **120 条断言全绿**(round3 基线 93 条中仅 ② 块两条
|
||||
input 看门狗时刻断言随 H4 10s→5s 更新,并固定第 1 轮序列以隔离占用预告的动态
|
||||
say;其余既有断言零改动):新增 H 组 27 条——H1 方向映射按图校验(l/r/u/d +
|
||||
同房间 null)+ 三处目标句接线在真实解谜链上验证;H2 三种占用预告 + 预告先于
|
||||
「轮到你」+ up 占用轮看门狗无建议句 + 仅 dt 占用不影响建议;H3 余量句与真实
|
||||
余量一致(2→1 播 left1、1→0 播 left0、余 0 拒绝仍 chances_out);H4 首级 5s
|
||||
(升级级不变);H5 无尝试 gd_miss_none 且不再误报 late/wrong。
|
||||
- `tools/check_all_assets.py` 全绿(双格式配对、无 0 字节、全可解码、双性别集合
|
||||
一致);`tools/extract_voice_text.py` 已刷新 `web/harness/voice_text.json`
|
||||
(447 句)。`gen_voice_dual.py --check` 新增 10 句无时长离群;rpg/tut_b0 等
|
||||
4 句「缺 staging」为 R5 既有已知项,非本轮引入。
|
||||
- 转写抽查(research/04-playtests/transcripts/,6 份全部重跑、零资产缺失):
|
||||
simon——R1 占用预告 t+60.1 先于「轮到你了」t+62.2,5s 首级(t+69.3)与 25s
|
||||
升级(t+89.3)两级均无重听建议、期望恰为 up 时上滑作答;R5/R7 建议句 5s 准时
|
||||
(t+125.4 / t+179.7),两次免费重听分别跟播「免费重听还剩一次」(t+127.5)与
|
||||
「免费重听用完了。之后重听会花一次机会」(t+181.8),收工态余量 0 与播报一致;
|
||||
escape——
|
||||
gd_next_fuse(t+64.2)后 2.2s 接「左面的房间。」(t+66.4)、fix_box(t+85.0)后
|
||||
2.1s 接「右面的房间。」(t+87.1),均在目标句后 3s 内,剧本照方位句多跨四个
|
||||
房间摸到大门;rhythm——教学整拍不出手归因「这拍没接。我停下的时候,就轮到你了」
|
||||
(t+23.2)而非「慢了半拍」,正片首句全漏仍 gd_miss(t+71.6,正片规则不变);
|
||||
storyline/space/rpg 行为零改动。
|
||||
|
||||
Reference in New Issue
Block a user