实际上,有一些相当标准的方法可以设计游戏中的音乐播放。在设计音乐播放系统时,您面临的问题包括创建平滑的过渡,确保有足够的多样性以及与音乐的互动感。您的问题标题“平稳地更改背景音乐”告诉我,您主要关心的是过渡,这就是我将主要针对每种方法解决的问题。
方法1:层和茎
帕特里克·休斯(Patrick Hughes)称其为在游戏中创建流畅的音乐播放系统的一种方法,即“将音乐分层放置”(有时也称为“词干”),以使曲目没有单一的确定版本。取而代之的是,您可能只有一个基本音轨持续运行,并在其上播放了旋律,节奏,和声变化。
通常,您(再次归功于Patrick Hughes)围绕共同的主题构建这些主题,这些主题贯穿音乐中的每个元素层,甚至消除了游戏中的所有音乐。非旋律图案的一个很好的例子是Martin O'Donnell在Halo游戏中使用Phrygian音阶(http://www.1up.com/features/music-halo-reach)。通常,将这些组成音乐轨道中的每一个对齐以在时间轴上彼此同步播放。尽管可以创建不一定依赖于一致的速度和同步时间轴的音乐层,或者可以在多个速度和时间轴上下文中很好地工作的音乐层。
由于每一层都是设计为可以协同工作的,因此完全有可能在整个游戏中播放单层音乐曲目,从而在其内部各层之间进行微小的过渡以表示游戏状态发生了变化。
方法2:分支
您说您已经制作了音乐曲目,因此这意味着您已经有了一个特定的方向:分支音乐。对于分支音乐,您主要关心的是已指定要在游戏特定部分播放的音轨之间的过渡。您可以通过将各个音乐片段细分成具有几个不同版本的循环来实现多样性,从而使同一版本永远不会在两次迭代中播放两次,也不会总是以相同的方式开头。
处理简单分支音乐中的过渡的一种方法是编写更多音乐,这些音乐纯粹是从这些现有音乐曲目到其他音乐曲目的过渡。即使覆盖所有可能的音乐过渡都是不可行的,但在尝试避免简单的淡入淡出音乐更改的情况下,也可以使用“连接器曲目”尽早结束音乐曲目。
方法3:CCC组合
还需要注意的是,此处讨论的两种主要方法(通常通常将层和分支称为它们)可以在概念上共存。“分支”是一个简单的术语,它描述正在发生的事情,因此您很可能会在分层音乐系统之间进行分支。这通常需要半复杂的播放系统,因此您必须权衡实现所需的时间。
方法4:实用主义和简单的音乐播放
而且,当然,您总是可以根据需要淡入和淡出音乐。如果这是正确的感觉,请不要感到羞耻,否则编写连接器轨道是不可行的。这比硬切完全无关的音乐要好得多-听起来很糟糕。
我也想谈谈您的“无声歌曲”想法。这还不错,但是当您开始播放一条300秒的曲目5秒钟,然后立即进入需要过渡到另一首曲目的状态时,会发生什么呢?如果您真的很想让音乐过渡,那么等待剩下的295秒似乎不切实际。
但是,如果音乐纯粹是背景音乐,并且其基本目的是提供简单设置整体气氛的功能,那么“简单的背景音乐列表”就是考虑它的一种完全合法的方法。在这一点上,您正在谈论的音乐播放列表就像您在iTunes或Windows Media Player中构建的一样(还在吗?),因此您应该牢记这一点。
进一步阅读
要了解有关设计游戏中音乐播放的标准方法的更多信息,您应该查看有关两种最大的交互式音频中间件工具(FMOD和Wwise)的学习资料,这两种工具在业界已广为使用。
Wwise在此页面上有很好的参考资料。在“制作的游戏互动音乐”的文章是特别好,因为它进入约我在这里写的信息进一步深入。该FMODTV Youtube频道与斯蒂芬·舒策覆盖FMOD Studio的视频作为一个整体-包括可用于设计的音乐播放系统,它的部分。了解这些工具如何解决此问题可以帮助您考虑如何解决自己的游戏需求。