Files
SoundGame/docs/design/01-escape-redesign.md
T
xsl 963dfa1cc8 fix(escape): 暗室状态引导方案落地(25号策划文档 B1-B8 → F1-F9 实施)
策划轮:25-escape-map-flow.md as-built地图/玩家流程/信息账本+盲区清单(S1-S7)+方案B1-B8
实施(玩法零改动,只加状态引导层):
- F1 撞墙方位句「左边是墙」(wall_dir_*×4,同向10s限频)
- F2 目标句并入方位「铁柜,在右面的房间」(gd_*_dir×3)
- F3 无进展150s活跃计时器+gd_prog_1..3进度重述(只重述不泄题,专治活跃迷路玩家——修卡关计时从「无进展」退化为「无操作」的既定偏差)
- F4 双击兜底直通L2降级L1(不再白送答案)
- F5 空房首访描述(4空房可区分)
- F7 busy窗口手势缓存补判(原静默吞手势)
- F8 结算链单击守卫(time_band/again完整到达)
- F9 跳过引导补播目标句
- F6 空房方位特征句按25号裁定留档后续轮
新增语音10句×2性别(flock串行QC无离群,ASR逐字正确)
验证:escape playtest 235/235(+85新断言)+ guide 132/132 + 终检全绿 + 14游戏回归零回退
live复跑10.4分钟通关:零截断,S1-S7盲区逐条核销
档案 research/escape-state/round1-2;01号文档追加修订记录R1
2026-09-15 00:37:41 +08:00

149 lines
12 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.
# 01 · 《暗室》重设计(escape redesign)
> **给开发者的实现要点摘要**
> 1. 保留 3x3 网格与谜题链骨架(钥匙→铁柜→保险丝→电箱→大门),重写开场:前 ~2 分钟为**引导式脚本**(带玩家走到储物间、教会移动/检查/双击使用),之后进入自由探索。
> 2. 新增**卡关检测 + 三级提示**:以上一次"进展事件"起算,60s 无进展给暗示、120s 给明示、180s 给带路级提示;提示由计时器自动播出,不依赖玩家发现隐藏手势。
> 3. 环境线索音**可重听**:单击检查总是先重播当前房间环境音再播描述;9 个房间环境音去重(关键房间专属线索音)。
> 4. 操作反馈全部改震动(确认/撞墙/拾取/错误),iOS 静默降级;删除数字拼接播报,用时改为分段整句。
> 5. 手势映射(偏离全局默认,教学中讲清):四向滑=移动,单击=检查/重听,双击=使用物品/背包与目标,引导阶段下滑=跳过引导。
---
## 1. 现版诊断:"第一个房间都出不去"断在哪
读 `web/escape/game.js` 现版流程,新手断点有四:
1. **教学是两段可跳过的长旁白,零交互**(`voice/intro` → `voice/tutorial`,game.js:56-87)。玩家听完(或单击跳过)后被直接丢进 `PLAY`,没有任何一次"做对了一件事"的体验确认。移动、检查、使用物品三个核心动作都没有被验证过玩家真的会了。
2. **进入自由探索后没有任何方向感支撑**。起点 (1,1) 播一句 `voice/start_room`,玩家不知道房间有 9 个、不知道自己在哪、不知道目标在西南角。环境音只有 3 种(hum/wind/drip)铺给 9 个房间(`_playAmbient`, game.js:134-145),相邻房间声音雷同,靠环境音导航不成立。
3. **环境线索音只播一次**。进房间播一遍就没了,没听清就永远错过;`voice/wall` 撞墙提示也只播一次(`wallVoicePlayed`)。
4. **提示系统存在但不可达**。`hint_*` 四级提示语音已生成,但唯一入口是"双击且无可用目标"的兜底(game.js:195-198)——玩家根本不知道双击这个手势存在,更不知道要在"错误的地方"双击才能听到提示。卡关玩家恰恰是不会操作的人,提示入口藏在操作里,死循环。
## 2. 新开场:引导式脚本(GUIDE 阶段)
目标:前 2 分钟是"手把手",玩家每做一个动作都得到确认,引导结束时已天然完成谜题链第一环(拿到钥匙)。
### 2.1 流程
阶段 `GUIDE`(脚本化,步骤由玩家手势推进,不是定时旁白):
| 步 | 旁白(整句,功能) | 等待的玩家动作 | 反馈 |
|---|---|---|---|
| G0 | 剧情引入(2 句以内,比现版 intro 短):醒来、漆黑、要逃出去 | 单击继续 | CONFIRM 震动 |
| G1 | "先活动一下。试着朝任意方向滑一下,走一小步。" | 任意滑动 | 脚步声 + SWIPE_OK 震动 + "很好,你迈出了第一步。" |
| G2 | "这个房间不大,边界是墙。再滑两下,试着碰碰墙。" | 滑动 2 次(其中撞墙也计数) | 撞墙:wall 闷响 + ERROR 震动 + "那边是墙,换个方向。"(每次撞墙都播,取消 wallVoicePlayed 一次性限制);未撞墙:脚步 + SWIPE_OK |
| G3 | "跟着我指的路走。向左滑。" | 左滑(做错给纠正语音重等) | 脚步 + "对。再向下滑。" |
| G4 | "再向下滑。" | 下滑 | 脚步 + 到达储物间,播储物间专属环境音 |
| G5 | "听到水声和铁锈味了吗?单击一下,仔细检查这个房间。" | 单击 | pickup 音 + PICKUP 震动 + "你摸到了一把钥匙!"(谜题链第一环完成) |
| G6 | "钥匙应该能开什么。双击是把物品用出去的用法。现在先记住:双击。" | 双击 | 兜底播报背包 + CONFIRM 震动 + "对,就是这样。接下来靠你自己了。" |
| G7 | 目标陈述:"找到能用这把钥匙打开的东西。需要帮助时,在原地双击。" | — | 进入 PLAY |
- 引导期间任何步骤可**下滑跳过**(播"跳过引导"确认后直达 PLAY);跳过标志存 localStorage/进度,第二次进游戏开场直接问"上滑重听引导,单击直接开始"。
- 引导期间做错手势:不惩罚,播一句短纠正("不是这个方向,向左滑")继续等待;同一个步骤错 3 次给 `WARNING` 震动 + 更直白的重述。
- 引导脚本写死路线 (1,1)→(0,1)? 不,(1,1)→左=(0,1),再下滑=(0,2) 储物间。路线合法(现版图 (0,1) 是空房·风)。引导期间超出脚本路线的滑动被温和拦回("先跟我走")。
### 2.2 教学覆盖核对
引导结束时玩家已亲手做过:滑动移动(含撞墙)、单击检查、拾取、双击使用/查看。全部六个手势里只剩"上滑"未用——escape 不用上滑(豁免,见 00 文档 §5.2),无需教。
## 3. 卡关检测与三级提示
### 3.1 进展事件
以下任一发生即重置卡关计时器 `lastProgressAt`:拾取钥匙、打开铁柜、拾取保险丝、修好电箱、首次到达某关键房间(铁柜房/电箱房/大门,各记一次)、成功逃脱。普通移动/检查空房不算进展。
### 3.2 三级提示(计时器自动触发,无需手势)
| 无进展时长 | 级别 | 内容(整句预生成,每级每阶段一句) | 附带 |
|---|---|---|---|
| 60s | L1 暗示 | 面向当前目标的一句意象提示,如"铁锈味最重的地方,值得仔细看看" | WARNING 震动 + 语音提示前播"需要帮助吗?" |
| 120s | L2 明示 | 直接点明目标房间与动作,如"去西南角的储物间,单击检查,找钥匙" | WARNING 震动 |
| 180s | L3 带路 | 以玩家当前坐标算路,逐步导航:"从这里,向左滑,再向下滑"(每次触发按当前位置重算,滑动方向词为预生成的整句组合:方向指令句 4 句 × 顺序连读,非数字拼接,允许两句链播) | WARNING 震动,此后每 60s 重复 L3 直至有进展 |
- 提示级别按当前谜题链阶段(`_hintVoice()` 的 4 阶段:找钥匙/开铁柜/修电箱/开大门)× 3 级 = 12 句新增语音,全部是**整句**。
- 提示播完不重复骚扰:同 level 对同阶段只自动播一次(L3 除外,可周期重复)。
- 主动求提示保留:双击无目标时的兜底语音升级——先播背包,再播 L2 级明示(原来是 L1 级 hint_*)。
## 4. 环境线索音可重听 + 房间声音去重
1. **单击检查 = 重播环境音 + 描述**:`_inspect()` 改为先 `play(当前房间环境音)` 再链播描述语音(现版只播描述)。玩家随时可重听线索。
2. **环境音从 3 种扩到 6 种**,关键房间各有专属签名(Stable Audio 3 生成或合成,双格式):
- 储物间 (0,2):滴水 + 金属杂物轻响(`amb_storage`)
- 铁柜房 (2,1):嗡鸣 + 铁皮共振(`amb_cabinet`)
- 电箱房 (0,0):电流嗡鸣 + 偶尔火花(`amb_power`)
- 大门 (2,2):风声 + 门外空旷感(`amb_gate`)
- 起点 (1,1):单一滴水(`amb_drip`,保留)
- 其余 4 间空房:风声/远处嗡鸣两种弱化版轮换(`amb_wind`/`amb_hum` 保留)
3. 进房间自动播环境音(保留现行为),且**每次进入都播**——不再是"错过就没了",配合单击重听,线索可随时复核。
4. 大门房间通电后环境音切换为带电流声的版本(`amb_gate_live`),听觉上确认"电通了"这条谜题状态。
## 5. 反馈改震动(对齐 00 文档 §2)
| 事件 | 原反馈 | 新反馈 |
|---|---|---|
| 移动成功 | 脚步声 | 脚步声 + SWIPE_OK |
| 撞墙 | wall 闷响 | wall 闷响 + ERROR |
| 拾取/开柜/修电箱 | sfx + 语音 | sfx + 语音 + PICKUP / SUCCESS |
| 双击无目标(无效使用) | ui_deny 提示音 | **删除 ui_deny**,改 ERROR 震动(内容语音保留) |
| 逃脱成功 | 音效+语音 | 音效+语音 + SUCCESS |
| 提示出现 | 无 | WARNING |
`sfx/ui_deny` 这类"反馈提示音"全部退役;内容音(脚步、撞墙、机关)保留。
## 6. 语音重做清单(整句化 + 双音色)
- **删除**:`n0`-`n9`/`nshi`/`unit_min`/`unit_sec`/`time_prefix` 数字拼接链。用时播报改 4 段整句:"不到两分钟""五分钟内""十分钟内""超过十分钟"(`time_band1..4`),前缀"你逃出来了,用时"并入各段整句一次生成。
- **新增**:引导脚本 8 步全部语音(每步 1-2 短句)、12 句三级提示、跳过引导/二周目开场句、储物间等 4 个关键房间的新描述。
- **保留可用**:`empty_*`、`inspect_*`、`found_key`、`unlock_cabinet`、`fix_box`、`escape`、`replay`、`inv_*` 已是整句,重录一版 male 目录即可(文本不变,speaker=Uncle_Fu,instruct 与 female 版同款)。
- 全部语音按 00 文档 §3 生成:同 speaker+instruct 常量、female/male 双目录、ogg+m4a 双格式。
## 7. 流程图(新)
```
start → GUIDE(可下滑跳过)→ PLAY(自由探索 + 三级提示计时器)→ ENDING → 单击重开 / 下滑菜单
```
PLAY 阶段手势:四向滑=移动 / 单击=重播环境音+检查 / 双击=使用物品(无目标→背包+L2 明示)。ENDING:单击=重开,下滑=菜单(回大厅)。
---
## 修订记录(追加不改旧文,编号自 R1 起)
### R1 · escape-state round2 状态引导改进(2026-09-15,方案见 25 号文档 §4.1)
按 25 号文档 §4.3 实施清单 F1-F9 落地(F6/B5b 按方案"可分期"留档):
1. **撞墙报方位(B1/F1)**:§2.1 G2 表格的撞墙反馈在 PLAY 阶段升级为
`wall` 播完接播陈述式方位句 `wall_dir_<dir>`「左边是墙。」等 4 句
(同向 10s 限频、被打断作废)。这是对 round1-live"回退教学腔方位句"的
部分再修订——回退掉的是措辞,方位信息以世界内陈述句回归。
2. **目标句带目标名(B2/F2)**:三处进展链尾方位句由「右面的房间。」升级为
"目标名+方位"一体句(`gd_cabinet_dir`/`gd_box_dir`/`gd_gate_dir`),
原 `gd_room_*` 保留作异常路径回落。
3. **无进展计时器回收(B3/F3)**:§3.1"以上一次进展事件起算"的原始意图以
**平行通道**部分回收——无进展 150s 且期间 ≥5 次有效手势(活跃迷路)播
不泄题的进度重述 `gd_prog_1/2/3`(每进展段限 1 次);现行"无操作 60/120/
180s"三级提示骨架不动(round1-live 修订继续有效)。
4. **§3.2 末条修订(B4/F4)**:「主动求提示保留:先播背包,再播 L2 级明示」
修订为「先播背包/use_fail,再播 **L1 级意象暗示**」——live 两次实录没卡关
的玩家被白送 L2 答案(泄漏 > 帮助),L2/L3 仍锁在计时器里(修订留痕于此,
25 号文档 §4.1 B4 有完整证据链)。
5. **空房首访描述(B5a/F5)**:§4 房间声音去重补一条——空房首访一次性补播
现有 `empty_*`(不算进展事件;B5b 含方位特征的改词重录留后续轮)。
6. **引导 busy 手势缓存(B6/F7)**:§2.1 补——步骤推进语音播放中(busy)
的首个非跳过分手势被缓存,解锁后按新步骤补判(合法=作答,不合法=答错
路径;缓存手势不触发下滑跳过),符合 00 文档 §5.4"做了手势 3 秒内必须有
反馈"。
7. **结算链单击守卫(B7/F8)**:§7 流程图 ENDING 补——结算链播完前单击不
立即重开(`_settleBusy`,链完/30s 兜底解除),保障用时播报与操作指引的
完整到达权。
8. **目标句全局可达(B8/F9)**:§2.1"跳过引导直达 PLAY"修订——跳过确认句
后与 REOPEN 直进路径都补播一次 `g7_goal`(任何路径进 PLAY 都至少听过
一次目标句;二周目可单击跳过)。
新断言登记(13 号文档不动):escape playtest 场景 G-N(B1/B2/B3/B4/B5a/
B6/B7/B8 各场景,含边界:B3 进展复位、B4 降级后 L2 仍可达、B6 缓存按序
补判、B7 结算链完整到达)共 +85 条至 235 全绿;guide.test ⑩c 换线 +
⑩d B6 full 档共 132 全绿;逐条勾账与既有断言变更登记见 25 号文档
「阶段四 · 实施勾账」。新语音 10 句台词表见 01-escape-voice-ids.md
「escape-state round2 新增主表句」。