16 KiB
16 KiB
纯音频游戏交互设计方法论(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 教训:正片有归因而教学没有=好钢用在刀背上)。归因真话律:归因句必须与玩家实际行为严格对应,「宁可粗、不可假」——没出手被报「慢了半拍」会让玩家学会不信任一切归因(round3 视障评委实测证伪「无尝试归入迟到」的偷懒合并)。资源账目真实:有限资源(机会/生命/货币)在消耗时播报真实余量,教学承诺与运行时账目必须一致。
- A5 零惩罚教学:学习期(首局/前 2 次失败)不扣任何资源、自动降难;首胜 ≤3 分钟保送;需要超过一句话解释的机制直接砍掉(Blind Drive 铁律);教学看玩家表现——成功即时确认(新句),失败才给补救,绝不在成功后继续灌补救教学(round1 教训:「我都挡住了它还说来不及」= 被当成白痴时刻)。
- A6 全局一致:同一语义永远同一声音/震动(跨 6 款游戏);探索-激活分离——单击预览/播报,双击执行(读屏惯例,资深视障玩家零学习成本)。手势语义可预测律:当一手势在「答案词表」与「系统键」间-context 两义时,判据必须在轮次开始前用语音宣告(「这一轮,向上滑是作答」),不能藏在游戏内部逻辑里让玩家猜(round2→round3 两轮三人设收敛教训:换一个重听键只是移动冲突,占用预告才是根治)。
- 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 音符、频带 125Hz5kHz、响度高于 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 可操作开局 → 单峰爬升 → 高潮 → 1530s 结算;每 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. 度量与验证(方法论的自证闭环)
三层验证,逐层便宜:
- 转写审计(自动化,每轮必跑):用玩家感知转写器(web/harness/)对每游戏生成整局信息流日志,自动统计四个指标:
- turn cue 覆盖率:每个「等待输入」前是否有标记(目标 100%);
- 静默死局数:等待输入且无声 >5s 的段数(目标 0);
- 归因完整率:失败事件后 2s 内有三问语音的比例(目标 100%);
- 状态可辨识性:任意转写点,仅凭最近 2s 的声音事件能否判断宏观状态(抽查,目标 ≥95%)。
- 玩家代理评审(每轮必跑):4 人设(视障/大学生/白领/工人)读转写写心得,按「状态感知自评 1-5 / 我知道下一步该做什么吗 / 是否愿意继续玩 / P0 问题清单」结构化输出。结题门槛见章程 §4。
- 真机人类听测(发布前):音色美感、响度舒适、双耳定位精度、蓝牙延迟——代理无法替代(roadmap §4 既有流程)。
6. 反模式清单(一票否决)
- 静默死局:等待输入时无声无提示。
- 不可打断语音 / 不可重听的关键指令。
- 失败只给「错了」,不给归因与下一步。
- 数字/碎片拼接语音;一句话讲不完的机制。
- 提示音与游戏内容音混用同一语义域(反馈⑦根因)。
- 弹窗式/不可跳过教学;新手期惩罚性失败。
- 跨游戏语义不一致(同语义不同声、同声不同义)。
- 黑屏寂静的结算/等待(黑屏=崩溃误解,P13:屏幕要有呼吸感,音频同理要有生命迹象音)。
- 为「纯音频」而砍深度(视障社区最反感);反之,为深度而堆并发语音(>2 条)。
- 自动感知场景并切换参数(不可靠;要显式选择)。
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/0105 各报告末尾来源列表(合计 100+ 条);本项目用户反馈裁定档案 docs/design/0013。