Files
SoundGame/docs/design/19-cipher.md
T
2026-10-01 23:26:47 +08:00

7.8 KiB
Raw Blame History

19 · 《暗码》(cipher) — 1940 密战叙事 RPG

给开发的实现要点摘要

  1. 交互权威:26 号手册。叙事+解码小局,不用四向滑动,帮助=上滑。废除 DECODE 双击重听/慢放、长按翻密码本。
  2. 摩尔斯由运行时 morse.js 合成(不走有损文件)。左右滑预听候选即对照电文——新手靠这一层听辨,不必先学双击。
  3. 暴露度隐藏资源;教学封 T1 译错即时归因+无限重选;正片译错不揭穿,尾声兑现。
  4. 台词 19-cipher-voice-ids.md(139 句:双性别 134 + NPC 5)。键盘变体 11 对。
  5. 章程 N3:15–25 分钟、9 抉择(4 译词+5 叙事)、4 结局。

附录 C · 设计单

1. 一句话核心动作

听电文,左右滑对照候选词,单击选定;叙事段单击继续、左右滑处置。

2. 玩家能感知的状态(3 个)

状态 听感 Floor
听讲 旁白/处长,BGM 整链压低 SPEAKING
译电 摩尔斯(750Hz 电文 / 620Hz 候选)+ choice 签名 + 等待声 YOUR_TURN
轮到你(叙事) turn + 等待声 YOUR_TURN

静电底噪是场景,不单开第四态。

3. 新手手势与解锁

手势 含义 解锁
单击 继续;DECODE 浏览=进确认;确认=定下 阶段 0
左/右滑 叙事抉择;DECODE=循环候选(自动预听对照档) 阶段 0
上滑 我在哪(第几封。密码本余页。暴露档。左右滑听词。) 阶段 1(T1 译对后)
下滑 菜单(含「翻密码本」) 阶段 2(第一局结束)
双击 按单击。阶段 3=重听电文原速;再请求=慢放 0.5× 阶段 3
长按 新手 invalid。之后旁白加速。不翻密码本 —

密码本:阶段 2 菜单项;迷茫 L3 也可演示慢放+揭示辨析位(教学 T1 首次翻页仍免费,由系统在 T1 迷茫或菜单未解锁前自动给一页教学)。

4. 状态 × 手势矩阵(新手期)

状态 \ 手势 单击 左/右滑 上滑 下滑(未解锁) 双击 连点
游戏在说 跳句(摩尔斯首播/p* 不可跳 → busy) 缓存抉择 / DECODE 首播中 busy 轻声 我在哪 invalid 按单击 400ms busy
RX 首播摩尔斯 busy busy 我在哪 invalid 按单击 busy
DECODE 浏览 进确认(电文原速再播一遍) 切候选:620Hz 摩尔斯 → 静默一拍 → 词义句 状态链 invalid 按单击 迷茫
DECODE 确认 定下(800ms 死窗→揭晓) 取消回浏览 状态链 invalid 按单击 busy
叙事等选择 再听选项 抉择 「左右滑。」 invalid 按单击 迷茫
结算 新夜班 invalid 结局+档 菜单(阶段2) 按单击 第一下
菜单 确认(可消耗一页密码本) 切项 重听说明 关闭 按单击 busy

摩尔斯不叠语音(morseGate)。BGM 摩尔斯期间 −6dB。u 恒定,不受 settings.speed。

5. 等待点

id 期待 full short 静默 L2 L3
intro tap 「点一下屏幕。」 「点一下。」 6s/15s tap 替点
decode L/R 「左右滑,听候选词。」 「左右滑。」 10s/25s L/R 慢放电文一遍再交还
confirm tap 「单击,定下这个词。」 「单击。」 10s/20s tap 替确认
choice L/R pN 「左右滑,选。」 25s/50s L/R 演示
continue tap 「单击,继续。」 「单击。」 13s/30s tap 替继续

T1 译错不进失败终局:即时 dv1_wrong(摩尔斯写死在句里)+ 回浏览。正片译错不揭穿。

6. 首 3 分钟

时间 播 期待 没做 做错
0~3s 雨+静电 →「点一下屏幕。」 单击 「点一下。」 滑 invalid
3~8s 调谐 → BAY 摩尔斯首播(不可跳) 听
8~10s turn →「向右滑,听下一个词。」 右滑 「向右滑。」 点太早进确认:可左滑取消
10~25s 候选对照 → 滑到 BAY → 单击→再单击定下 滑+点 L3 慢放+揭示 B DAY/RAY:即时归因重选
≈25s 「对。」dv1_right(第一次成功)
25~60s p2 报北风/压日志 左右滑 复述 不盲选
60~180s T2 开始;上滑已解锁 译词 三档 正片错译走分支

7. 失败表

类型 判定 归因 回到 新手期
T1 译错 非 BAY 「不对。B,一长三短。」 浏览,无限 暴露 +0
正片译错 非真词 不揭穿;揭晓按认知 处置链 暴露 +1
页数用尽再翻 hints=0 paper_page + invalid,无语音轰炸 原地 —
收网 p9 前 expose≥5 且发报 d9_caught 真话 结局 e3 软失败
迷茫 L3 慢放 浏览 无

8. 台词类别

  • critical:开场点一下;T1 教学「左右滑,听词」
  • content:rx/dv/rev/r*/n*/p*/e*/ep_*
  • hint:gd_tune 改为不含双击;book_3..0;exp 四档;hint_* 密码本
  • feedback:dv1_wrong、inv_*
  • 停用:gd_tune2「双击再听/再双击放慢」、E1 长按翻本口令

139 句;音频 134×2+5=273 ×2 格式。摩尔斯零文件。

9. 断点复述

保存 expose/hints/t1..t4/p flags。回来 sys_continue_ask。DECODE 恢复:重挂浏览并自动预听当前候选。上滑:第 N 封。余页。暴露档。左右滑。

10. 测试记录

改:双击不慢放;长按不扣页;菜单确认翻页;3s 动手;10s 内完成一次候选预听。morse 事件钩子字符断言保留。剧本 E 提示流改走菜单或 L3。


1. 概述

1940 江城,电讯处夜班报务员,也是「北风」的耳朵。四封密电:怎么译、报不报、报给谁。压力=隐藏怀疑账本+认知风险(译错是另一条真剧情)。无倒计时、无死亡。

2. 摩尔斯小局

参数 值
u 原速 80ms(≈15 WPM),不随语速
慢放 u=160ms,阶段 3 或 L3
对照档 u=110ms,切候选自动播
音色 电文 750Hz / 候选 620Hz,正弦+5ms 边沿
封 真词 候选 辨析位 提示
T1 船期 BAY DAY/RAY 1: B/−··· 第 1 字母 B,一长三短
T2 名单 TOP TAP/TIP 2: O/−−− 第 2 字母 O,三长
T3 交接 HAND SAND/LAND 1: H/···· 第 1 字母 H,四短
T4 处置令 SPY SAY/SLY 2: P/·−−· 第 2 字母 P,短两长短

提示揭示辨析位 ⟹ 候选唯一。密码本 3 页,T1 教学首次不扣;用尽只翻空纸声。

流:RX 引入+调谐+电文首播不可跳 → 浏览(滑=预听)→ 单击确认再播电文 → 再单击定下。

3. 状态机与树

INTRO → RX(1) → DECODE(1) → RELAY(1) → NIGHT → … → RX(4) → 签收 p9 → ENDING。

T1 恒收敛真词。T2–T4 译错不揭穿,p4/p8/p9 走 known/blind 差分。p6 亲自去 expose+2;p8 反喂 +2;p9 左发报结局用 p9 前暴露。

结局 p9 前 expose p9
e1 最后一电 ≤4 左
e2 值完这个班 ≤4 右
e3 孤灯 ≥5 左
e4 长夜 ≥5 右

暴露事件:T2–T4 译错 +1/封;p2 右 +1;p4 左 +1;p6 左 +2;p8 左 +2。档:0 calm / 1–2 low / 3–4 mid / ≥5 hot(=收网门)。跨档才播。

4. 音频

BGM:radio_room / closing(T4 起)/ night / ending。SFX:tune_seek、static_bed、amb_room、paper_page、key_send、pen_scratch、tea_cup、step_halt(前置 2s)、lock_click、dawn_bell。处长 Eric 平铺 5 句。快手七无台词,存在=手法音。

5. 存档与验算

剧本 A 全对全右 p9 左 → e1 expose=0;C 全错全左 → e3。边界 wrong=2+risk=2=4 仍 e1/e2。summary:第N封 · 暴露档 · 余页K · 结局X/4。