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

154 lines
7.3 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.
# 21 · 《守塔人》(keeper) — 孤岛灯塔叙事 RPG
> **给开发的实现要点摘要**
> 1. 交互权威:26 号手册。纯叙事,对齐 storyline。帮助=上滑。废除双击重听节点。
> 2. 核心差异=时空双线:现在(风暴+电台)/回忆(老唱片)。切换靠内容层(sfx+底噪+BGM+锚句),**不新增 earcon**。
> 3. 信任/真相双标量;软失败=灯灭一刻钟/他自己冲滩,零死亡零倒计时。
> 4. 台词 [21-keeper-voice-ids.md](21-keeper-voice-ids.md)(148 句:双性别 121 + NPC 27)。结算/插叙入口 800ms 死窗。
> 5. 章程 N4:15–25 分钟、9 抉择(实选 8–9)、4 结局。
---
## 附录 C · 设计单
### 1. 一句话核心动作
**听一夜值守,单击继续;听到选项时左右滑:守灯还是救人、说出还是守住。**
### 2. 玩家能感知的状态(3 个)
| 状态 | 听感 | Floor |
|---|---|---|
| 现在·听讲 | 风暴底噪 + 电台人声,BGM storm 压低 | SPEAKING |
| 回忆·听讲 | 唱针+vinyl 底噪 + 唱片滤波人声,BGM memory | SPEAKING |
| 轮到你 | turn + 等待声(回忆链 auto 不交等待) | YOUR_TURN |
两种「听讲」必须 2s 内靠底噪可辨(vinyl vs 风)。上滑时位句确认。不把它们拆成第四态。
### 3. 新手手势与解锁
| 手势 | 含义 | 解锁 |
|---|---|---|
| 单击 | 继续 / 跳过当前句 | 阶段 0 |
| 左/右滑 | 抉择 | 阶段 0 |
| 上滑 | 我在哪(时位句先行:幕或「这是回忆」→ 信任档 → 一个动作) | 阶段 1(第一次抉择后) |
| 下滑 | 菜单 | 阶段 2(第一结局) |
| 双击 | 按单击。阶段 3=重听当前等待点/当前回忆节点 | 阶段 3 |
| 长按 | 新手 invalid;之后加速 | — |
### 4. 状态 × 手势矩阵(新手期)
| 状态 \ 手势 | 单击 | 左/右滑 | 上滑 | 下滑(未解锁) | 双击 | 连点 |
|---|---|---|---|---|---|---|
| 现在在说 | 跳句(p*/锚句首播不可跳 → busy) | 缓存抉择,不盲选 | 时位+信任+动作 | invalid | 按单击 | 400ms busy |
| 回忆在说 | 跳中段句;锚入/锚出首播 busy | invalid(插叙无选择) | 「这是回忆。听完就回到现在。」 | invalid | 按单击 | busy |
| 等你继续 | 继续 | invalid | 我在哪 | invalid | 按单击 | busy |
| 等你选择 | 再听选项 | 抉择 | 「左右滑。」 | invalid | 按单击 | 迷茫 |
| 结算 | 新风暴夜 | invalid | 结局+信任一句 | 菜单(阶段2) | 按单击 | 第一下 |
| 菜单 | 确认 | 切项 | 重听说明 | 关闭 | 按单击 | busy |
MEMORY 关菜单后重播当前回忆节点,底噪仍 vinyl。
### 5. 等待点
| id | 期待 | full | short | 静默 | L2 | L3 |
|---|---|---|---|---|---|---|
| intro | tap | 「点一下屏幕。」 | 「点一下。」 | 6s/15s | tap | 替点 |
| continue | tap | 「单击,继续。」 | 「单击。」 | 13s/30s | tap | 替继续 |
| choice | L/R | pN | 「左右滑,选。」 | 25s/50s | L/R | 「左右都可以。现在你来。」 |
| settle | tap | 「单击,重新开始。」 | 「单击。」 | 20s/45s | tap | 提示音 |
插叙 auto,无等待点。p6 在 rev2=false 时封锁左路(m6_seal 后自动右,不摆假选项)。
### 6. 首 3 分钟
| 时间 | 播 | 期待 | 没做 | 做错 |
|---|---|---|---|---|
| 0~3s | 风暴+雾角 →「点一下屏幕。」 | 单击 | 「点一下。」 | 滑 invalid |
| 3~8s | 极短目标 → 电台静电 → 阿澈求救 | 单击继续 | 三档 | inv_nosel |
| 8~10s | 接住他的声音(第一次成功) | 听 | | |
| 10~40s | p1 接住人 / 要船位 | 左右滑 | 复述 p1 | 不盲选;右路即时纠偏不扣分 |
| ≈45s | 解锁上滑 | 上滑 | 「向上滑。」 | |
| 45~90s | p2 翻暗格/守灯;左则插叙1(唱针教学) | 滑 | 三档 | |
| 90~180s | CALM 雾角+幕句 → C2 | 继续/滑 | 接管 | 归因真话 |
### 7. 失败表
| 类型 | 判定 | 归因 | 回到 | 新手期 |
|---|---|---|---|---|
| 非抉择滑动 | | 「现在不用选。」 | 原地 | 无 |
| 灯灭一刻钟 | p7 左且 ¬rev2 | c3_dark 指向「没听完父亲那晚」 | 签收 | 零死亡 |
| 他半路改主意 | p7 右且 trust<3 | c9_found 克制措辞 | 签收 | 仍活着 |
| 假选项 | rev2=false 时试图 p6 左 | 不出现左项 | — | — |
| 迷茫 | | L1–L3 | 原地 | 无 |
### 8. 台词类别
- `critical`:开场点一下;rev_teach(唱针=回忆,≤3s)
- `content`:b_*、c*、amo_*、rev_* 锚句、p*、e*、ep_*
- `hint`:prog_m1..3、prog_mem_g/f、tr_*、truth 逐值句
- `feedback`:inv_*、c1_aske 纠偏、c3_dark
- 停用:双击重听回忆的口令(阶段 3 才启用 sys_unlock_replay)
148 句;音频 121×2+27=269 ×2 格式。`_k` 8 对。
### 9. 断点复述
存档带 `timeline`(now / mem_g / mem_f)。回来:若在回忆则先播 prog_mem_* 再重播该节点。上滑永远时位句开头。≤5s 可玩。
### 10. 测试记录
改:双击不重听节点;菜单左右+确认;3s 动手;10s 内听到阿澈。vinyl 与 storm 底噪零重叠仍失败即不通过。foghorn 四处兑现保留。
---
## 1. 概述
风暴夜孤岛灯塔。电台里一声比一声近的求救,牵出三代守塔人的秘密。声音即世界:电台=另一条命,风暴=处境,老唱片=过去。
## 2. 状态机与树
INTRO → WATCH(C1) → CALM(1) → C2 → CALM(2) → C3 → ◆p9 → ENDING。p2左/p3左|p4左/p6左 触发 MEMORY auto ≤6 句 ≤90s 后回 WATCH。
C1:p1 接住(+trust)/要船位;p2 翻暗格(插叙1)/守灯。
C2:p3 口诀(插叙2)/岸台;p4 真话(可兜底插叙2)/带过;危机拍 hull_crack → p5 堵漏(+trust)/救生衣。
C3:p6 读完(插叙3,需 rev2)/合上;p7 离塔救人/守灯引渡;p8 双形态活路;p9 说出/守住。
| 结局 | trust | p9 |
|---|---|---|
| e1 灯与归人 | ≥3 | 左 |
| e2 守夜人 | ≥3 | 右 |
| e3 半明半暗 | <3 | 左 |
| e4 各自的塔 | <3 | 右 |
信任档:3–4 深 / 1–2 半 / 0 薄,句义逐值为真。truth=插叙完成数 0–3 各一句。灯三态=p7×rev2。阿澈三态=p7×trust(零死亡:最坏天亮被找到)。
秘密三层:暗格 → 父亲发条 → 祖父忏悔(门认上一层钥匙)。
## 3. 时空签名
| 维度 | 现在 | 回忆 |
|---|---|---|
| BGM | storm | memory |
| 底噪 | amb_storm(幕 gain 0.5/1.0/0.7)+ amb_room | **仅** amb_vinyl |
| 过渡 | memory_out | memory_in 唱针 |
| 滤波 | 阿澈电台;你不滤波 | 父/祖唱片;锚句(你)不滤波 |
时序:结果句完 → 600ms → memory_in+切曲切 amb → 锚入(不可跳)→ NPC → 锚出(不可跳)→ memory_out → 现在句。WATCH/MEMORY 同用 explore earcon。
通道:过渡音不叠语音;通话期 amb_engine 在 voice 时 −6dB;危机拍前置 2s。并发前景 ≤2。
雾角承诺:b_rain「两长一短」后,开场 / CALM×2 / ep_shore 必播。
## 4. 音频与存档
BGM 3 首(menu 用 storm 低响)。SFX:amb_storm/room/vinyl/engine、memory_in/out、radio_tune、static_burst、radio_beep、hull_crack、wave_wall、lamp_mech、hatch_open、flash_click、foghorn。
NPC:阿澈 Dylan 电台滤波、父亲 Uncle_Fu 唱片、祖父 Eric 唱片。
```json
{ "phase": "WATCH", "node": "amo_d", "timeline": "now", "trust": 2, "rev1": true, "rev2": false }
```
summary:`幕N · 信任档 · 真相K层 · 结局X/4`。