Wwise SDK 2023.1.6
|
Integration Demo 应用程序包含一系列的演示,展示如何在游戏中集成声音引擎的各种功能。
![]() | 备注: 本节中展示的所有代码均可在 samples\IntegrationDemo\ 目录下的示例工程中找到。 |
此程序的 Wwise 工程也可在 samples\IntegrationDemo\WwiseProject
下找到。
![]() | 备注: 此程序的 Wwise 工程使用各种音频文件转码格式,某些格式可能不可用,具体取决于安装的 Wwise 支持的平台。在 Wwise 中打开工程后,您可能会看到诸如以下警告:
您可以将所有不可用平台的转码格式更改为 PCM,从而移除这些消息。有关详细信息,请参阅《Wwise 用户指南》中的以下主题:音频文件转码。 |
此工程的 SoundBank 也会与 SDK 一并安装到 samples\IntegrationDemo\WwiseProject\GeneratedSoundBanks
文件夹中。
要重新生成 SoundBank,请确保在 SoundBank Manager 中执行以下操作:
这些设置一旦正确,您可以在 SoundBank Manager 中单击 Generate 来生成 SoundBank。
Integration Demo 二进制文件可在 \[Debug|Profile|Release]\bin
目录下找到。如果您想自己重新构建此应用程序,则按照以下步骤执行:
samples\IntegrationDemo\Windows
中的解决方案,并使用所需配置进行构建。要运行 Integration Demo,只需启动在上述目录中找到的可执行文件即可。
samples/IntegrationDemo/Mac
中的 Xcode 工程,并使用所需配置进行构建。Mac/[Debug|Profile|Release]/bin
目录下的可执行文件即可。 samples/IntegrationDemo/iOS
, samples/IntegrationDemo/tvOS
or samples/IntegrationDemo/visionOS
and build using the desired configuration. samples\IntegrationDemo\WwiseProject
中的 Wwise 工程,并在默认路径下针对 Android 生成 SoundBank。samples\IntegrationDemo\Android
。samples\IntegrationDemo\Android\Android_[armeabi-v7a|arm64-v8a|x86|x86_x64]\[Debug|Profile|Release]\bin
。例如:samples\IntegrationDemo\Android\Android_armeabi-v7a\Debug\bin
。adb install IntegrationDemo.apk
。备选构建方法 – 采用 Android Studio:假如已安装 Android Studio,我们会提供一个用于编译和部署 Integration Demo 的 Gradle 工程。直接在 Android Studio 中打开 samples\IntegrationDemo\Android
目录,应该就可以构建并启动应用程序了。
![]() | 备注: 您将需要使用软件键盘或硬件键盘与 Integration Demo 进行互动。使用 W、A、S、D 键导航。使用 Enter 选择。使用空格键返回。 |
cd SDK/samples/IntegrationDemo/Linux
。IntegrationDemo_Linux.make
的 Makefile 和 针对 Linux 的专用信息 中记录的变量实施构建。make -f ./IntegrationDemo_Linux.make AK_LINUX_ARCH=x64 config=debug
。SDK/Linux_x[32|64]/[Debug|Profile|Release]/bin
目录下的可执行文件即可。 在 Windows 中,您可以使用键盘、连接的控制器或任何 DirectInput 兼容设备浏览 Integration Demo。
某些控件(例如切换控件和数字滑块)可让您修改数值。要修改数值,单击 LEFT 和 RIGHT 方向键或者游戏手柄上的 LEFT 和 RIGHT 按钮。
![]() | 技巧: 此应用程序有联机帮助功能!要访问帮助页面,按键盘上的 F1 键或者游戏手柄上的 START 按钮。 |
所有演示代码均可在 samples\IntegrationDemo\DemoPages
目录下找到。例如,您可以在该目录下的 DemoLocalization.h
和 DemoLocalization.cpp
文件中找到 Localization 演示代码。
![]() | 技巧: 有关每个演示的相关信息也可在 Integration Demo 应用程序联机帮助中找到。 |
此演示展示如何实现本地化音频。本地化的音频对象位于 SoundBank 生成目录的子目录下的相关语言 SoundBank 中。我们通过卸载当前 SoundBank,然后加载期望的特定语言的 SoundBank 来达到本地化效果。
使用 Language 切换控件切换当前语言。然后按 Say Hello 按钮试听选定语言的问候。
有关语言和本地化的更多信息,请参阅 集成详情——语言与语音 。
Dynamic Dialogue 演示运行一系列使用 Wwise Dynamic Dialogue 功能的测试。每项测试演示不同的控制流程,以便您可以试听它产生的效果:
有关动态对白的更多信息,请参阅 集成详情——动态对白
此演示展示如何使用 RTPC。RPM 数字滑块链接到与发动机相关联的 RTPC 值(RPM)。按下 Start Engine 按钮,以启动/停止汽车发动机音频。使用 RPM 滑块更改 RTPC 值并试听效果。
有关 RTPC 的更多信息,请参阅 集成详情——RTPC 。
此演示展示在游戏中实现脚步声的各种方式。它还展示了基于表面类型驱动的 SoundBank 管理,以最大限度地降低当某个表面类型不用时的媒体和元数据内存占用。最后,此演示还展示了一个非常简单的环境效果器示例。
在本例中,脚步声由 2 个变量修改:行走速度和行走者体重。
对于每种表面,我们展示了处理声音样本和变量的不同方式。它们只是一些您可以在自己的结构中使用的建议和想法。
音频包管理: 在 Footsteps 演示中,音频包分为四个媒体音频包(每种表面各一个)。我们将屏幕一分为四,每种表面之间有一个缓冲区,在该缓冲区内要加载两个媒体 SoundBank。其目的在于避免加载媒体 SoundBank 时导致脚步声中存在间隙。在 SoundBank 管理器中,查看 GameSync 选项卡。注意,每个表面 SoundBank 仅包含相应的表面 Switch。这仅包括与该 SoundBank 中的切换开关相关的层级结构,与其它的无关。在大型游戏中,这一设置有限制特定场景中用不上的样本数量,从而限制内存占用的优势。对于基于关卡或分区的游戏,识别所用的表面非常容易,因为在设计阶段就已经知道了。对于开放世界式游戏,这更为棘手,很大程度上取决于游戏的组织,但仍可以实现。例如,如果玩家目前位于一个温暖的城市,在长时间内不会移到寒冷的环境,那么在内存中保留“冰雪”表面声音则没有任何用处。
此演示展示如何设置回调函数以在点击声音文件内部的标记时接收通知。对于此演示,我们使用标记来对字幕和音频轨进行同步。
有关标记的更多信息,请参阅 集成 Marker 。
此演示展示一般如何使用音乐回调。节拍和小节通知从音乐节拍和拍号信息中生成。
此示例强制随机播放列表按顺序选择下一项目。播放列表项目也可通过回调来阻止。
展示在回调期间游戏可收到的 MIDI 消息。MIDI 消息包括 MIDI 音符、CC 值、弯音、触后和程序变化。
有产在音乐回调的更多信息,请参阅 集成详情——音乐回调 。
此示例使用音乐切换容器。尝试切换 State,方法是触发在演示页面中所列的 Event。切换状态可能产生立即结果,或者在音乐容器规则中指定的时间发生状态切换。
本例展示了如何使用 MIDI API。按下 Start Metronome 按钮,以模拟生效的节拍器。然后,选择 BPM 滑杆并按下 LEFT 或 RIGHT,以更改该值。该演示将使用注册的回调函数,并通过 PostMIDIOnEvent
函数将 MIDI Event 发布至声音引擎。
本例展示了 Xbox One 和 PS4 相关 DVR 法律要求的应对措施。由于很多游戏中的音乐都受版权保护,所以一般不允许使用内置 DVR 进行录制。此演示展示了使用和不使用 DVR 录制的声音之间的差异。请参阅 Wwise Project 并检查 BGMDemo 文件夹中的声音设置,同时注意其通路及所用 Audio Device。Non-Recordable 声音将被发送到输出至 DVR_Bypass 输出的总线。
这些演示展示了如何在 Wwise 中以各种方式进行 3D 定位。
在进入页面时,即开始播放直升机声。使用以下按键沿 X 和 Z 方向移动 o(屏幕平面):
此演示仅设有一个位置。
此演示设有两个位置。
此演示展示了仅用在总线层级结构中的定位。在 Position + Orientation 3D Spatialization 和 Attenuation 仅应用于总线时,声音引擎在 3 个子声音混合在一起后才会应用空间化。
此演示展示了可移动发声体和听者之间的交互作用。在 Room 内设有 Portal 时,清晰展示了:
3D 总线首先应用混响效果器,接着对输出进行定位和空间化,然后在 Master Audio Bus 中混音。
此演示展示在设有 Portal 的两个不同 Room 内,可移动发声体和听者之间的交互作用。根据游戏对象的位置,当 Room 离发声体够近时发声体输出声音将会激活该 Room 的声学效果。
3D 总线首先应用混响效果器,接着对输出进行定位和空间化,然后在 Master Audio Bus 中混音。
These demos show various ways to use Spatial Audio to model sound propagation across Rooms, Portals, and Geometry.
Each demo page includes a movable emitter and a movable listener. You can offset the listener from a Distance Probe to simulate a third-person listening experience.
This demo shows the effect of Portals in Spatial Audio positioning. There are two Rooms with Portals and visible sound propagation paths. The resulting diffraction and transmission amounts are displayed in the lower-left corner. Same-room obstruction (emitter-listener and portal-listener) is calculated through a combination of Portal-driven propagation and a native game-side obstruction algorithm. Game object spread is calculated for the emitter with its set radial value. Finally, this demo shows how to use a Room to play multi-channel ambient sounds / room tones that contract and become point sources at portals.
This demo shows the effect of Portals in conjunction with the Spatial Audio Geometry API. There are two Rooms with Portals, Geometry for the wall inside and outside of the Room, an obstacle and visible sound propagation paths. The resulting diffraction and transmission amounts are displayed in the lower-left corner. Spatial Audio is set up so that diffraction/transmission controls both project-wide obstruction and the built-in diffraction/transmission parameter, although only the former is used in the Wwise project. Spatial Audio handles diffraction and transmission using Portals and Geometry respectively. The demo does not compute additional obstruction and occlusion.
This demo showcases the Wwise Spatial Audio Geometry API, usable for direct (dry) path diffraction and transmission. There are two walls and visible diffraction paths. The resulting diffraction and transmission amounts are displayed in the lower-left corner. Spatial Audio is set up so that diffraction/transmission controls both project-wide obstruction and the built-in diffraction/transmission parameter, although only the former is used in the project.
This demo showcases the Wwise Reflect plug-in using the Geometry API to simulate early reflection. There is a room and a separate wall, defined by Spatial Audio Geometry, and visible reflection paths. Spatial Audio is set up with a reflection order displayed in the lower-left corner. Additionally, Spatial Audio allows reflection paths to diffract. The room Geometry in this demo can change texture and be scaled in size demonstrating the adaptability of the Geometry API.
This demo showcases the Reflect plug-in within the context of Rooms and Portals. There are five Rooms, connected by Portals that can be toggled open or closed, some additional walls defined by Spatial Audio Geometry, and visible reflection paths.
This demo demonstrates the use of a Reverb Zone to create a space that has its own reverb effect and transitions into the outside Room without the use of Portals. There is a Room with a Portal that connects to a Reverb Zone, forming something like a covered balcony. The Reverb Zone's parent is the outdoor Room. There is also Geometry outside to show how paths can diffract around geometry, pass through the transparent surfaces of the Reverb Zone, and then continue through portals.
This page shows how to use the PrepareBank and PrepareEvent API functions.
When the page is loaded, a PrepareBank operation loads the lightweight structure and event data referenced by this demo, without loading any actual media into memory. When the user moves the cursor to an area button, a PrepareEvent operation loads the corresponding media file (a .wem file on disk) into memory in anticipation of a future PostEvent. When the user finally enters the area, the event is posted and the media is ready to play.
此演示展示如何使用外部源。两个按钮播放同一声音结构,但在运行时使用源“1”、“2”和“3”或源“4”、“5”和“6”设置。
另外,外部源在文件包装程序中打包,并在打开演示页面时加载。请参阅 Wwise Help 了解有关 File Packager 的更多信息,并参阅 流播放/流管理器 一章了解有关文件包运行时情况的更多详情。
This demo demonstrates the pros and cons of automatic event bank generation. When this option is selected in the Project Settings, Wwise generates individual banks for any events that are not contained in manually created banks. However, these auto-banks do not contain any media, only structure and event data. To load media associated with these events, the game must call either AK::SoundEngine::PrepareEvent or AK::SoundEngine::SetMedia.
此演示展示如何记录来自话筒的音频以及在 Wwise 声音引擎中输入该音频。在 Integration Demo 中,选择 Microphone Demo 并对着话筒讲话,以试听从 Wwise 声音引擎播放出来的声音效果。切换 Enable Delay 以试听如何像 Wwise 中创建的其他声音一样处理被馈送到 Audio Input 插件的音频数据。
每个平台用来访问话筒的核心 API 大不相同。检查 Integration Demo 代码中的 SoundInput
和 SoundInputMgr
类以查看它们如何与 AudioInput 插件互动。
![]() | 备注: This demo is available on the following platforms: Windows, macOS, iOS, and tvOS. |
这是多人游戏演示,展示如何将 Wwise 的振动引擎集成到游戏中。
在此演示中,每个玩家可选择是关闭房门还是使用他们手中所持的枪支开枪。靠近门这个游戏对象的每个玩家和玩家自己的枪支都设有听者。通过这种方法,当任何玩家关门时,所有玩家都会收到强制反馈反应。然而,只有开枪的玩家才会收到该事件的强制反馈。另外,在 PS4 和 PS5 上,将只在各个玩家对应的手柄扬声器中播放枪声。
![]() | 备注: 在 Windows 上,对于使用键盘的玩家,应插入手柄来参与此演示。 |
此代码展示了如何使用二路输出、Wwise Motion 以及 Listener/Emitter 管理。
此页面允许查看声音引擎的多项初始化设置。除此之外,您还可以为整个应用程序选择音频输出。示例代码将展示如何初始化和终止声音引擎,以及如何选择不同的物理音频输出。有关声音引擎初始化的更多详细信息,请参阅下面的对应章节。
Integration Demo 及其 Wwise 工程做得非常简洁,其目的是演示声音引擎集成的基础知识。有关更加逼真的集成工程,请参阅 AkCube 声音引擎集成工程示例 。