Files
SoundGame/research/02-methodology/methodology.md
T

150 lines
16 KiB
Markdown
Raw 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.
# 纯音频游戏交互设计方法论(v1.0)
> 本研究项目的核心交付物。综合 5 路文献调研(research/01-literature/)+ 本项目 6 款游戏的交互清点(research/03-schemes/game-inventory.md)+ 两轮玩家代理试玩验证(research/04-playtests/)得出。
> 用法:**设计/评审任何纯音频游戏交互时,按 §3 交互栈逐层过一遍,用 §4 决策规则按(游戏类型 × 用户 × 场景)推导参数,用 §5 度量验收,§6 反模式一票否决。**
---
## 0. 一句话总纲
**视觉游戏的画面是一层「空间上常驻、可随时回读」的信息;听觉是一层「时间上串行、过耳即逝」的信息。纯音频游戏交互设计的中心问题,就是用时间上可预测的声音结构,重建空间上常驻的信息层——让玩家在任意时刻都能在 2 秒内答出:我在哪、在发生什么、轮到我了吗、我该做什么。**
玩家「不知道自己处于什么状态」的根因不是声音太少,而是**状态信号不可预测**:事件层的音效很多,但缺少「可预期的、成结构的状态表达」。由此得出下面的公理与栈。
## 1. 四通道模型(原语)
| 通道 | 带宽 | 时间特性 | 承载 | 约束 |
|---|---|---|---|---|
| **语音 TTS** | 高(≈4.5字/秒) | 串行、独占、慢 | 指令、归因、状态查询、叙事 | 并发 ≤2 条(CHI'25);必须可打断、逐句跳过、可重听;语速可调(视障档至 ≥2.2×) |
| **音效/earcon** | 低(每音 1~3 bit) | 即时、可叠 | 事件刻画、信息类别前缀、回合标记 | 同类事件跨游戏同音色(Friberg 分类学);写实声学须夸张化才可读(BlindSide 教训) |
| **音乐/BGM** | 中(情绪+结构) | 连续、常驻 | **宏观状态签名**、进度段落、紧张度 | 状态→曲目一一对应(「状态即音乐」已有规范);语音播放时 duck 至 20% |
| **震动** | 极低(10~25 个可学模式) | 即时、独占 | 操作反馈(对/错)、离散事件、静默场景兜底 | iOS 无震动→静默降级绝不回退提示音(既有裁定);静音玩法(摸鱼档)震动语言 ≤6 语义 |
**分工铁律**:语音说「你要做什么」,音效说「正在发生什么类别的事」,音乐说「你在哪个状态」,震动说「你刚才那下对不对」。四者语义不得混用——用户反馈⑦的根因(提示音混淆)就是音效抢了震动的语义。
## 2. 七条设计公理(不可妥协)
- **A1 状态常显**:任何时刻玩家都能用两个途径获知状态——被动:BGM 状态签名 2 秒可辨;主动:status key 手势随时查询「我在哪/有什么/能做什么」。二者都必须存在。
- **A2 回合明确**:等待输入的**每一个**边界都有标记(turn cue 音+可选语音),动作类游戏每回合/每应答窗口都算,不能只标第一次;任何等待 >3 秒必须有声(进度音/环境声/心跳),**绝无静默死局**;暂停/中断恢复回到实时玩法时必须有 count-in(拍点)或局面复述,否则恢复后第一拍注定失败。
- **A3 信息分层**:关键事件 > 指令播报 > 环境氛围,用音量域+音色域区分优先级;并发语音 ≤2,其余排队或降级为音效。
- **A4 归因闭环**:失败后 ≤2 秒内语音回答三问:为什么输(具体行为,能分档就分档:早了/晚了/方向错)、差多少(量化差距)、下次一条建议;随后重试入口 ≤2 秒。失败不可归因是弃游强预测因子(CHI'25)。**教学期失败尤其要归因**——「没关系」不是归因(round1 教训:正片有归因而教学没有=好钢用在刀背上)。
- **A5 零惩罚教学**:学习期(首局/前 2 次失败)不扣任何资源、自动降难;首胜 ≤3 分钟保送;**需要超过一句话解释的机制直接砍掉**(Blind Drive 铁律);**教学看玩家表现**——成功即时确认(新句),失败才给补救,绝不在成功后继续灌补救教学(round1 教训:「我都挡住了它还说来不及」= 被当成白痴时刻)。
- **A6 全局一致**:同一语义永远同一声音/震动(跨 6 款游戏);**探索-激活分离**——单击预览/播报,双击执行(读屏惯例,资深视障玩家零学习成本)。
- **A7 场景显式**:手机网页拿不到可靠上下文传感器——场景适配做成**入口显式选择 + 记忆上次选择**(通勤/摸鱼/睡前/下班四档参数包),不搞自动切换(A 与 B 的响度需求互斥)。
## 3. 交互栈(五层,逐层实现状态感知)
### L1 反馈层 ——「你刚才那下,机器收到了」
- 每次触摸(含无效手势)**≤100ms** 给确认:震动(引擎已内置 swipe/confirm/error)+ 结果性音效 ≤1s。
- 无效手势给 `error` 震动 + 纠错语音(见 L4),**绝不静默**(storyline 现状:无效手势零反馈,必须修)。
- 反模式:只在「做对」时有反馈;错误时静默或只震不说。
### L2 事件层 ——「发生了什么类别的事」
- 每个可交互对象/事件一个独特音色,按 Friberg 五分类(avatar/object/character/ornamental/instruction)管理词汇表。
- **earcon 只做「粗类别」标记,语义靠语音承载**:实验结论——earcon 达到 100% 识别平均要 8.5 轮训练,语音只需 1.14 轮(Dingler & Lindsay, ICAD 2008);元分析排序为 语音 ≈ spearcon > 混合告警 > 拟真音 > earcon。因此:类别 earcon 全游戏 ≤5~7 个、开场显式教一次、只回答「这条信息要不要行动」,具体内容永远用语音说。
- **earcon 合成硬参数**(Brewster 指南):总长 0.25~0.4s、单音符 ≥0.08s、每秒 ≤6 音符、频带 125Hz~5kHz、响度高于 BGM 背景约 +10dB;类别区分用「音色定家族 → 节奏定子类 → 音高细分」的层级结构(音高单独区分需要 2~3 个八度,不可依赖)。
- 威胁类事件必须有**前置预警窗**:预警音 → 判定的时间窗 1.5~2s 起调(Blind Drive P3),预警强度随距离/紧迫度连续上升;告警三重呈现=快起音宽音域 earcon + 语音 + 震动。
- 反模式:所有音效同等响度同等音色域;用写实但不可读的声学;用 earcon 承载需要「听懂」的精细语义;pitch 单音高区分状态。
### L3 状态层 ——「我在哪」(本方法论的核心层)
- **状态 earcon 签名**:每个宏观状态(菜单/探索/战斗/抉择/结算/危险,**全项目共 6 个,不多做**)绑定一个 2~3 音签名 earcon(家族=音色、子类=节奏,见 L2 参数),**进入状态时播**(不是退出时);签名跨游戏同族(菜单永远是那两个下行音);开场教学里把 6 个签名各教一次(「听到这个音=进入战斗」)。
- **状态即音乐**:状态 BGM 一一对应(既有 10 号规范),音乐段落编码进度;并发声流 ≤2(ASA:人同时只能注意 1~2 条声流;并发 earcon 识别率仅 ~30%,McGookin & Brewster)。
- **被动阈值播报**:生命/时间/资源在 75/50/25/15% 节点自动短促播报(配独立音色+震动),<15% 转持续脉动;杜绝「毫无预兆死亡」。
- **status key**:全局手势(长按/上滑)随时播报:游戏名/阶段/生命与关键资源/当前目标/**当前可用手势清单**(三十年音频游戏惯例);单次播报 ≤3 个选项(听觉工作记忆 ≈4 chunks,Cowan 2001)。
- **全局混音签名**(P7):状态不只靠提示音——低血量=全声场闷化/心跳叠加,让「耳朵里整体感觉不对」。
- 反模式:只在大厅有状态表达,局内没有;状态查询要进二级菜单;签名 earcon 超过 6 个或不在教学里出现。
### L4 引导层 ——「向导」
- **向导人设**:一个角色化系统声持续播报方位/下一步(A Blind Legend 的 Louise 模式,P1);系统音与叙事音色分离(P2)。
- **静默看门狗**:等待输入无操作 3~5s → 轻 turn cue 复述;二次 escalate 播上下文提示;之后停止(不轰炸)。**提示永不逐字重复**——同一等待点的第 2 次提示必须是新短句或纯音频标记(round1 四人设全票教训:逐字重播 26s 说明书 = 「罚听」,把「停下来回味」的玩家当成了卡死者);**剧情/叙事类游戏的等待点是合法的回味时间,看门狗阈值加倍且只重申手势**;纠错/提醒类语音**空闲才播,过期丢弃**(queue 尾部迟到的纠错句比不播更有害——它归因于已过去的错误)。卡关 60/120/180s 三级提示(escape 已有,推广到全游戏)。
- **开场三要素模板**(P9):每局开场 ≤60s 讲完 地形/场景 → 目标 → 威胁音色预览(先在教学里听一次威胁声,实战才认得);首次进入某游戏时把该游戏用到的**状态签名 earcon 各教一次**(「这个音是战斗」),因为 earcon 不教不认识(8.5 轮训练结论)。
- **Prime→Teach→Observe**:预听示范 → 首局中做一次 → 后续局自然复现;教学寄生局内、≤90s、永远可跳过;同一手势 10 分钟内 2~3 情境复现。
- **向导等级设置**:`full`(全语音向导)/`standard`(仅 earcon+关键语音)/`off`(老手),全局设置 + 每游戏入口显式问一次。
- 反模式:弹窗式教学;开场不能跳的长教程;提示打断操作节奏。
### L5 会话层 ——「随时来,随时走,随时接着玩」
- 单局 3~5 分钟结构:≤10s 可操作开局 → 单峰爬升 → 高潮 → 15~30s 结算;每 30~60s 一个奖励点。
- **断点续玩**:任意时刻可退出;重进 ≤5s 回到可玩状态,开局 5 秒语音**局面复述**(上次到哪/现在该做什么——被打断后恢复平均要 23 分钟,恢复成本游戏承担)。
- **开环钩子**:结算必含一个未完成项(Zeigarnik);奖励放下一局开头。
- **失败结算 ≤15 秒**必答 A4 三问。
- 反模式:结算只有分数没有归因;退出丢进度;重进从头再来。
## 4. 决策规则:从(游戏类型 × 用户 × 场景)推导方案
方法论给出的不是单一方案,而是一台「推导机」:
### 4.1 游戏类型 → 状态层重点
| 游戏类型 | 信息结构 | 状态层重点(在本项目中的游戏) |
|---|---|---|
| 叙事抉择型 | 线性节点+分支 | 抉择窗口标记(「请选择」earcon 前缀+选项预听)、进度段落化(幕/章)(storyline) |
| 空间探索型 | 图状空间 | 方位连续参数映射(夹角→音高/距离→ping 节奏,Shades of Doom 参数表)、撞墙归因、目标方向信标 (escape) |
| 记忆复现型 | 序列 | 听/答阶段切换标记(最强 turn cue 需求)、序列长度进度 (simon) |
| 节奏跟随型 | 时间网格 | 领奏/应答角色切换标记、拍面锚点(beat 震+音已有)、判定反馈分级 (rhythm) |
| 反应闪避型 | 连续流 | 威胁方位离散化(≤4 象限)、预警窗、受击归因、难度自适应三档 (space) |
| 回合策略型 | 轮转 | 回合权轮转标记(谁回合)、指令菜单列表导航、格挡窗口纠错、血量阈值播报 (rpg) |
### 4.2 用户 → 旋钮(叠加在基线上)
| 用户 | 默认向导等级 | 关键旋钮 |
|---|---|---|
| 视障玩家 | standard(尊重专家,别当白痴) | 语速上限 ≥2.2×、完整空间信息、读屏共存、绝不简化深度(反「把盲人当白痴」) |
| 时间充裕大学生 | standard | 保留成长深度、引导全可跳过、开环钩子拉留存 |
| 时间紧张白领 | full(上手快) | 3 分钟一局、断点秒续、摸鱼档(静音震动玩法,≤6 震动语义) |
| 疲惫工人 | full | 零新信息教学(只复用已学手势)、容错拉满、二值化反馈、低认知负荷 |
### 4.3 场景 → 参数包(入口显式选择,A7)
| 参数包 | 语速 | 响度/混音 | 单局 | 特有机制 |
|---|---|---|---|---|
| A 通勤·噪声鲁棒 | 0.9×+句间停顿 | 关键信息两遍式、响度提亮 | 3 分钟、到站可弃 | 关键值重听零成本 |
| B 摸鱼·静默震动 | —(全静音) | 仅震动语言 | ≤3 分钟、随时弃 | 自动暂停+一句话续玩 |
| C 睡前·助眠低负 | 默认 | 低音量暖音色 | 不限 | 睡眠定时器软着陆、失败即鼓励 |
| D 下班·轻回血 | 默认 | 扬声器免耳机 | 短局 | 即时正反馈前置、容错拉满 |
**推导算法**:方案 = 全局基线(§3 全栈) → 按 4.1 加该游戏类型的重点项 → 按 4.2 设用户旋钮 → 按 4.3 叠场景参数包。任何一步冲突时优先级:安全(听力/场合)> 状态感知 > 沉浸感。
## 5. 度量与验证(方法论的自证闭环)
三层验证,逐层便宜:
1. **转写审计(自动化,每轮必跑)**:用玩家感知转写器(web/harness/)对每游戏生成整局信息流日志,自动统计四个指标:
- **turn cue 覆盖率**:每个「等待输入」前是否有标记(目标 100%);
- **静默死局数**:等待输入且无声 >5s 的段数(目标 0);
- **归因完整率**:失败事件后 2s 内有三问语音的比例(目标 100%);
- **状态可辨识性**:任意转写点,仅凭最近 2s 的声音事件能否判断宏观状态(抽查,目标 ≥95%)。
2. **玩家代理评审(每轮必跑)**:4 人设(视障/大学生/白领/工人)读转写写心得,按「状态感知自评 1-5 / 我知道下一步该做什么吗 / 是否愿意继续玩 / P0 问题清单」结构化输出。**结题门槛见章程 §4**。
3. **真机人类听测(发布前)**:音色美感、响度舒适、双耳定位精度、蓝牙延迟——代理无法替代(roadmap §4 既有流程)。
## 6. 反模式清单(一票否决)
1. 静默死局:等待输入时无声无提示。
2. 不可打断语音 / 不可重听的关键指令。
3. 失败只给「错了」,不给归因与下一步。
4. 数字/碎片拼接语音;一句话讲不完的机制。
5. 提示音与游戏内容音混用同一语义域(反馈⑦根因)。
6. 弹窗式/不可跳过教学;新手期惩罚性失败。
7. 跨游戏语义不一致(同语义不同声、同声不同义)。
8. 黑屏寂静的结算/等待(黑屏=崩溃误解,P13:屏幕要有呼吸感,音频同理要有生命迹象音)。
9. 为「纯音频」而砍深度(视障社区最反感);反之,为深度而堆并发语音(>2 条)。
10. 自动感知场景并切换参数(不可靠;要显式选择)。
## 7. 与本项目既有实现的差距表(落地索引)
| 方法论条目 | 本项目现状 | 差距动作 |
|---|---|---|
| A1 状态 BGM | ✅ 10 号规范已实现 | 无 |
| A1 status key | 部分(上滑=帮助/状态,各游戏实现不一) | 统一内容模板:状态+目标+可用手势 |
| A2 turn cue | ❌(仅 rpg 有 turn_player) | 引擎 guide 层统一实现 |
| A2 静默看门狗 | 部分(escape 三级提示;storyline/simon 无) | 引擎 guide 层统一实现 |
| A4 归因闭环 | 部分(space 有归因语音;rhythm Miss 无语音) | 逐游戏补纠错语音 |
| A6 earcon 词表 | ❌(无 earcon 体系) | 引擎 guide 层运行时合成词表 |
| A6 探索-激活分离 | 部分(菜单单击循环+双击确认已有) | 保持,不全盘改单击语义(改动成本>收益,见方案文档裁定) |
| A7 场景参数包 | ❌ | 大厅入口场景选择(本轮先落参数包 A/C 的最小集,见方案文档分期) |
| L5 断点续玩 | 部分(rpg/escape 有存档;局面复述无) | 重进时播局面复述一句 |
| 语音可打断/语速 | ✅ 打断/长按快进/1.7× 已有 | 语速档补 2.2×(视障档) |
---
*参考来源:research/01-literature/01~05 各报告末尾来源列表(合计 100+ 条);本项目用户反馈裁定档案 docs/design/00~13。*