真人首测反馈「交互还是很迷惑」:大厅 15 款里只有 3 款新交互,其余 12 款 仍是旧版(无声操作、连点连跳),整体体验割裂。本次: - engine/pipeline.js 新增 makeCompatPipeline(纯增量,游戏内部逻辑零改动): · 手势后 100ms 无任何音频调度 → invalid 回执(消灭无声操作,原则 4) · 语音中的手势 → 立即 ok 回执(§4.1 打断即收到) · 语音中 tap 400ms 防连点(§4.2,点两下不连跳两句) · longpressend/tapcancel 收尾噪声直通 - engine/audio.js 加 playCount 探针(回执启发式用) - 12 款游戏 index.html 接入兼容管道(rhythm 保留 immediateTap; 双击判定窗口不动——多款游戏双击是核心玩法/菜单确认,重映射会破坏) - 可闻度调优(真人首测:笔记本外放偏轻,26 号 §3「起步值,真人测试后再调」): 回执增益 ok 0.08→0.11 / invalid 0.10→0.13 / busy 0.04→0.06; 等待声 0.03→0.055 - 大厅:三款深度重构游戏(声命线/暗室/音序回响)置顶 + 「新交互」徽标, 卡片文案直接写玩法手势,测试不再误入旧交互游戏 测试:新增 compat-pipeline.test(9 断言);全部 15 款 playtest 回归通过 (共 3900+ 断言,0 失败);引擎 input/voice/guide 回归通过。
暗码(cipher)
1940 年江城,你是电讯处的夜班报务员,也是「北风」安在敌台内部的一双耳朵—— 一晚四封密电过你的手,每个词怎么译、报不报、报给谁,都由你按下。
- 设计文档:docs/design/19-cipher.md(含断言清单 §9)
- 台词表:docs/design/19-cipher-voice-ids.md(139 句)
- 类型:声命线叙事 RPG(9 抉择点:4 译词 3 选 + 5 叙事 2 选;4 结局;单局 19-22 分钟)
玩法(纯音频 · 6 手势)
| 手势 | 作用 |
|---|---|
| 单击 | 跳过本句 / 链末继续 / 选定候选(两段确认)/ 结局后再来一局 |
| 双击 | 重听电文;再双击 = 慢放 0.5×(无限免费) |
| 左/右滑 | 循环切换候选词(自动预听)/ 抉择 |
| 上滑 | 状态链(第几封 → 密码本余页 → 暴露档 → 帮助) |
| 下滑 | 模态菜单(单击循环 / 双击确认) |
| 长按 | 旁白快进;解码空闲时 = 翻密码本求提示(3 页,T1 首次免费) |
核心循环:截获(调谐 + 摩尔斯首播)→ 解码(听音辨词,三层兜底:正常译 / 慢放 / 密码本直译)→ 译文揭晓(正片不揭穿对错,译错是另一条真实剧情)→ 处置抉择 → 夜结算(暴露度跨档播报)→ 下一封。
摩尔斯电文为运行时程序合成(morse.js,750Hz 电文 / 620Hz 候选,u=80ms 恒定
不受语速设置影响)——时值精确是玩法命根,不走音频文件。
资产
audio/voice/{female,male}/双性别 134 句(+key/键盘变体 11 对)+ 平铺 NPC 5 句(处长)audio/sfx/12 件程序合成(tools/gen_cipher_syn.py)audio/bgm/4 首 Mureka(radio_room / closing / night / ending,90s 无缝循环)
本地运行
bash web/serve.sh # 起本地服务器
# 浏览器打开 http://localhost:8000/cipher/
测试
tools/node/bin/node web/cipher/test/playtest.mjs # 无头断言(设计文档 §9 全清单)