Files
SoundGame/docs/design/04-space-rebuild.md
2026-10-01 23:26:47 +08:00

11 KiB
Raw Permalink Blame History

04 · 《盲航》重构方案(26 号对齐)

给开发者的实现要点摘要

  1. 交互权威:26 号手册。四向滑动是核心玩法 → 帮助一律长按;新手期无双击;doubleTapWindow: 0。
  2. 保留同向闪避:听到哪边来,就向哪边滑(把陨石拨开)。判定窗、whoosh 四向资产、前 60s 保护期、死亡归因分方位,全部保留。
  3. 单击加速、护盾改为解锁阶梯后的高级手势,开场不教、保护期内不塞第二种机制。
  4. 对局 = Floor ACTION。第一句就让玩家拨一颗;第一次成功 ≤10s。回执 ≤100ms;挥空/冷却拒绝必须出声,禁止只震。
  5. 暂停恢复后必须 count-in 式的再瞄准(至少一颗慢速预告),不能一恢复就注定撞上。

0. 设计单(26 号附录 C)

0.1 一句话核心动作

听到陨石从哪边来,就向哪边滑,把它拨开。

0.2 玩家可感知的状态(3 个)

状态 Floor 听感 第一次教
演练 / 对局 ACTION 引擎 bgm/engine + whoosh/alarm;玩法声即状态 「陨石有声音。向声音那边滑。」
游戏在说 SPEAKING 演练指令、归因;整链 duck 开场第一句
坠毁结算 — 停 engine → 结算链 → bgm/menu —

危险预警用 alarm(内容音)+ 可选 danger 震;不能只靠震动。新手期只教这 3 种听感。

0.3 新手手势与解锁

手势 含义 解锁
四向滑动 同向闪避 阶段 0(核心)
单击 演练里=继续;对局未解锁加速时=invalid+首次「现在只要滑。」 加速=阶段 4 或「完成第一局保护期且闪避成功 ≥3」后教一次
长按 我在哪(「引擎舱。躲开呼啸。向声音那边滑。」) 阶段 1(第一次成功闪避后马上用一次)
双击 新手期不存在;护盾同加速,更晚解锁 阶段 4 大厅或累计 3 局后专属教学
下滑(对局) 向下闪避,不是菜单 —
下滑(结算后) 菜单 阶段 2

0.4 状态 × 手势矩阵(新手期)

状态 \ 手势 单击 四向滑 长按 双击(未解锁) 连点 / 乱滑
演练指令 critical busy busy(等指令说完再出陨石) 帮助 busy busy
演练陨石 ACTION invalid+「向声音那边滑。」 同向=拨开;错向=纠正+重来 帮助(不闭窗) 当单击 乱滑计入迷茫
对局 ACTION 未解锁加速=invalid 首次解释;已解锁=加速或冷却拒绝声 同向闪避 / 挥空 whiff+invalid 帮助 当单击 计入迷茫
归因 / 结算 SPEAKING 跳过这句(归因是 feedback,已操作则作废不播) 打断并闪避(对局中) 打断,帮助 当单击 400ms busy
结算 再飞一次 invalid+解释 重听结算 当单击 只处理第一下
菜单 确认 左右滑切换 重听说明 当单击 busy

0.5 等待点

id 期待 _full _short 静默 L2 L3
d1_left 左滑 「听,左边有陨石。向左滑。」 「向左滑。」 演练窗结束=超时 左滑 游戏演示拨开
d2_right 右滑 「这次在右边。」 「向右滑。」 同 右滑 演示
d3_up 上滑 「上面,向上滑。」 「向上滑。」 同 上滑 演示
d4_down 下滑 「下面,向下滑。」 「向下滑。」 同 下滑 演示
settle 单击 「单击,再飞一次。」 「单击。」 20s / 45s — 提示音

对局 ACTION 不起等待声。迷茫:10s 内 3 次挥空/错向 → L1 短句「向声音那边滑。」→ L2 只认当前最近一颗的正确方向 → L3 自动拨开最近一颗(保护期或不扣血演示)。

0.6 首 3 分钟逐秒脚本

时间 游戏说 / 播 期待 没做 做错
0~3s 「陨石在左边。向左滑。」(whoosh 在指令后) 左滑 超时重来;2 次后演示通过 错向:纠正「在左边。」
3~10s dodge 音 +「对。」→「这次在右边。」 右滑 同上 同上
10~30s 上、下各一颗慢速演练 上滑、下滑 演示通过 纠正
30~40s 「四个方向你会了。出发。」→ 保护期第一颗 同向滑 保护期撞了不掉血 + 归因 归因含方位
40~60s 保护期:慢、稀、撞了不掉血 闪避 长按帮助 挥空 whiff
约 50s 「训练护盾还剩十秒。」(hint,空闲才播) — — —
约 60s 「训练护盾关闭。」 继续闪避 — —
60~180s 难度爬坡;不插入加速/护盾课 闪避 迷茫接管 真话归因;没出手不报「慢了」

第一次成功=第一颗拨开 ≤10s。每 30s 有可听进展(拨开声 / 里程碑句)。

0.7 失败表

类型 判定 归因 回到哪里 新手代价
错向 滑向 ≠ 陨石方向 「在左边。向左滑。」 演练:同一颗重来;对局:该颗结算 保护期不掉血
挥空 无悬置陨石的方向 whiff + 首次「现在没有这边的陨石。」 继续 无
没出手 窗口内无滑 「没拨到。声音一响就滑。」禁止说慢了 演练重来;对局掉血或保护吸收 前两次保护/锁血
撞击(保护后) 窗口过且未拨开 hit_<dir> 方位 + 正确动作 继续;HP=0 结算 第 3 次可降刷怪
第三次同向失败 演练同方向 3 次 「听我做一次。」演示 通过该方向 无

坠毁结算:时间段整句 + 躲避段整句 +「单击,再飞一次。」破纪录加「新纪录!」。

0.8 台词类别

  • critical:各方向演练指令(≤3s)。
  • content:出发句、保护结束、里程碑、结算段。
  • hint:protect_soon、长按帮助、迷茫短句。
  • feedback:hit_left/right/up/down、hit_last、挥空解释、冷却拒绝。

hit_* / protect_end 被呼喊顶断时必须登记残留并补播一次(R5-2 保留),但仍是 feedback:玩家已进入下一威胁则过期丢弃,不排在长链尾。

0.9 断点复述

对局可中途退出自动存:存活秒、闪避数、是否过保护期。回来:「你在航道上。躲开呼啸。向声音那边滑。」然后 count-in 一颗慢速陨石再恢复刷怪。

进度:{ bestSec, totalRuns, summary }。

0.10 测试

关键路径:四向各一次(做错重教,2 次后演示通过)→ 保护期被撞不掉血且归因 → 保护解除后闪避 → 结算。同向闪避。帮助=长按。加速/护盾不得开场同时教。


1. 核心决策:同向闪避(保留)

PUSH_SWIPE = {left:'left', right:'right', up:'up', down:'down'}。

  • 左 whoosh → 左滑,上=高频→上滑,下=低频→下滑。whoosh_* 四资产复用,只改映射与文案。
  • 判定:撞击前 1.5s 内滑动有效 + 250ms 宽限;need = dir 本身。
  • 反向映射表 ESCAPE_SWIPE 废止。

2. 交互式演练(DRILL)

每步 = 一句短指令 → 一颗演练陨石(逼近 4.5s,harmless)→ 操作 → 反馈。语音 onComplete 后再 spawn,不与 whoosh 叠。做错/超时:纠正 + 同一颗重来;最多 2 次后自动演示通过。

步 指令 内容
D1 「听,左边有陨石。向左滑。」 左来左滑
D2 「这次在右边。」 右
D3 「上面,向上滑。」 上
D4 「下面,向下滑。」 下
D5 「四个方向你会了。出发。」 进保护期

删除 D0 两句零操作欢迎。成功:dodge +「对。」(仅 D1 语音肯定,其余只内容音)。

回访者:开场「点一下出发」,跳过演练。


3. 保护期与难度(数字保留)

参数 保护期 60s 之后
逼近 4.0s 3.2s → 2.0s(120s 爬满)
间隔 4.0s 3.2s → 1.4s
撞击 不掉血:shield_block + 归因(方位+正确滑向) 正常掉血
加速 / 护盾 不可用(未解锁) 仅已解锁玩家

第 50s:protect_soon「训练护盾还剩十秒。」第 60s:保护关闭。

废止:保护期内第 20s/45s 暂停刷怪插入单击加速课、双击护盾课。

同一窗口内「撞击与下一颗 spawn 重叠」导致归因被杀:保留 R5 的「呼喊优先 + 被顶断补播」;protect_* 上一句未完则新吸收只播 shield_block、跳过重复教学句。


4. 高级手势解锁(加速 / 护盾)

机制代码可保留(持续增益规避 tap 延迟等),新手局不暴露:

能力 手势 解锁 教学
短促加速 单击 第一局结束或大厅全部解锁 一句:「点一下,加速。现在试试。」马上用一次
护盾 双击(仅阶段 3/4 已识别双击后) 累计 3 局或大厅 单独一课,不与加速同句

未解锁:单击在对局中=invalid+解释一次。冷却中已解锁加速:boost_not_ready 必须出声(R5-4),可叠心跳震,禁止静默。挥空:sfx/whiff + invalid。

护盾充能完毕 shield_ready 保留,仅已解锁玩家播放。


5. 死亡即教学 + 结算整句

每次被撞:sfx/hit + hit_<dir>(「左边撞上的。向左滑。」)。第二次加 hit_last。没出手用「没拨到」,不用「慢了」。

删除 numClips 拼接。存活 4 段 + 躲避 4 段整句保留。里程碑 10/20/30/40/50 固定句,超出 50 不播。

结算单击=再飞;阶段 2 下滑=菜单(左右滑+单击)。禁止坠毁后死寂。


6. 回执与刺耳修复(R5 音频保留)

alarm / dodge / shield_block / boost / shield / whiff 程序合成峰值标准保留(≤−3.4 dBFS)。回执 ok/invalid/busy 走引擎合成,与内容音不混用。

激活加速/护盾:内容音 + ok 可省(已有 boost/shield 音)+ 可选 confirm 震。


7. 实现要点

  1. 同向映射一行;判定常量不动。
  2. phase='drill':参数化 approachMs / harmless / 指定 dir。
  3. 保护期撞击不掉血 + 归因。
  4. 暂停:停刷怪;恢复先播复述或 count-in 慢速一颗,再 _scheduleSpawn。
  5. 语音约 35 句×2 性别;删 num 拼接;删加速/护盾开场课句或改为解锁课。
  6. README 手势表:同向闪避;长按帮助;新手无双击。

8. 废止清单

废止 改为
反向闪避 同向拨开
47s 连播旁白后即死 交互式四向演练,第一句就滑
开场同时教闪避+加速+护盾 先只会滑;加速/护盾后解锁
保护期 20s/45s 插入单击/双击课 删除
新手双击护盾 双击不存在
对局无帮助手势 长按=我在哪
加速冷却静默;挥空静默 拒绝句 / whiff + 回执
撞击只报损不报方位 hit_<dir> 真话
没出手报「慢了」 「没拨到」
反馈只靠震动 回执必响;iOS 无震仍有声
菜单双击确认 左右滑+单击
帮助用上滑(与向上闪避冲突) 长按

R5 刺耳重合成、归因补播、protect 去重、protect_soon、挥空音:保留,并补齐回执。