185 lines
9.3 KiB
Markdown
185 lines
9.3 KiB
Markdown
# 17 · 《深海回音》(abyss) — 深海救援叙事 RPG
|
||
|
||
> **给开发的实现要点摘要**
|
||
> 1. 交互权威:26 号手册。叙事范式对齐 [26-apply-storyline.md](26-apply-storyline.md)。搜索等待的单击=发声呐脉冲,等同宪法「检查」,**不是**四向滑动玩法,帮助用上滑。
|
||
> 2. 骨架同 radio:节点链 + seqToken + pendingChoice。宏状态 INTRO / DIVE / COMMS / SURFACE / ENDING + MENU。
|
||
> 3. 氧气=步进资源,无实时倒计时、无中途死亡。软失败=少一潜/少带一人。声呐与语音互斥(sonarGate)。
|
||
> 4. 台词 [17-abyss-voice-ids.md](17-abyss-voice-ids.md)(148 句:双性别 127 + NPC 21)。废除双击重听回波:搜索等待再单击=再发脉冲(自然再听)。
|
||
> 5. 章程 N2:15–25 分钟、9 抉择(实走 7–9)、4 结局。
|
||
|
||
---
|
||
|
||
## 附录 C · 设计单
|
||
|
||
### 1. 一句话核心动作
|
||
|
||
**听一段救援,单击继续或发声呐;听到选项时左右滑做决定。**
|
||
|
||
### 2. 玩家能感知的状态(3 个)
|
||
|
||
| 状态 | 听感 | Floor |
|
||
|---|---|---|
|
||
| 听讲 | 调度/船员语音,BGM 整链压低 | SPEAKING |
|
||
| 轮到你 | turn → 等待声;搜索等待用深海 amb + 余音 | YOUR_TURN |
|
||
| 危险 | danger 签名 + 火花/滑坡(仅 D2/D4) | SPEAKING/BUSY |
|
||
|
||
氧气档靠跨档句与 breath_loop(low/crit),不单开第四态。
|
||
|
||
### 3. 新手手势与解锁
|
||
|
||
| 手势 | 含义 | 解锁 |
|
||
|---|---|---|
|
||
| 单击 | 继续 / 搜索等待发脉冲 / 跳过当前句 | 阶段 0 |
|
||
| 左/右滑 | 抉择 | 阶段 0 |
|
||
| 上滑 | 我在哪(潜次 → 已救人数 → 氧档 → 一个动作) | 阶段 1(第一次脉冲成功后) |
|
||
| 下滑 | 菜单 | 阶段 2(第一次结局) |
|
||
| 双击 | 按单击。阶段 3=重听当前等待点完整句 | 阶段 3 |
|
||
| 长按 | 新手 invalid;之后旁白加速 | — |
|
||
|
||
### 4. 状态 × 手势矩阵(新手期)
|
||
|
||
| 状态 \ 手势 | 单击 | 左/右滑 | 上滑 | 下滑(未解锁) | 双击 | 连点 |
|
||
|---|---|---|---|---|---|---|
|
||
| 游戏在说 | 跳句 + ok(p*/锚句/档位句不可跳 → busy) | 抉择点缓存,不盲选;否则 invalid | 打断,我在哪 | invalid | 按单击 | 400ms busy |
|
||
| 等你继续 | 继续 | invalid | 我在哪 | invalid | 按单击 | busy |
|
||
| 搜索等待 | **脉冲** sonar_ping(silent-ok) | invalid +「点一下,发脉冲。」 | 「第 N 潜。点一下发脉冲。」 | invalid | 按单击=再脉冲 | 冷却/连点 busy |
|
||
| 等你选择 | 再听选项 | 抉择 | 「左右滑。」 | invalid | 按单击 | 迷茫 |
|
||
| 结算 | 新救援 | invalid | 结局+氧档一句 | 菜单(阶段2) | 按单击 | 第一下 |
|
||
| 菜单 | 确认当前项 | 左上一项 / 右下一项 | 重听说明 | 关闭 | 按单击 | busy |
|
||
|
||
搜索中再点=再听回波,废除「双击=重听上一条回波」。玩家脉冲**先于**向导散句(先掐 gd 再出 ping)。
|
||
|
||
### 5. 等待点
|
||
|
||
| id | 期待 | full | short | 静默 | L2 | L3 |
|
||
|---|---|---|---|---|---|---|
|
||
| intro | tap | 「点一下屏幕。」 | 「点一下。」 | 6s/15s | tap | 替点 |
|
||
| ping | tap | 「单击,发一枚脉冲。」 | 「点一下。」 | 8s/18s | tap | 替发脉冲 |
|
||
| continue | tap | 「单击,继续。」 | 「单击。」 | 13s/30s | tap | 替继续 |
|
||
| choice | L/R | pN | 「左右滑,选。」 | 25s/50s | 左右滑 | 演示 |
|
||
| settle | tap | 「单击,重新开始。」 | 「单击。」 | 20s/45s | tap | 提示音 |
|
||
|
||
COMMS 链末 full 档静默 13s/30s(不对齐旧 25/50)。乱滑不推进节点:迷茫 L1 短句 → L2 只留期待手势 → L3 演示脉冲或选择。
|
||
|
||
### 6. 首 3 分钟
|
||
|
||
| 时间 | 播 | 期待 | 没做 | 做错 |
|
||
|---|---|---|---|---|
|
||
| 0~3s | 甲板风浪 →「点一下屏幕。」 | 单击 | 「点一下。」 | 滑动 invalid |
|
||
| 3~8s | ok → 极短目标句 → 下潜声 →「点一下,发脉冲。」 | 单击脉冲 | 「点一下。」 | 滑动 invalid |
|
||
| 8~10s | sonar_ping → 静默一拍 → echo_metal →「金属回波,钢板。」 | —(第一次成功) | | |
|
||
| 10~20s | turn 教学 → 接通小舟 | 单击继续 | 三档 | inv_nosel |
|
||
| 20~60s | p1 听暗号/直接上 | 左右滑 | 复述 p1 | 不盲选 |
|
||
| ≈60s | 解锁上滑 | 上滑 | 「向上滑。」 | |
|
||
| 60~180s | p2 → 上浮扣 3 格 → 档位句 | 单击/滑 | 接管 | 归因真话 |
|
||
|
||
### 7. 失败表
|
||
|
||
| 类型 | 判定 | 归因 | 回到 | 新手期 |
|
||
|---|---|---|---|---|
|
||
| 搜索滑动 | DIVE 等待滑 | 「点一下,发脉冲。」 | 原地 | 无 |
|
||
| 非抉择滑动 | | 「现在不用选。」 | 原地 | 无 |
|
||
| 氧气门取消第四潜 | SURFACE(3) oxy≤2 | 取消链指向实际花气的左选择 | 签收 p9 | 已救者不失去 |
|
||
| 干涸 | mid-dive floor 0 | dry_b 指向最后那个左选择 | 上浮结算 | 人已上吊索仍救出 |
|
||
| 迷茫 | 信号≥2 | L1–L3 | 原地 | 无 |
|
||
|
||
### 8. 台词类别
|
||
|
||
- `critical`:sys_first_tap;dv1_teach「点一下,发脉冲」
|
||
- `content`:b_*、dv*、船员对白、p1–p9、e*、ep_*、dv4_dual、oxy_*(水面 crit 用 oxy_crit_deck「一潜都下不去了。」)
|
||
- `hint`:gd_ping1/2、prog_dN、prog_savedN、oxy 档、sys_continue_ask
|
||
- `feedback`:inv_*、dry_b、gao_final 留别句
|
||
- 停用:任何「双击重听回波」句
|
||
|
||
148 句(含 `_k` 11 对);音频 127×2+21=275 条 ×2 格式。
|
||
|
||
### 9. 断点复述
|
||
|
||
保存:每潜进入、抉择后、SURFACE/ENDING、菜单保存。回来 sys_continue_ask;单击重播当前节点(恢复首句锁)。上滑:第 N 潜。已救 K 人。氧档。点一下或左右滑。
|
||
|
||
### 10. 测试记录
|
||
|
||
`web/abyss/test/playtest.mjs`。改:双击不重听回波;菜单左右+单击确认;首次脉冲 ≤10s;回波与 voice 零重叠仍失败即不通过。真人待测。
|
||
|
||
---
|
||
|
||
## 1. 概述
|
||
|
||
深潜救援员,声呐里是「海燕号」。氧气在倒数,但全是事件点扣格:无实时倒计时、无死亡。最优省气路径全员生还。与 radio 同骨架,压力源=氧气稀缺(宽限化)。
|
||
|
||
## 2. 状态机
|
||
|
||
| 状态 | 内容 | BGM |
|
||
|---|---|---|
|
||
| INTRO | 极短甲板口播 | deck |
|
||
| DIVE | 下潜 auto → 搜索单击脉冲 → 回波+接通 | dive |
|
||
| COMMS | 对白+抉择 | comms |
|
||
| SURFACE | 扣账+档位+补给(D2),auto | deck |
|
||
| ENDING | 结局+回响 | ending |
|
||
| MENU | 覆盖 | deck 低响 |
|
||
|
||
```
|
||
INTRO ──单击──> DIVE(1) ──脉冲找到──> COMMS ──> SURFACE ──> DIVE(2)…
|
||
SURFACE(3) 氧气门:oxy≥4 双载 / =3 单载 / ≤2 取消链
|
||
──> ◆p9 ──> ENDING
|
||
```
|
||
|
||
取消链/干涸链/结局链/签收链入口 800ms 手势死窗。档位句纳入尾句保护(不可单击掐)。非 auto 叙事尾句**首播**保护,复播可掐。
|
||
|
||
## 3. 抉择树
|
||
|
||
D1 找船·小舟:教学脉冲 → p1 听暗号(−1, knowsPipe) / 直接上 → p2 等日志(−1, hasLog) / 不等 → 扣 3。
|
||
|
||
D2 机舱·老白:p3 慢撬(knowsPipe?0:−1) / 快切(危机拍火花)→ p4 关阀门(−2, valve) / 走 → 应急瓶 +3(全局一次)。
|
||
|
||
D3 病舱:p5 先陈 / 先郑(stayer)→ p6 留瓶(−2, spareGift) / 约定。
|
||
|
||
D4:双载 p7 慢浮(−2)/快浮;单载 p7 带船长/带留守;p8 说出来(gaoPeace)/不问。
|
||
|
||
p9 取钟(需 oxy≥1)/ 进医疗舱;oxy<1 封锁左路(g9_dry,不摆假选项)。
|
||
|
||
| 结局 | 条件 |
|
||
|---|---|
|
||
| e1 海燕归钟 | saved=5 且 p9 左 |
|
||
| e2 满载的黎明 | saved=5 且 p9 右 |
|
||
| e3 最后一潜 | saved<5 且 p9 左 |
|
||
| e4 按规程上浮 | saved<5 且 p9 右 |
|
||
|
||
跨潜仅标量:oxy、saved×5、stayer、flag×6。约 70 节点。
|
||
|
||
## 4. 氧气经济
|
||
|
||
初值 12;D2 后 +3,总预算 15。每潜起扣 3。抉择耗气见上。mid-dive 负数 floor 0。档位=floor(oxy/3):full≥9 / ok 6–8 / low 3–5 / crit 0–2。水面 crit 用 oxy_crit_deck。双载 D4 口播 dv4_dual「这趟往返,扣四格气。」
|
||
|
||
SURFACE(3) 时 oxy=6−lefts → 双载 lefts≤2;单载=3;取消≥4。教学潜与机舱潜预算上永不卡死。
|
||
|
||
船员:小舟/老白恒活;陈/郑/船长按 p5/p6/氧气门/p7。好感只影响 ep 选播。
|
||
|
||
## 5. 声呐双通道
|
||
|
||
信息类回波与 voice **零重叠**(sonarGate)。搜索段:脉冲 → 静默一拍 → 回波 → 解读。回波时长:金属 3300 / 敲管 3500 / 呻吟 5000ms。玩家脉冲抢先于向导散句。语音在播时远程脉冲垫 −6dB。并发前景 ≤2。
|
||
|
||
教学承诺:金属回波=船身(凡「船身」节点必播 echo_metal*);单击=脉冲;四潜=基础 3×4=12;氧气门=oxy<3 取消;每潜扣 3;敲管=老白;补给恰 +3 一次。
|
||
|
||
## 6. 音频资产
|
||
|
||
BGM:deck / dive / comms / ending。SFX:sonar_ping、echo_metal_l/r、echo_debris、echo_groan、pipe_knock、link_beep、static_burst、amb_deep、amb_deck、breath_loop、spark_flash、valve_close、landslide、surf_splash、ascent_chime、bell_toll。
|
||
|
||
Voice:潜航员 30 + 调度 97(双性别)+ 船员 21 平铺滤波。D4 danger 震间隔 1100ms。crit 档 warning 震按「进入该档」去重。
|
||
|
||
## 7. 存档
|
||
|
||
```json
|
||
{
|
||
"phase": "COMMS", "node": "bai_b", "dive": 2, "oxy": 6,
|
||
"saved": { "zhou": 1, "bai": 0, "chen": 0, "zheng": 0, "gao": 0 },
|
||
"flags": { "knowsPipe": true }
|
||
}
|
||
```
|
||
|
||
summary:`第N潜·<舱段> · 氧气K格 · 结局X/4`。
|
||
|
||
## 8. playtest 指针
|
||
|
||
四结局 + 氧气逐点、sonarGate 零重叠、教学承诺、结算死窗、pendingChoice:保留。删除双击回波重听与菜单双击确认。乱按 96s 必须被迷茫/三档救出,不得静默死局。
|