Files
SoundGame/docs/design/10-feedback2-state-bgm.md
2026-10-01 23:26:47 +08:00

97 lines
5.0 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.
# 10 · 全局「状态即音乐」规范(26 号对齐)
> **给音频总监**:状态 BGM 身份仍要做。菜单 pad 生产要求不变。新增一条硬约束:语音整条链期间 BGM 保持压低,句间不得抬回来。
> **给开发**:状态→BGM 映射表 §2~§7。切换走 `play('bgm/...')` 交叉淡入。`bgm=0` 时全部静默(含 menu pad)。**等待声不是 BGM**,由发言权管理器合成,不受 `bgm` 设置关闭——`bgm=0` 时玩家仍要听得出「轮到你了」。
交互权威:[26-audio-interaction-playbook.md](26-audio-interaction-playbook.md) 原则 1、10、§4.1、§4.11。
---
## 1. 总则(26 号修订)
1. **玩家只需要听出两种基本状态**:游戏在说 vs 轮到你。BGM 负责宏观场景/紧张度;「轮到你」靠交接提示音 + 等待声,不靠切一首新 BGM。
2. **每个可感知宏观状态仍要有 BGM 身份**(菜单/探索/战斗/结算),闭眼 2 秒可辨。但新手期最多教 3 种状态声(含 earcon),教过才算存在。
3. **menu pad**:-24 LUFS、无鼓或极弱脉冲、和声静止、≥60s 无缝循环。系统界面声,不抢戏。
4. **simon 特例保留**:对局/教学全程无 BGM;只在菜单与结算挂 `bgm/menu`(volume 0.3)。对局的「轮到你」完全靠等待声与音色回声。
5. 切换时机:状态**进入时**切,不是退出时。
6. **整链压低**:voice 播放时 BGM duck 约 12dB(原 20% 增益口径可沿用)。游戏层用 `onComplete` 串句时,句间不得 `_unduckBGM`。Floor 持有一次压低,或 `audio.holdDuck(true/false)`。
7. `bgm=0`:不加载任何 `bgm/`。RPG 场景 amb(sfx 层)不受影响。space 的 `bgm/engine` 仍算 BGM 层,关闭后方位信息由 whoosh/alarm(sfx)承担。等待声、回执、earcon 仍在。
8. 同一时间能听清的声音流最多 2 条。BGM + 语音已经占满时,不要再叠第三条语言。
## 2. storyline《声命线》
| 状态 | BGM | 切换 |
|---|---|---|
| 听讲 / 抉择 | `bgm/dark_drone` | 开局即播,全剧不切 |
| 菜单 | `bgm/menu` | 进菜单 500ms;关菜单淡回 800ms |
| 结局结算 | 保持 dark_drone | 结局语音 duck 即可 |
抉择等待:不切 BGM。交出话轮后起等待声。
## 3. escape《暗室》
| 状态 | BGM | 切换 |
|---|---|---|
| 引导 + 探索 | `bgm/drone` | 不变。探索期环境音常驻(ACTION),等待声可更轻或由房间 amb 承担「还活着」 |
| 菜单 | `bgm/menu` | 进菜单 400ms |
| 逃脱结算 | `bgm/menu` volume 0.5 | drone 淡出后,escape 语音完再淡入 menu 1500ms。禁止结算黑屏寂静 |
## 4. simon《音序回响》
| 状态 | BGM | 切换 |
|---|---|---|
| 教学 / 对局 | **无** | 不加载 |
| 菜单 / 结算 | `bgm/menu` 0.3 | 淡入 600~1000ms |
| 单击重开 | 停 menu | `stopBgm(300)` 回静默 |
听序列 = BUSY(busy 回执);答题 = YOUR_TURN(等待声)。不要用 BGM 区分这两态。
## 5. rhythm《节拍行者》/ 鼓手模式
| 状态 | BGM | 切换 |
|---|---|---|
| 曲目游玩(含教学) | 曲目 BGM(网格排程) | 不变。演奏期 = ACTION,不起等待声 |
| 选曲 | `bgm/menu` | 进选曲 800ms;选定后停 pad 再起曲目 |
| 暂停菜单 | 音乐停,不叠 menu pad | 恢复必须 count-in(26 原则:暂停恢复后第一拍不能注定失败) |
| 结算 | 曲目淡出后淡入 `bgm/menu` | 新增保留 |
## 6. space《盲航》
| 状态 | BGM | 切换 |
|---|---|---|
| 演练 + 对局 | `bgm/engine` | 对局 = ACTION |
| 暂停菜单 | `bgm/menu` | 进 300ms,回 engine 500ms |
| 坠毁结算 | 停 engine 后结算链完淡入 menu | 禁止坠毁后死寂 |
## 7. rpg《剑与声》
BGM 报宏观状态,amb(sfx 层)报场景:
| 状态 | BGM | sfx amb | 听感 |
|---|---|---|---|
| 菜单 | `bgm/menu` | amb 继续 | 游戏还在,界面开了 |
| 探索 | `bgm/explore` 0.35 | `amb_<scene>` | 底 + 景 |
| 村庄 | `bgm/village` | amb_village | 安全 |
| 战斗 | `bgm/battle` | amb 停 | 进战斗 400ms |
| Boss | `bgm/boss` | amb 停 | 400ms |
| 胜 → 探索 | victory sfx → battle 淡出 1500ms → explore 淡入 2000ms + amb | 可听的松弛 |
| 败 → 章首 | battle 停 2000ms → 败句 → village 1500ms | 重生即安全 |
| 章结算 | `bgm/ending` | amb 停 | 完再回 explore |
玩家回合等待:battle BGM 不切,起等待声(或指令菜单循环的报名本身即「轮到你」)。
## 8. new8 / hunt / 其他
各游戏自己的状态 BGM 表仍有效,但必须满足 §1:整链 duck、等待声不走 BGM 层、新手期不新教第 4 种状态音乐。
## 9. 生产清单
menu pad 与 rpg `bgm/explore` 的 Mureka prompt 草稿沿用原文(暗色无人机 / 地下设施 / 记忆游戏 / synthwave / cockpit / 武侠古琴)。新游戏的 menu pad 同样遵守 §1.3 共性。
## 10. 验收
- 闭眼:菜单 vs 游玩 2 秒可辨。
- 旁白两句之间,BGM **不得**突然变响(整链 duck)。
- `YOUR_TURN` 时,即使 `bgm=0`,也能听到等待声或交接提示音。
- `bgm=0.3` / `0` 切换不破音。