音频设计
音频是让世界变得真实的最快方式。一个带有雨声和远处心跳音效的生存惊悚游戏,感觉和只有文字的截然不同——即使文笔完全一样。系统很轻量:上传几首曲目,配置播放方式,引擎处理剩下的。
关于曲目类型(BGM、SFX、Ambient)和设置基础,请参阅入门指南:音频。
音频如何被触发
你的世界中有三种方式播放音频,从最简单到最灵活。
1. 播放列表:设置后就不用管
BGM 播放列表在玩家进入世界时自动播放一系列曲目。大多数世界只需要这个。
在编辑器的音频部分配置:
| 设置 | 功能 |
|---|---|
| tracks | 要播放的 BGM 曲目及顺序 |
| playMode | loop(从头循环)、shuffle(随机)或 sequential(全部播完再重复) |
| autoPlay | 世界加载时立即开始 |
| waitForFirstMessage | 等玩家发送第一条消息后再开始——适合有角色创建或开场动画的世界 |
| gapSeconds(0-30) | 曲目之间的静音间隔,营造「换唱片」的感觉 |
樱花季和 PRTS 终端都用最简单的配置:一首 BGM 曲目,loop 模式,autoPlay 开启。这就是一个 2000+ 次游玩世界的全部音频配置。
最简配置
上传一个音频文件。创建一个 BGM 曲目。将其加入播放列表并设 autoPlay: true。搞定——玩家从开始那一刻就能听到音乐。
2. AI 指令:让叙述者为配乐打拍子
AI 可以在回复中嵌入音频命令,使用与变量指令相同的方括号语法。玩家看不到这些——引擎在显示文本前就剥离了。
The door flies open with a deafening crash. [audio: door-slam play]
An armored figure steps through the smoke.玩家读到干净的叙事,同时听到门猛烈撞开的声音。
可用指令:
| 指令 | 功能 |
|---|---|
[audio: trackId play] | 播放曲目 |
[audio: trackId stop] | 停止曲目 |
[audio: trackId crossfade 2.0] | 在 2 秒内从当前 BGM 渐变到此曲目 |
[audio: trackId volume 0.5] | 不停止地改变音量 |
[audio: trackId play chain:nextTrackId] | 播放此曲目,结束时自动播放下一首 |
chain 指令特别适合过渡:播放一个战争号角 SFX,号角结束时无缝切入战斗 BGM。比两条单独的指令更流畅。
AI 指令可以与状态变化混合在同一条回复中:
A rumbling echoes from deep in the dungeon. [audio: earthquake-sfx play]
Debris falls from the ceiling. [health: -5]
The ambient sound grows oppressive. [audio: ambient-cave volume 0.3]需要注意的是: AI 有时会忘记包含指令,尤其是在长回复或专注于复杂叙事时。对于必须在正确时刻播放的音频,使用条件 BGM 或规则代替。
3. 条件 BGM:音乐跟随故事
条件 BGM 是音频系统最有趣的部分。你定义条件,引擎在条件满足时自动切换曲目——不需要 AI 参与。
可以把它想象成编程一段响应游戏状态的配乐:在酒馆时播放酒馆音乐,在战斗中播放战斗音乐,其他时候播放探索音乐。
每个条件 BGM 条目包含:
| 设置 | 功能 |
|---|---|
| triggerType | 监视什么:variable(游戏状态)、keyword / ai-keyword(文本匹配)、turn-count 或 session-start |
| conditions | 变量检查(使用 variable 触发器时) |
| targetTrackId | 切换到哪首曲目 |
| priority | 多个条件同时匹配时数字越大优先 |
| fadeInDuration / fadeOutDuration | 过渡速度(秒) |
| stopPreviousBGM | 通常为 true——除非你想叠加多首曲目 |
| fallback | 条件不再满足时播放什么:"default"(回到播放列表)、"previous"(回到上一首)或指定 trackId |
示例:战斗曲目切换
两首 BGM 曲目:explore-bgm 和 battle-bgm。播放列表默认播放探索音乐。一个条件 BGM 条目监视 location eq "battle_arena"——条件为 true 时,引擎在 0.5 秒内渐变到战斗音乐。当玩家离开竞技场,fallback: "default" 回到探索音乐。
玩家在战斗开始和结束时听到平滑的音乐过渡,AI 不需要记住任何关于音频的事。
使用规则控制音频
行为系统有一个 play-audio 动作,让你完全不需要 AI 就能控制音频。这是必须在精确时刻播放的音频最可靠的方法。
大逃杀使用 death-sfx 和 heartbeat-sfx 曲目作为音频工具包的一部分。虽然当前版本依赖 AI 指令来触发它们,但将它们接入规则可以保证在正确时刻播放——生命值降到 20 以下时播放心跳 SFX,生命值归零时播放死亡音效。
play-audio 动作支持与 AI 指令相同的操作:
| 动作 | 功能 |
|---|---|
play | 开始播放 |
stop | 停止播放 |
crossfade | 从当前 BGM 渐变到此曲目 |
volume | 改变音量 |
结合 variable-crossed 触发器,创造 100% 可靠的音频提示:
WHEN: health drops below 20
THEN: play-audio crisis-bgm crossfade (fadeDuration: 1.5)不需要 AI 参与。引擎机械地处理。
设计建议
音量平衡
BGM 设 0.3-0.5 适合大多数世界。玩家在阅读文字——太大声的音乐会干扰注意力。环境音可以更低(0.1-0.3)作为背景质感。SFX 应该更大声(0.7-0.9),因为它们短暂且用于标记时刻。
曲目少而精
大逃杀有四首音频曲目:一首角色创建 BGM、一首游戏播放列表 BGM、一个心跳 SFX 和一个死亡 SFX。这足以在长达数小时的生存游戏中营造紧张感。你不需要 20 首曲目的音乐库——几首精心挑选的加上好的渐变过渡比杂乱的配乐效果好得多。
所有过渡都用渐变
突然的音频切断很刺耳。在 BGM 曲目上设置 fadeIn: 2 和 fadeOut: 1.5,让过渡感觉平滑。切换曲目时用 crossfade 代替停止再播放。条件 BGM 的默认渐变(1 秒渐入、1 秒渐出)是合理的起点。
何时让 AI 处理 vs. 何时自动化
当触发是叙事性的时让 AI 处理——门猛关、角色倒吸一口气、爆炸。这些时刻不可预测,AI 知道它们何时发生因为是它在写。
当触发是机制性的时自动化——进入某个地点、生命值越过阈值、特定回合数。这些是精确的状态变化,引擎比 AI 追踪得更好。
很多世界两者都用:播放列表作为基础音乐,条件 BGM 用于基于地点的切换,AI 指令用于戏剧性 SFX 时刻。
延伸阅读
完整音频 schema 和播放列表配置 → World Spec: Audio
