Files
SoundGame/docs/design/12-skip-and-longpress-ux.md
2026-10-01 23:26:47 +08:00

87 lines
4.3 KiB
Markdown
Raw Permalink 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.
# 12 · 跳过旁白、长按加速、帮助手势(26 号对齐)
> **给开发的实现要点摘要**
> 1. 单击跳过:voice 在播且本句可跳 → 跳**当前这句**(`skipVoice`,链继续)。无 voice 时单击 = 原语义。
> 2. 跳过后 400ms 内再单击 = `busy`,不连跳两句、不误进下一段。
> 3. 新手期无双击,**不存在「双击=重听对偶」**。重听是阶段 3 解锁,或玩家在等待点上滑/长按问「我在哪」。
> 4. 长按:默认仍是旁白 1.7× 加速。若该游戏帮助手势是长按(四向滑动是玩法),对局中长按=帮助,关闭加速。
> 5. 男女声边界核查结论保留在文末,无需修复。
交互权威:26 号原则 5、6、§4.1 打断规则;[00-global-ux.md](00-global-ux.md) §5。
---
## 1. 单击跳过当前句
### 1.1 总则
- 语境:`SPEAKING` 且本句非 `critical` → 单击 = `skipVoice()`(截断当前句,视为播完,链续)。给 `ok`。
- `critical` 句:单击 = `busy`,不跳。
- 无 voice:单击 = 各游戏原语义。
- 统一跳下一句,不跳到节点末。
- 跳过不给震动。
- 连点:执行跳过或继续后 400ms 内,后续单击只 `busy`。
废止:靠 300ms 双击窗区分「跳过」和「重听」。新手期没有双击窗。
### 1.2 逐游戏裁定
| 游戏 | 阶段 | 单击跳本句? | 说明 |
|---|---|---|---|
| 叙事类(storyline / radio / abyss / detective / cipher / keeper / teahouse) | 剧情对白 | 是 | 最后一句被跳 = 进入等待点,不起连跳进下节点(400ms 防抖) |
| 同上 | 抉择提示 | 否(`critical` 或 hold) | 选项必须听完再选。单击 = 再听选项(「再说一遍:」+ 完整句) |
| escape | 引导指令 | 否 | 指令即步骤。迷茫接管后再演示 |
| escape | PLAY 描述/卡关 | 是 | |
| escape | 关键获得 | 否,且 ≤3s 标 `critical` | 旧「<10s 不可跳」改为拆短:关键句本身 ≤3s |
| simon | 教学指令 | 否 | busy |
| simon | 轮次/成绩播报 | 是 | |
| simon | 序列播放 | — 无 voice;手势 = busy | 聆听不可打断序列 |
| rhythm / drummer | intro/结算/选曲 | 是 | |
| rhythm / drummer | 演奏 | 手势是演奏,不走跳句 | ACTION |
| space | 演练指令 | 否 | |
| space | 归因/结算/引入句 | 是 | 归因是 `feedback`,玩家已操作则作废不播 |
| rpg / dungeon | 场景/NPC | 是 | |
| rpg / dungeon | 战斗指令名、教学战、格挡窗口 | 否 | |
| 全部 | 菜单项名 | 否 | 正在选 |
### 1.3 滑动打断
游戏在说时,左/右滑(及玩法所需的四向滑)= `stopVoice()` 作废当前链,然后执行这次滑动。排队中的 `hint`/`feedback` 清空。
上滑/长按帮助:同样打断,然后播一句「我在哪」。
---
## 2. 长按:加速 vs 帮助
### 2.1 默认:旁白加速
voice 播放中长按 ≥450ms → 当前句临时 `max(1.7, settings.speed)`,松手恢复。BGM/sfx 不变。由引擎拦截,游戏收 `longpress` 与否见下。
### 2.2 帮助占用长按时,关闭加速
四向滑动是核心玩法的游戏(00 §5.3):对局与探索中长按 = 「我在哪」,`setRateBoostEnabled(false)`。菜单/结算旁白仍允许加速。
| 游戏 | 对局长按 | 旁白加速 |
|---|---|---|
| escape / space / dungeon / hunt | 帮助 | 关 |
| rhythm / drummer 演奏+教学跟打 | 不用(演奏输入) | 关 |
| simon 序列播放 | busy/忽略 | 关(该阶段无 voice) |
| simon 答题 | 帮助(状态句) | — |
| storyline / rpg 探索 / new8 叙事 | 不占用 | 开 |
| rpg 战斗 | 不占用;格挡不绑长按 | 开(前摇是 sfx,加速 voice 不影响判定) |
### 2.3 首局发现性
大厅 footer:**删除**「单击有 300ms 延迟」。改为:「旁白中点一下跳过这句。想知道自己在哪,就向上滑(有的游戏是按住屏幕)。」
跳过与帮助都是核心能力,不再藏着等玩家摸索。首 3 分钟脚本里:第一次 SPEAKING 后的单击自然就是跳过;阶段 1 用一句教帮助,马上用一次。
---
## 3. 男女声边界核查(保留)
旁白走 `voice/<gender>/`,角色/NPC 走平铺 `voice/`。storyline / rpg 已核对符合,无需修复。
勘误保留:storyline `n11_child` 是旁白句不是角色音;RPG NPC 实际 14 id 不是 16。