Files
2026-10-01 23:26:47 +08:00

140 lines
7.4 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.
# 14 · 发言权、向导与迷茫接管(26 号对齐)
> **给开发者的实现要点摘要**
> 1. 本文取代 v1~v4「只靠 earcon + 静默看门狗 + queue 插播」的向导层。新骨架:Floor(发言权)+ 回执 + 三档提示 + 迷茫检测。模块示意见 26 号 §4.1~§4.5。
> 2. `guide.js` 的 8 个 earcon 词表保留(menu/explore/battle/choice/settle/danger/turn/nudge)。`turn` 仍是交接提示音。
> 3. 看门狗不再原样重播帮助长句。同一等待点用三档:完整句 → 短句 → 只响 `turn`/`nudge`。
> 4. 纠错、提示类语音:**空闲才播,过期丢弃**;玩家一操作就清空。禁止排到长链尾。
> 5. 文末档案保留 v1~v4 台词 id,供资产对照。**交互规则以本文前半与 26 号为准。**
交互权威:[26-audio-interaction-playbook.md](26-audio-interaction-playbook.md);全局口径:[00-global-ux.md](00-global-ux.md) §6。
---
## 1. 六个引擎模块(施工)
| 模块 | 职责 | 关键 API(示意) |
|---|---|---|
| Floor | SPEAKING / YOUR_TURN / BUSY / ACTION;整链 duck;等待声 | `speak(ids)` `yieldTurn(waitPoint)` `handleInput(g)` |
| Receipts | ok / invalid / busy 合成短音 | `play('ok'\|'invalid'\|'busy')` |
| Hints | 三档选择 + 30s 台账去重 | `pick(waitPoint)` `replayOnRequest()` |
| Confusion | 乱点/无效/重听/失败/静默加权 | `record*` → `onConfused(level)` |
| Novice | 手势解锁、`doubleTapWindow: 0`、回车当单击 | `unlocked(g)` `map(g)` |
| Pipeline | 手势先过 Floor → Confusion → 游戏 → 回执 | `makeInputPipeline(...)` |
`settings.guide`:
- `full`:等待声 + 三档语音 + 回执 + 迷茫接管。
- `standard`:等待声 + 回执 + 提示音,无向导语音。
- `off`:回执仍在;不挂看门狗与迷茫定时器。回归测试用。
## 2. 发言权规则
1. `speak()` 进入 SPEAKING,整条链结束才离开。句间不 unduck、不起等待声。
2. 链结束只能去 YOUR_TURN 或 BUSY,禁止「什么都不是」的安静。
3. `yieldTurn()`:`guide.turn` → 400ms 后等待声 → 挂该等待点的提示计时与迷茫。
4. 打断:单击跳句;滑动/帮助打断整链并执行。`critical` 句给 busy。
5. 等待声参数见 26 §4.1。超过 20s 间隔拉长到 2.5s。玩家操作 80ms 内淡出。
## 3. 三档提示与看门狗
每个等待点配置 `full` / `short` / earcon,外加静默阈值。
| 游戏类型 | 第 1 级 | 第 2 级 | 之后 |
|---|---|---|---|
| 动作 / 探索 | 5~8s 播 short 或 full(第一次) | 再 8~12s 只 earcon | 停,只留等待声 |
| 剧情 | 15~20s 只说操作方式 | 再 15~20s earcon | 停 |
禁止第 2 次仍播与第 1 次相同的完整句。玩家主动重听:`sys_say_again` + full。
旧 escape 60/120/180s 卡关计时器并入迷茫接管:无进展视为静默信号,L1 短目标句、L2 只放行导航方向、L3 游戏走一步。不再单独「带路级长句周期轰炸」。
## 4. 迷茫三级接管
信号与权重见 26 §4.5。达到 2 分触发,15s 冷却。
| 级 | 行为 |
|---|---|
| 1 | 该等待点 short 句 |
| 2 | 只保留一个正确手势,其余 invalid |
| 3 | 「听我做一次。」演示一步 →「现在你来。」 |
同一等待点升到 3 后停止接管,只留等待声。
## 5. 语音类别与 idle-only
| 类别 | 打断 | 过期 |
|---|---|---|
| critical | 否(busy) | 否 |
| content | 是 | 否 |
| hint | 是 | 1.5s 播不出则丢 |
| feedback | 是 | 1.0s 播不出则丢 |
旧 `guide._say` 对 error/watchdog 的 idle-only 保留并推广到所有 hint/feedback。turn 的 earcon 立即发,不排队。
## 6. 状态 earcon 教学义务
8 个签名音保留。新手期只暴露该游戏用到的 ≤3 个。第一次出现必须配一句,例如「听到这个声音,就是轮到你了。」(配 `turn`)。未教过的 earcon 对新手等于没有。
## 7. 全项目共用新台词(各游戏旁白音色各录一份,或引擎共享 sys_*)
| id | 全文 | 类别 |
|---|---|---|
| `sys_first_tap` | 点一下屏幕。 | critical |
| `sys_turn_teach` | 听到这个声音,就是轮到你了。 | content |
| `sys_say_again` | 再说一遍: | content |
| `sys_where` | (由游戏填:位置。目标。一个动作。) | content |
| `sys_demo` | 听我做一次。 | hint |
| `sys_now_you` | 现在你来。 | hint |
| `sys_only_tap` | 现在只要点一下。 | hint |
| `sys_unlock_up` | 想知道自己在哪,就向上滑。 | content |
| `sys_unlock_hold` | 想知道自己在哪,就按住屏幕。 | content |
| `sys_unlock_menu` | 向下滑,可以打开菜单。 | content |
| `sys_unlock_replay` | 没听清,就双击,再听一遍。 | content |
| `sys_confirm_ok` | 对。 | feedback |
游戏专属 short 句在各自 voice-ids 的「26 号增补」节。
## 8. 与旧逐游戏接线的对照(废止项)
| 旧接线 | 废止原因 |
|---|---|
| storyline 看门狗重播 help+进度 | 反模式:原样重复长说明书 |
| storyline 双击=整节点重播 | 连点误触;改为阶段 3 才重听当前句 |
| simon 双击重听 / 上滑重听双义 | 新手期无双击;帮助改长按;免费重听改迷茫 L2 |
| simon「免费机会有两次」账目 | 新手期失败不扣资源(原则 15) |
| rhythm 只在静默时提醒 | 补乱点迷茫;演奏期 ACTION 不插等待声 |
| escape 双击使用物品 / 双击求提示 | 单击合并检查+使用;帮助改长按 |
| 向导语音永不顶掉 | 玩家操作必须顶掉非 critical |
| onceKey 同局只说一次纠错 | 改为每个状态×手势解释一次,之后只回执;连续 3 次无效进迷茫 |
playtest 在 `guide='off'` 时仍测纯玩法。新增乱点机器人必须 `guide='full'`(26 §6.2)。
---
## 档案:v1~v4 裁定与台词 id(交互规则已废止)
以下各节原文是 R7 / round2~4 的落地记录,**只作资产对照**:已生成的 `gd_*` 文件不要无故删除;文案与新手期冲突的(如「双击重新听」)须重录或停用。
### A. earcon 词表(仍有效)
| 名 | 音色家族 | 节奏 | 语义 |
|---|---|---|---|
| menu | 柔和正弦双音 | 下行二度 | 系统界面 |
| explore | 温暖三角波单音 | 单音长尾 | 探索/安全 |
| battle | 略紧方波双音 | 上行纯五度 | 战斗 |
| choice | 清亮正弦三音 | 上行琶音 | 抉择 |
| settle | 柔和三音 | 下行三连 | 结算 |
| danger | 低频双音 | 急促重复 | 危险 |
| turn | 风铃单音 | 短 | 轮到你了 |
| nudge | 木鱼单音 | 极短 | 轻提醒 |
参数:总长 0.25~0.4s,单音 ≥0.08s,125Hz~5kHz,总增益 ≈0.12。
### B. 仍可复用的短句(需核对手势口径)
可用(含义不绑双击):`gd_continue`「轻触屏幕,继续。」、`gd_brief`、`gd_again`「还在吗?单击继续。」、`gd_clear`「漂亮,过了。」、`tut_b2b`「挡得漂亮。」、`gd_wrap_first/last`、`gd_next_fuse`、`gd_room_*`、`dir_*`、`gd_miss_none`「这拍没接。」、`gd_slow`「我放慢一些,跟着试试。」、`gd_count`「四拍之后,继续。」
须停用或重录:任何「双击可以重新听」类(`gd_relisten` 旧文、`t7_retry` 旧文、`gd_economy` 旧文)。帮助入口改为上滑或长按后,占用预告 `gd_occ_*` 仅在阶段 3 双击入池后才有意义。
v1~v4 的 F1~H5 实现细节见 git 历史与 `research/04-playtests/`。新开发不要再按那些看门狗秒数接线。