- 新增 web/ 纯音频 HTML5 平台:共享引擎(手势/WebAudio 三层/设置/震动)、 Node 零依赖服务器(静态 + 注册登录 + 进度存档 API) - 游戏:剑与声(RPG 新作)、声命线、暗室(重设计)、音序回响(重设计)、 节拍行者(跟随领奏重构)、盲航(同向闪避重构);声东击西删除 - 全局功能:男声/女声双套 TTS 资产、三档语速、BGM 音量三档、 震动反馈语言(10 种震型)、服务器进度同步 - 资产:899 ogg + 899 m4a(Qwen3-TTS 双性别语音、Stable Audio 3 音效、 Mureka BGM 4+3 首),终检零缺失 - 文档:docs/design/ 13 篇设计审查文档、docs/audio/ 资产管线、 web/server/README.md API 文档
9.1 KiB
9.1 KiB
01 · 《暗室》重设计(escape redesign)
给开发者的实现要点摘要
- 保留 3x3 网格与谜题链骨架(钥匙→铁柜→保险丝→电箱→大门),重写开场:前 ~2 分钟为引导式脚本(带玩家走到储物间、教会移动/检查/双击使用),之后进入自由探索。
- 新增卡关检测 + 三级提示:以上一次"进展事件"起算,60s 无进展给暗示、120s 给明示、180s 给带路级提示;提示由计时器自动播出,不依赖玩家发现隐藏手势。
- 环境线索音可重听:单击检查总是先重播当前房间环境音再播描述;9 个房间环境音去重(关键房间专属线索音)。
- 操作反馈全部改震动(确认/撞墙/拾取/错误),iOS 静默降级;删除数字拼接播报,用时改为分段整句。
- 手势映射(偏离全局默认,教学中讲清):四向滑=移动,单击=检查/重听,双击=使用物品/背包与目标,引导阶段下滑=跳过引导。
1. 现版诊断:"第一个房间都出不去"断在哪
读 web/escape/game.js 现版流程,新手断点有四:
- 教学是两段可跳过的长旁白,零交互(
voice/intro→voice/tutorial,game.js:56-87)。玩家听完(或单击跳过)后被直接丢进PLAY,没有任何一次"做对了一件事"的体验确认。移动、检查、使用物品三个核心动作都没有被验证过玩家真的会了。 - 进入自由探索后没有任何方向感支撑。起点 (1,1) 播一句
voice/start_room,玩家不知道房间有 9 个、不知道自己在哪、不知道目标在西南角。环境音只有 3 种(hum/wind/drip)铺给 9 个房间(_playAmbient, game.js:134-145),相邻房间声音雷同,靠环境音导航不成立。 - 环境线索音只播一次。进房间播一遍就没了,没听清就永远错过;
voice/wall撞墙提示也只播一次(wallVoicePlayed)。 - 提示系统存在但不可达。
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. 环境线索音可重听 + 房间声音去重
- 单击检查 = 重播环境音 + 描述:
_inspect()改为先play(当前房间环境音)再链播描述语音(现版只播描述)。玩家随时可重听线索。 - 环境音从 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保留)
- 储物间 (0,2):滴水 + 金属杂物轻响(
- 进房间自动播环境音(保留现行为),且每次进入都播——不再是"错过就没了",配合单击重听,线索可随时复核。
- 大门房间通电后环境音切换为带电流声的版本(
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:单击=重开,下滑=菜单(回大厅)。