版本
术语“Secondary Output”(二路输出)指的是主电视或主扬声器之外的任何音频输出。对于这些输出,必须根据不同情况独立完成音频混音。对于游戏中的各个可用输出,您都可以按需创建足够多的主二路输出总线。最常见的二路输出是游戏控制器上的扬声器或耳机。也存在其它独立的输出(聊天、背景音乐、耳机等)。本章的下面部分将围绕游戏控制器扬声器进行讨论,但也可以应用至其它所有类型的输出。
要针对音频使用二路输出,需要采用以下两种方法之一将声音连线至 Master Secondary Bus 层级:
将声音的 Output Bus 属性直接设置为二路输出层级中的总线。 这与其他声音路由的工作方式相同。对于通常只与一个二路输出相关联的声音,这是首选方法。例如,玩家发起的枪声,网球拍,PDA声音和玩法反馈等。
将声音输出至 Master Audio Bus 层级中的总线,并将 Game\User-Defined Auxiliary Send 发送到二路输出总线层级中。 如果希望相同的声音在多个输出和电视中都能同时听到,则推荐使用此方法。例如间谍相机和广播等。
总线层级只是混音时使用的层级结构。要将该混音结构与特定输出相关联,请在对应的 Master Bus 上选择相应的 Audio Device Shareset。
必须要注意的是,对于游戏中多个玩家可能同时使用的输出端(如游戏控制器、耳机等),相关混音层级结构会针对每个玩家进行复制。对于特定类型的输出,工程定义的仅仅是特定的混音“处方”。实际信号输出到该结构的哪个副本则取决于听者和游戏对象的关系,是由程序员设置的。以下示例对此进行了说明。
Secondary Bus 层级的所有示例都将使用以下所示的总线结构。Main Audio Bus 层级将被省略。对于每路输出,该结构都将被复制,因此最终的混音是独立的。请注意,只有所需的总线将被实例化。
这是进入主输出的一个声音的简单示例。在常规游戏中,很多声音将被连接至多个子总线。但为简单起见,让我们假设电视输出中仅播放一个声音。
这次让我们在第二个玩家的游戏控制器中播放另一个声音。这次以菜单声为例,假设该玩家在使用菜单,而其它玩家没有。在这种情况下,声音应该独立输出至其总线中,而不进入电视混音。事实上,通过设置游戏听者与游戏对象的关联,该声音将仅在玩家的 2 号控制器中播放。在这里,程序员播放该声音的游戏对象将仅会被控制器 2 的听者所听到。
该示例表明两点:声音可以连线至多个二路输出,并可以连线至电视混音。在本示例中,这可以是玩家 1 发出的预先录制好的无线电求助呼叫,该呼叫可以被玩家 2 听到,因为他们属于同一团队,呼叫声也可以出现在电视中,因为电视角度靠近玩家 2 发出的声音。请注意,该声音的输出总线被设置为总线 1。该总线为玩家 1 和玩家 2 按 Master Secondary Bus 原样进行复制。显然,玩家 2 听到的混音必须包含 Sound 2(只有其能听到该声音)及 Sound 1。Master Secondary Bus 的两个副本将应用相同的效果(如果有的话),但并非在同一音频信号上应用。
您还应注意到,声音 3 发出的 Send 进入电视混音。可以使用所有类型的 Send,以发送至其它输出。在本例中,由于呼叫也可被“摄影机”听到(根据距离和衰减),因此也需要进入主电视混音。该呼叫将从设定的辅助总线“进入”该混音。
通过 PS4、PS5、Xbox One 和 Xbox Series X 的 DVR 功能录制受版权保护的音乐通常是不允许的。这些平台提供有专门的虚拟设备来单独管理音乐并防止进行录音。在 Wwise 中,这也意味着需要在单独的层级中为音乐混音。我们在 Integration Demo 工程中实现了这个功能。您可以查看 NonRecordable_Bus,以及 RecordableMusic 和 NonRecordableMusic 声音的设置。代码方面可以查看 DemoBGM.cpp。
NonRecordableMusic(不可录制音乐)被输出到 Non Recordable Bus(不可录制总线),该总线将其信号输出到 DVR_Bypass 输出中,如下所示:
在代码方面,为实现该效果所需的处理非常简单。游戏必须使用 Audio Device ShareSet 名称调用 AK::SoundEngine::AddOutput()
来初始化输出。
在 Wwise 的 Advanced Profiler 中,我们可以看到每个声音都输出至单独的总线和输出。在支持的平台上一般都是如此。(注意,中间的音乐总线被省略了。)
在 Wwise 支持的其他平台上均没有 DVR 功能,所以我们要做一些不同处理。在这种情况下,如果不希望游戏音乐缺失,您必须正确地将其输出。您仅需正确地将音频设备 Unlink(取消链接),即可解决该问题。在 Master Bus 的 Property Editor 中,也允许将 Audio Device 属性取消链接. 在下面的示例中,我们将 Non Recordable Bus 输出至普通系统输出。不过对于支持的平台,其仍会输出到 DVR_Bypass。正因如此,Link(链接)图标才有一半是橙色的。这就是我们在 Integration Demo 工程中的处理方式。这种情况下,代码不需要调用 AK::SoundEngine::AddOutput
来初始化输出,因为系统输出总是在启动时初始化。
播放这两种声音时,我们看到两个音频源信号分别通过独立的总线,但是它们最终混合在同一个系统输出中。