Skip to content

音频设计

音频是让世界变得真实的最快方式。一个带有雨声和远处心跳音效的生存惊悚游戏,感觉和只有文字的截然不同——即使文笔完全一样。系统很轻量:上传几首曲目,配置播放方式,引擎处理剩下的。

关于曲目类型(BGM、SFX、Ambient)和设置基础,请参阅入门指南:音频


音频如何被触发

你的世界中有三种方式播放音频,从最简单到最灵活。

1. 播放列表:设置后就不用管

BGM 播放列表在玩家进入世界时自动播放一系列曲目。大多数世界只需要这个。

在编辑器的音频部分配置:

设置功能
tracks要播放的 BGM 曲目及顺序
playModeloop(从头循环)、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-countsession-start
conditions变量检查(使用 variable 触发器时)
targetTrackId切换到哪首曲目
priority多个条件同时匹配时数字越大优先
fadeInDuration / fadeOutDuration过渡速度(秒)
stopPreviousBGM通常为 true——除非你想叠加多首曲目
fallback条件不再满足时播放什么:"default"(回到播放列表)、"previous"(回到上一首)或指定 trackId
示例:战斗曲目切换

两首 BGM 曲目:explore-bgmbattle-bgm。播放列表默认播放探索音乐。一个条件 BGM 条目监视 location eq "battle_arena"——条件为 true 时,引擎在 0.5 秒内渐变到战斗音乐。当玩家离开竞技场,fallback: "default" 回到探索音乐。

玩家在战斗开始和结束时听到平滑的音乐过渡,AI 不需要记住任何关于音频的事。


使用规则控制音频

行为系统有一个 play-audio 动作,让你完全不需要 AI 就能控制音频。这是必须在精确时刻播放的音频最可靠的方法。

大逃杀使用 death-sfxheartbeat-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: 2fadeOut: 1.5,让过渡感觉平滑。切换曲目时用 crossfade 代替停止再播放。条件 BGM 的默认渐变(1 秒渐入、1 秒渐出)是合理的起点。

何时让 AI 处理 vs. 何时自动化

当触发是叙事性的时让 AI 处理——门猛关、角色倒吸一口气、爆炸。这些时刻不可预测,AI 知道它们何时发生因为是它在写。

当触发是机制性的时自动化——进入某个地点、生命值越过阈值、特定回合数。这些是精确的状态变化,引擎比 AI 追踪得更好。

很多世界两者都用:播放列表作为基础音乐,条件 BGM 用于基于地点的切换,AI 指令用于戏剧性 SFX 时刻。


延伸阅读

完整音频 schema 和播放列表配置 → World Spec: Audio