互动音乐是具有多种选项的复杂工具。在工程一开始时就对互动音乐采取一致的策略可节省后期的时间和精力。当然,处理互动音乐工程的方法有很多,您可以在 Wwise 中使用任何方法来为您的游戏创造最佳的结果。下图是有关如何实现互动音乐的建议。
纵向结构以少量段落的重复和变化为基础,各个段落拥有多条音轨。基本的纵向结构可能如下所示:
![]() |
在此例中,一条四轨的音乐段落作为互动音乐的基础。在此图的上半部分,正在播放段落,但没有指定任何状态。低音和鼓音片段设置到正常(Normal)音轨中,正常音轨在每次重复时重复播放相同片段。然而,由于吉它音轨被设置成序列步进(Sequence Step)音轨,因此其内部的片段按照指定的序列播放。钢琴音轨被设置为随机步进(Random Step)音轨,因此它的片段按照随机顺序播放。对于序列步进和随机步进音轨,制造多样性的关键在于创建子音轨(sub-track),使它包含的片段可替代原始音轨中的片段。
在上图的下半部分,音轨已更改成响应状态切换。当游戏处于相对平静的探索状态时,听不到鼓声。相反将播放钢琴音轨(由多个子音轨构成)。一旦过渡到更加激动的格斗状态时,钢琴音轨的音量将下降到听不见的程度,而鼓声音轨音量将增大。吉它音量也会增大。总体效果差不多是音乐改变,以匹配游戏动作。
在纵向中,您可以使用以下方式来更改将要播放哪些音轨:
状态变换
随机步进子音轨
序列步进子音轨。
纵向法特别适用于具有少量复杂音乐片段并且状态切换频率较低的工程。
横向工程结构以多个短段落的层级编排为基础。基本的横向工程结构可如下所示:
![]() |
在此例中,两个音乐播放列表容器中包含对应于两种游戏状态的音乐段落:Exploration(探索)和 Fight(格斗)。在第一个容器中,段落按随机组合排列,因此它们将按随机顺序播放。在第二个容器中,段落按序列组合排列,因此它们将按预定序列播放。当游戏从 Exploration 状态过渡到 Fight 状态时,Exploration 容器中播放的最后一个段落将过渡到 Fight 容器中的第一个段落。这将创造从一种音乐整体切换到另一种音乐的效果。
在横向工程结构中,您可以使用以下方式改变将播放的段落:
状态变换
随机容器
序列容器
实现组合式工程结构
通过 Wwise 创建的工程大多数同时使用横向和纵向元素。您可以决定每种结构在多大程度上最适合您的工程。例如,您可以为每种状态创建不同的段落(横向结构),但使用随机子音轨改变各个段落中的音轨播放(纵向结构)。
Music Switch Container 支持绑定到多个 State Group 或 Switch Group 上。在音乐依赖于来自游戏的多个输入的场景中,最好避免创建级联式 Music Switch Container 的层级结构,而是将所有输入插入到同一个 Music Switch Container 中。Music Switch Container 的内容可使用虚拟文件夹来组合,关联系统支持在关联中复用来自多个 State 或 Switch 值的内容。
请注意,使用多级 Switch Container 会造成您无法为所有过渡指明重要性顺序,因为这些过渡被定义成多个不同的集合,这些集合不仅有包罗规则(集合间可以交叉过渡),而且相互之间不存在优先级关系。因此,您的音乐过渡可能会让人觉得很随机,并且很难跟踪所有的可能性。