Wwise SDK 2023.1.9
|
在 Wwise 中,二路输出(Secondary Output)指定常规 TV 音频输出之外的任何物理音频终端。The most common secondary outputs are headsets, game controller speakers, and haptic feedback for game controllers. Haptic feedback integration is described in detail in 集成 Wwise Motion. This topic focuses on audio outputs (headsets and controller speakers).
You can use secondary outputs to define separate mixes for each of these outputs without affecting the main speaker/TV mix. The same Wwise feature set applies to the secondary outputs as for the regular mix. The only difference is that the output targets controllers instead of the speaker/TV.
在设计端,需要创建新的主总线,以便为 Audio Device 定义不同的混音。然后,更改应用于新总线的 Audio Device ShareSet 属性,使其指向不同的设备。注意,若要使用第三方创建的 Audio Device 插件,则可能需要先创建对应插件类型的 Audio Device ShareSet。然后,才能将声音正常输出至新总线或其子总线。有关 Wwise 所支持 Audio Device 的信息,请参阅内置音频设备。
对于仅与一个二路输出绑定的声音,最好直接设置 Output Bus。这样的声音例子有:玩家发起的枪击、网球拍重击、PDA 音效、游戏反馈等。不过,您可以将 User Send 或 Game Send 应用于其他总线层级结构内的 Auxiliary Bus。若要将同一声音同时发送至多个输出和 TV(比如使用间谍相机或广播),则最好采用这一方法。
使用同一声源可在多个控制器和 TV 上同时播放同一声音。在设计方面,无需知道有多少玩家可能在玩此游戏。此总线层级结构将用作模版在为游戏中注册的各个输出布线时使用。因此各个输出上可能会施加不同的混音和效果,具体取决于播放的声源、游戏对象上活跃的 RTPC 和 Swtich(切换开关)值。请参见下面示例部分中有关这方面的示例。
在许多设备(例如 TV 和游戏控制器)上输出同一音频时,您也许会发现设备之间存在延迟。这是声音信号路径的硬件差异造成的,因此无法避免。在控制器方面,此信号可能必须通过无线信道传输,无线信道造成的延迟可能不同于有线控制器。对于 TV,信号离开主机后,将进入接收器或 TV,其处理器会造成一定程度的延时。由于各个系统的 AV 设置造成的延时各有不同,因此对分别传输到扬声器/TV 和游戏控制器的声音而言,无法保证两者之间的同步。在设计声音时,可能需要考虑这一限制。
若存在多个相同类型的输出(如游戏控制器扬声器),则必须对各个设备加以区分。之所以使用 Listener/GameObject
这一常规概念,是因为方便实现特定的听者/发声体通路。请参阅 了解听者 了解更多信息。游戏程序员要负责使用 AK::SoundEngine::AddOutput
将输出设备与听者关联起来。程序员必须使用 AK::SoundEngine::SetActiveListeners
来设置听者和游戏对象之间的关系。记住,若希望多个设备同时播放此声音,则可指定多个听者。
备注: 假如只有某一特定类型的输出(如 System、DVR),则无需设置多个听者。此时,Wwise 可使用工程中指定的通路。若为单人游戏,则对玩家专用输出(如 Game Controller Speaker 和 Communication)来说也是如此。也就是说,游戏中将只有一个激活的控制器。有关听者的详细信息,请参阅“ 集成 Listener ”。 |
备注: 在确定玩家与设备的关系时,只要系统连接或断开游戏控制器,游戏代码就要负责调用 AK::SoundEngine::AddOutput 和 AK::SoundEngine::RemoveOutput 。Wwise 可自动识别设备与听者之间的关系,从而确定玩家与设备的关系。系统设备(如主输出和 DVR)将由 Wwise 自动处理。 |
以下示例专为 PS4 编写,但可应用于所有其他平台。请检查 AK::SoundEngine::AddOutput
函数的文档。如需查看多输出管理的工作示例,请参阅“Integration Demo 示例 ”中的 DemoMotion 页面(多人设置)和 BGMDemo 页面(DVR/BGM 管理)。
备注: 为了方便阅读,这些示例省略了函数调用之前所需的 AK::SoundEngine 。 |
Code to get the UserIDs (PS4 example only. Refer to 默认 Wwise Audio Device for other platforms):
一个游戏控制器输出上的声音:
在两个不同控制器上播放同一声音:
在两个不同控制器上播放不同声音:
在游戏控制器输出和 TV 上播放同一声音:
以下例子阐述了如何在 Windows 上添加二路输出(即耳机):
备注: 在 Windows 上,所有设备均为 System 设备。之所以添加设备,是为了区分这些设备(详见“ 为多个输出设置设备、听者和游戏对象 ”)。添加二路输出,连接至之前所发现设备,与听者 #1 关联。所以,我们需要不同的听者。 |