Skip to content

音频设计 ​

同样的文字,一个带雨声和远处心跳音效的生存惊悚,和一个只有文字的,玩起来感觉完全不同。设置起来也不麻烦:上传几条音轨,配好怎么放,剩下的交给引擎。

音轨的类型(BGM、SFX、Ambient)和基本设置,见 视觉与音频。

要找一条音轨的 ID,打开 面板 → 音频,选中这条音轨,它的 音轨 ID 是只读的,旁边有 复制 ID。playAudio(trackId) 和 [audio: trackId play] 这类指令里填的就是它。资源里的素材 ID 指的是上传的那个文件,和音轨 ID 不是一回事。下面例子里的 door-slam 这类 ID,换成你自己音轨的 ID。


音频是怎么被触发的 ​

世界里的音频有四种放法,从最简单到最灵活。

1. 播放列表:设好就不用管 ​

默认播放列表 会在玩家进入世界时自动按顺序放一串音轨。大多数世界有它就够了。

在 面板 → 音频 的 BGM 播放配置 里设:

设置作用
音轨放哪几条 BGM、按什么顺序
播放模式循环(放完从头再来)、随机 或 顺序(全部放完再重复)
自动播放世界加载时尝试播放
等待首条消息等玩家发了第一条消息再开始,适合有角色创建或开场动画的世界
曲间间隔(秒)(0-30)两首之间留一段安静,像换唱片

Sakura Season 和 PRTS Terminal 用的都是最简单的配置:一首 BGM,循环,开着自动播放。它们的音频配置就只有这些。

最简配置

上传一个音频文件。建一条 BGM 音轨。把它加进播放列表,打开 自动播放。如果浏览器拦截自动播放,会在玩家后续点击等操作时重试。离开世界后,它的音频会停止。

2. 智能追踪:AI 照着你写的提示挑 ​

在 面板 → 音频 里,每条音轨都有 让 AI 自动放这首(音效是 让 AI 自动放这个音效)。在 什么时候放 里写一句,比如「热闹欢快,庆祝、集市、追逐打闹时放」,音效就写「有人拔刀动手」。每次回复后,智能追踪会拿当前场景和这些提示对一对:剧情对上某首,就切过去;某个音效的时刻到了,就放一次。不写的话,这条音轨只按播放列表和条件规则放。

不管玩家用的是什么模型都管用,因为写故事的 AI 不需要记得写任何东西。下面几项决定它和你其它的音乐怎么相处:

  • AI 想换歌,但条件规则正在放它自己的曲子时:规则优先(规则的曲子照放)或 AI 优先(换成 AI 选的,直到放完或 AI 交还)
  • AI 选的曲子放完以后:一直循环直到 AI 换歌,或者只放一遍、放完回到默认播放列表
  • AI 放音效的时候,把背景音乐压低,放完恢复

智能追踪默认是开着的,开关在 卡的设置 里,名字就叫 智能追踪。

3. AI 指令:让旁白给配乐打拍子 ​

AI 可以在回复里嵌入音频命令,语法和变量指令一样是方括号。玩家看不到这些,引擎在显示文字之前会把它们去掉。

只有打开了 允许 AI 控制 的音轨才能这样控制。它默认是开着的;想把某条音轨留给自定义界面、脚本、行为或播放列表,就把它关掉(在画布上点这条音轨,或者在 面板 → 音频 里)。写指令或在自定义界面里调用时,用 复制 ID 复制这条音轨的 音轨 ID。

门被一声巨响撞开。[audio: door-slam play]
一个披甲的身影从烟雾里走出来。

玩家读到的是干净的叙述,同时听到门被撞开的声音。

可用的指令:

指令作用
[audio: trackId play]播放这条音轨
[audio: trackId stop]停止这条音轨
[audio: trackId crossfade 2.0]用 2 秒从当前 BGM 渐变到这一首
[audio: trackId volume 0.5]不停下来,只改音量
[audio: trackId play chain:nextTrackId]放这一首,放完自动接下一首

chain 适合做过渡:先放一声战争号角的音效,号角放完就进战斗 BGM,不用再写第二条指令。

AI 指令可以和状态变化写在同一条回复里:

地牢深处传来一阵轰鸣。[audio: earthquake-sfx play]
碎石从头顶落下。[health: -5]
四周的环境音越来越压抑。[audio: ambient-cave volume 0.3]

缺点: AI 有时会忘记写指令,尤其是回复很长、或者它在专心写复杂剧情的时候。一定要在准确时刻响起的声音,改用条件 BGM 或行为。

4. 条件 BGM:音乐跟着故事走 ​

你定好条件,条件满足时引擎就切换音轨,AI 不参与。在 面板 → 音频 的 条件 BGM 下点 添加条件规则。

这样配乐就会跟着游戏状态走:在酒馆放酒馆音乐,打起来放战斗音乐,其它时候放探索音乐。

每条条件 BGM 规则有这些设置:

设置作用
条件看什么:变量条件、玩家关键词 / AI 关键词(匹配文字)、回合计数 或 会话开始
条件(变量检查)变量检查(用 变量条件 时),用 满足全部条件 或 满足任一条件 组合
播放切到哪一首
优先级好几条同时满足时,数字大的赢
淡入 (秒) / 淡出 (秒)过渡用几秒
停止上一首 BGM一般开着,除非你想叠好几首
结束时条件不再满足时放什么:返回默认播放列表、返回上一曲,或者指定一首
例子:切战斗音乐

两首 BGM:explore-bgm 和 battle-bgm。播放列表默认放探索音乐。一条条件 BGM 规则盯着 location 是不是 battle_arena,一旦是,引擎用 0.5 秒渐变到战斗音乐。玩家离开竞技场后,返回默认播放列表 把探索音乐放回来。

战斗开始和结束时,玩家都能听到平滑的音乐过渡,AI 不用记任何跟音频有关的事。


用行为控制音频 ​

行为有三个音频效果:播放音乐、播放音效 和 停止音频,完全不经过 AI 就能控制音频。必须在准确时刻响起的声音,用它最稳。

Battle Royale 的音频里有一条 death-sfx 和一条 heartbeat-sfx。现在的版本是靠 AI 指令来放它们的;如果接到行为上,就能保证它们在对的时候响:生命掉到 20 以下放心跳,生命归零放死亡音效。

效果作用
播放音乐放一首背景音乐
播放音效放一个一次性音效
停止音频停掉这条音轨

配上 变量越过阈值 这个触发,就能做出一定会响的音频提示:

什么时候触发:  health 降到 20 以下
效果:          播放音乐 → crisis-bgm

淡入淡出和改音量不是行为效果。要做这些,用条件 BGM、AI 指令,或者在界面代码里用 api.playAudio(trackId, { fadeDuration, volume })。


设计建议 ​

音量平衡 ​

大多数世界里 BGM 放在 0.3-0.5 就行。玩家在读字,音乐太响会抢注意力。环境音可以更低(0.1-0.3),当作背景质感。音效要响一点(0.7-0.9),因为它很短,就是用来给某个瞬间加重音的。

音轨少一点,效果反而好 ​

Battle Royale 一共四条音轨:一首角色创建 BGM、一首游戏中的播放列表 BGM、一个心跳音效、一个死亡音效。撑起一局好几个小时的生存游戏的紧张感,这些就够了。不需要准备 20 首的曲库,几首挑好的、过渡做顺的,比塞满的配乐效果更好。

都加上淡入淡出 ​

声音突然切断很突兀。BGM 音轨把 淡入 (秒) 设成 2、淡出 (秒) 设成 1.5,过渡就顺了。换歌时用 crossfade,不要先停再放。条件 BGM 默认的淡入淡出(各 1 秒)可以先拿来用。

什么时候交给 AI,什么时候自动化 ​

触发点是 剧情 的时候交给 AI:门被撞开、角色倒抽一口气、一声爆炸。这些时刻没法预测,而 AI 知道它们什么时候发生,因为就是它写出来的。

触发点是 机制 的时候用自动化:进入某个地点、生命越过某条线、到了第几回合。这些是准确的状态变化,引擎比 AI 盯得更准。

很多世界是混着用的:播放列表放底子音乐,条件 BGM 按地点切换,「什么时候放」的提示或 AI 指令负责关键时刻的音效。


另见 ​

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