storyline/escape/simon 首批之后的推广收官:15 款全部按 26 号模式运行 (发言权/回执/三档提示/迷茫接管/手势阶梯/断点复述),旧「双击重听/格挡/ 菜单确认」等反模式口径全线废除,开场零规则念白(首句即动手)。 游戏层(12 款):rpg(格挡=前摇窗口内再单击)/ rhythm / space / radio / dungeon / abyss / detective / cipher / teahouse / keeper / bridge / hunt(联机切片): - 每款 game.js 接引擎六模块 + makeInputPipeline(doubleTapWindow:0); 四向玩法类 swipeCore + 长按帮助;双击是玩法的(space 护盾 / hunt 旋风斩)按手势阶梯阶段 3 分档恢复双击窗口(doubletapCore) - 每款 playtest 重写:玩法断言 + §6.2 乱点机器人(无声操作 / 被动 原句重复 / 打断失败 = 0);15 款 3900+ 断言全绿 - 12 份 docs/design/26-apply-*.md 施工单 + tools/voice_lines_26/ 台词清单 + voice-ids 文档同步 + 转写会话剧本按新口径重写 引擎层(web/engine/,6 处修复):pipeline 增 doubletapCore;novice teachLine 带 voice/ 前缀(此前教学句被静默丢弃);confusion.record 前置到新手门(锁定手势的乱点也计信号);InvalidHints 播完恢复解释前 状态(根治孤儿 BUSY);WaitPoint takeover(2) 台账去重;台账只在 speak 真正播出时登记。遗留引擎债登记 roadmap §3.1。 语音资产:台词表合并(新增 ~250 系统句 / 改 ~50 旧口径 / 删 ~110 废止句;合并器 tools/merge_voice_lines_26.py + 引用校验器 tools/validate_voice_refs.py),GPU 重录 1536 wav → 4204 ogg/m4a 落地,check_all_assets + validate_voice_refs 双绿;键盘变体同步扩表。 大厅/文档:15 款统一新交互口径(「新交互」徽标退役);README / HANDOVER / rpg README 旧口径修正;roadmap P0-P3 置完成。
守塔人(KEEPER · The Keeper)
风暴夜叙事 RPG。孤岛白角灯塔,电台里一声比一声近的求救,牵出你家三代守塔人的 秘密——守灯,还是救人;说出真相,还是守住秘密。 单夜 21-24 分钟,9 个抉择点、 4 结局。设计全文见 docs/design/21-keeper.md(台词表 21-keeper-voice-ids.md)。
声命线范式(radio/abyss 同骨架):节点链叙事 + 左右滑抉择 + 多结局。本作核心 差异层 = 时空双线:两个时空只靠音色与底噪区分——风暴与雾角=现在,唱针落下 与老唱片底噪=回忆。「回忆会开口说话」:每段插叙都是给现在抉择供货的信息。
玩法
- 一个完整风暴夜 = 三幕(风暴起 / 风暴顶 / 风歇前),幕间雾角报平安。
- 信任(阿澈信你有几分,四个信任点累计)与真相(三代秘密翻开几层,三段 插叙)双标量跨幕积累;结局 = 信任档 × 心结抉择(说出/守住),灯与阿澈各有三态 差分(尾声回响逐项点名)。
- 回忆插叙 = 唱针落下 → 父辈/祖辈片段(≤6 句 auto)→ 风声回来。进入插叙的钥匙 藏在抉择里:翻暗格(层1)、口诀或真话(层2,双钥匙补偿)、读完缺页(层3,前置 层2)。随时上滑听「这是回忆:祖父的年代,四十年前」确认时位。
- 零死亡零倒计时:阿澈恒活着;软失败(灯灭过一刻钟/他自己冲滩)全是叙事差分, 每句归因都指向你的实际选择。
手势(6+2 全覆盖零豁免)
| 手势 | 叙事态(INTRO/WATCH/MEMORY/CALM/ENDING) |
|---|---|
| 单击 | 播放中=跳过本句(抉择提示/插叙锚句首播/交接尾句不可跳);链末=继续;结算后=再来一夜 |
| 双击 | 重听当前节点(含抉择提示);回忆中=重听当前回忆节点;结算后=重听结局链 |
| 左/右滑 | 抉择(左=走心·翻开/说出,右=克制·程序/守秘);其余时刻无效 → error 震+语音 |
| 上滑 | 状态链:时位句(现在是哪幕/是不是回忆)→ 信任档 → 真相度 → 帮助,随后重播当前段 |
| 下滑 | 模态菜单(单击循环选项 / 双击确认 / 上滑帮助 / 下滑关闭) |
| 长按 | 旁白快进(引擎接管,叙事类不豁免) |
存档断点续玩:进游戏听到「单击继续上次,右滑开始新的风暴夜」;在回忆里退出, 回来先听时位句「这是回忆:父亲的最后一晚,十二年前」,从当前回忆句继续。
运行
bash web/serve.sh # Node 零依赖服务器(静态 + REST)
# 浏览器打开 http://<局域网地址>:8000/keeper/
资产再生成
- 台词:
source env.d/tts.sh && flock .gpu.lock .venv-tts/bin/python tools/gen_voice_dual.py --game keeper(→--check→--convert)。 - 音效:
.venv-tts/bin/python tools/gen_keeper_syn.py(17 件程序合成,one-shot 真峰值 ≤-3dBFS + 去直流 + 8ms cos²;loop 边界静音口袋)。 - BGM:
bash web/keeper/gen/gen_bgm.sh(Mureka flac → 90s 无缝循环)。 - 封面:
.venv-tts/bin/python web/keeper/gen/gen_cover.py。