大家好,我是一名独立游戏开发者,工作了10年,我即将发布我的第一款个人游戏(仅供背景)。我想分享的是,我和音乐作曲家如何创造出与游戏玩法同步的背景音乐。
整个游戏都是由不断升级的事件和增加的压力组成的,虽然大部分时间是闲置状态,但它设定在冷战时期,所以音乐在这里发挥了重要作用。最终的结果非常惊人,我不知道这种设置是否常见,但我从来没听说过,所以我想分享一下,以便能帮助到其他人!
我们是如何做到的:
首先,我们决定使用 1 个基本音轨(我们有多个音轨用于不同阶段),这是一个始终播放的音轨,是 "默认" 的音轨。一旦我们有了这个基本音轨,我们就添加了我称之为 "修饰器" 的东西,它们是只有轻微变化的音轨,因此可以修改基本音轨而不让它变得太过重复。基本音轨会一直播放,而修饰器会随机打开和关闭,使用自定义计时器、随机延迟、淡入淡出等等。修饰器中只包含自己的声音,如果你明白我的意思的话。有时我会同时运行多个修饰器音轨,这与基本音轨混合得很好。每个音轨都有相同的长度并且可以循环播放。当我启用一个音轨时,我只需将其分配到当前基本音轨的相同起始点即可。然后,我们在上面添加了 "增强器",这些音轨会对基本音轨产生更大的改变,就像其名称所示。我们通过将 1 个 "最终" 版本作为基础,并将每个部分作为自己的音轨来实现这一点,从而允许我们将所有音轨组合成最终版本。 然后在代码中,我只需增加和减少一个浮点数,然后将其向上舍入以确保每个音轨都可以播放,同时保持在所有增强器的数组中定义的范围内。 我为事件等分配了自定义值,然后我还添加了一个衰减值,它会从慢到快的增加到最大值。然后我还添加了一个选项来随机化增强器的顺序,或者保留它。 (经过彻底的测试,我认为保留顺序并手动分配它是更好的选择,但我可以想象一下随机化它可能有用的场景) 值得注意的是:加载多个音轨会引起问题,我很早就注意到了,我解决这个问题的方法是将需要播放的音轨保持在内存中,等待它被请求,然后只在它完全加载后播放它。 音轨很短,大约2分钟。但是,所有修饰器都将使你无法知道。 加载时间也不是很长,玩家可能不会注意到延迟,并且他们也不会知道应该发生什么,所以对我来说,这不是一个特别的担忧。 TLDR:我们通过同步所有音轨的长度并使它们都可以循环播放来添加基本音轨 + 修饰器 + 增强器。然后,我们启用修饰器来使基本音轨不变,添加增强器基于游戏中的事件。通常我不会分享开发信息,但这是一种功能我被惊艳了,想分享给大家。如果这对您有帮助,请自由问任何问题!
评论 (0)