目录

示例

以下是所有工程示例的列表,这些工程作为本 SDK 的一部分发布。

请参阅 目录结构 了解有关 SDK 中例程位置的更多信息。

Integration Demo

Integration Demo 示例 “Integration Demo” 是包含多个小型演示的应用程序,展示如何在游戏中集成各种 Wwise 功能。

它目前包含指示如何集成以下功能的演示:

有关 Integration Demo 的更多信息,请参阅 Integration Demo 示例

示例插件

以下源插件和效果器插件与 Wwise 一起安装,但它们作为例程也是本 SDK 的一部分。

Caution.gif
Caution: 如果您在此例程基础上开发您自己的插件,请确保参阅 WwiseObject元素 了解有关插件 ID 的重要信息。

源插件示例

正弦源插件示例

这一简单的源插件可以让音频设计师选择正弦波音的频率、增益和时长。

位置:“samples\Plugins\AkSineTone”

乐音生成器源插件示例

这一更加高级的源插件为音频设计师提供更大的控制权,用户可以添加使用不同波形、横跨预定义的频率范围、指定自定义包络,以及将频率随机化。

位置:“samples\Plugins\AkToneGenerator”

音频输入源插件

此插件可以让声音设计师使用来自外部源(例如网络流或连接到 PC 声卡的话筒)。

位置:“samples\Plugins\AkAudioInput”

请参阅 音频输入源插件 了解有关此插件的更多信息。

效果器插件示例

延迟效果器插件示例

这是一个简单的延迟效果。

位置:“samples\Plugins\AkDelay”

音频设备插件示例

音频设备插件示例

这是一个将音频连通到自定义声卡的简单音频设备插件。(仅限于 MAC 和 Windows)

位置:“samples\Plugins\AkSink”

游戏集成例程

AkCube 声音引擎集成工程示例

这是将 Wwise 声音引擎集成到开源第一人称射击游戏中的完整示例。如果您还没有下载安装的话,可以从 Audiokinetic 下载页面下载游戏和 Wwise 工程。有关更多帮助和信息,请联系支持人员。

声音引擎 DLL 示例

此 DLL 中组合了声音引擎的各个模块,并提供简单的初始化、终止等功能来简化集成过程。如果您选择把与声音引擎有关的所有库组合到一个 DLL 中来使用您的 Windows 版本游戏,则可以从此工程示例入手来开始创建 DLL。请参阅 AkCube 声音引擎集成工程示例 了解在游戏中如何使用此 DLL 的示例。

Note.gif
Note: 此工程使用了以下讨论的 默认底层 I/O 实现

位置:“samples\SoundEngine\Win32”

默认底层 I/O 实现

实现 Low-Level I/O(底层 I/O)接口(在 AkStreamMgrModule.h 中定义)是把 Wwise I/O 集成到游戏中的首选方法。SDK 提供 Low-Level I/O 的平台专用默认实现。请参阅 流播放/流管理器 了解 Wwise I/O 的概述 .

这些示例可按原样使用,也可抛砖引玉,用来实现您自己的底层 I/O 系统。集成 Wwise I/O 简单明了地解释了如何使用和为何要使用这些示例。

默认实现示例纵览 以更详细的语言描述默认底层 I/O 实现示例。

位置(通用):

  • "samples\SoundEngine\Common\AkFileLocationBase.h"
  • "samples\SoundEngine\Common\AkFileLocationBase.cpp"

位置(平台专用):

  • "samples\SoundEngine\{Platform name}\AkDefaultIOHookBlocking.h"
  • "samples\SoundEngine\{Platform name}\AkDefaultIOHookBlocking.cpp"
  • "samples\SoundEngine\{Platform name}\AkDefaultIOHookDeferred.h"
  • "samples\SoundEngine\{Platform name}\AkDefaultIOHookDeferred.cpp"

另外,可使用 CAkDefaultLowLevelIODispatcher 类来管理有多台设备的 I/O 系统。

位置(通用):

  • "samples\SoundEngine\Common\AkDefaultLowLevelIODispatcher.h"
  • "samples\SoundEngine\Common\AkDefaultLowLevelIODispatcher.cpp"

文件包底层 I/O 实现

此示例支持使用通过 File Packager 实用程序生成的文件包,增强了默认底层 I/O 实现(请参阅 File Packager 实用程序 )。请参阅 Low-Level I/O 了解底层 I/O 模块背后概念的解释。本节末尾提供了文件包底层 I/O 实现的功能说明(示例 File Package Low-Level I/O 实现纵览 )。

您可以通过在游戏中加入以下类和 Default Low-Level I/O 的代码,在游戏中直接使用文件包。您还可以编辑此实现和 File Packager 来加入您自己的游戏相关文件。如果您计划对游戏中的所有 I/O 使用 Audiokinetic 的 Stream Manager,这特别有用。或者,代码可视为一种概念验证,帮助您实现您自己的将文件 ID 映射到文件描述符的策略。

位置:

  • "samples\SoundEngine\Common\AkFilePackageLowLevelIO.h"
  • "samples\SoundEngine\Common\AkFilePackageLowLevelIO.inl"
  • "samples\SoundEngine\Common\AkFilePackage.h"
  • "samples\SoundEngine\Common\AkFilePackage.cpp"
  • "samples\SoundEngine\Common\AkFilePackageLUT.cpp"
  • "samples\SoundEngine\Common\AkFilePackageLUT.cpp"

CAkFilePackageLowLevelIO<> 是一个模板类,用来向底层 I/O 挂钩的平台专用默认实现添加服务。文件包底层 I/O 类的具体定义位于平台的文件夹中:

  • "samples\SoundEngine\{Platform name}\AkFilePackageLowLevelIOBlocking.h"
  • "samples\SoundEngine\{Platform name}\AkFilePackageLowLevelIODeferred.h"

File Packager 实用程序

File Packager 实用程序用于创建可结合上述文件包底层 I/O 使用的文件包(文件包底层 I/O 实现 )。它的可执行文件随 Wwise 一起安装,位于 Tools\ 子文件夹中。Wwise SDK 提供此实用程序的源代码,您可以改进这些源代码,也可以只用来参考查阅。

位置:"samples\Tools\FilePackager"

File Packager 将针对给定项目的给定平台把 Wwise 生成的所有文件即 SoundBank 和流播放音频文件连接起来,声音引擎在运行时会阅读这些文件。File Packager 一般在生成 SoundBank 后使用。它有用户界面,在此界面中,您可以编辑和保存包中文件的顺序。它还可以“生成模式”启动,在此模式下,将直接生成文件包底层 I/O 可以加载的文件包。请参阅 Wwise Help 了解有关 File Packager 的详情,包括其用法、其命令行参数以及指定在生成 SoundBank 过程结束时自动执行的命令行。本节的其它内容简短地介绍 File Packager 代码的类。

File Packager 采用 C# 编写。类 GenerateModeAppContext 以“生成模式”处理应用程序,EditModeForm 以“编辑模式”(UI)处理。分组到“Package Layout”文件夹中的类处理编辑模式 UI 的业务逻辑和布局的持续性。打包操作以 SoundBanksInfo.xml 文件的内容为基础(在“Info File”文件夹中的类的帮助下进行解析)。SoundBanksInfo.xml 文件按平台枚举项目的所有 SoundBank 和流播放音频文件(请参阅 SoundBanksInfo.xml 了解更多信息)。

应用程序调用 FilePackageGenerator::Generate() 执行文件打包,后者使用“File package header”文件夹中的类执行。以下是文件打包的步骤(SoundBanksInfo.xml 被称为 INFO 文件):

  • 解析 INFO 文件以查找项目的所有语言名称。创建自动生成语言 ID 的映射(LanguageMap 类)。
  • 为在 INFO 文件中找到的所有 SoundBank 创建一系列 IncludedFiles(FileLUT)。它首先按文件 ID 排序,然后按语言 ID 排序。
  • 为在 INFO 文件中找到所有流播放音频文件创建一系列 IncludedFiles(FileLUT)。它首先按文件 ID 排序,然后按语言 ID 排序。
  • 计算文件头总大小。
  • 根据加载的布局(如有的话)确定所含文件的顺序(FileOrganizer)。
  • 重新访问两个 LUT 的 IncludedFiles 以计算起始块,计算时考虑由于块大小所导致的必要填补(FileOrganizer)。
  • 在输出文件中写入整个文件头。
  • 复制参考文件,并附加在输出文件中,并补零。

显示生成过程和消息的 UI 窗体采用类 Progress(“UI”文件夹)实现。它听取 FilePackageGenerator 的进度通知。

请参阅 Wwise 帮助了解 File Packager 命令行参数的说明。

使用文件包

为了使用文件包(采用 File Packager 实用程序 或任何其它工具创建),您需要编写底层 I/O 代码来处理文件包。基本上它需要为包中所请求的文件的偏置指定正确的 AkFileDesc::uSector() 值。

类 CAkFilePackageLowLevelIO 提供用作例程。它是默认底层 I/O 的延伸,可按原样用于通过 File Packager 创建的文件包。您只需要初始化 CAkFilePackageLowLevelIO 即可,而无需初始化 CAkDefaultLowLevelIO。因此,在采取任何行动之前,您需要通过调用 CAkFilePackageLowLevelIO::LoadFilePackage() 显式地加载文件包。底层 I/O 将打开并解析文件包的头,创建它的查询表。它不会加载内存中的实际打包文件。因此,在每次 Stream Manager 调用 AK::StreamMgr::IAkFileLocationResolver::Open() 时,Wwise 都会在所有包中查找此文件。如果找不到,则调用默认实现。

在此示例中,搜索文件包的顺序与加载它们(使用 LoadFilePackage())的顺序相反。如果您使用文件包实现 DLC,您的游戏则应该先加载“基础”(默认)文件包,然后再加载 DLC 文件包。CAkFilePackageLowLevelIOOpen() 将因此先在 DLC 文件包中搜索。如果某个文件同时存在于 DLC 文件包和“基础”文件包中,将选用 DLC 文件包中的文件。

请参阅上文所述的 文件包底层 I/O 实现 中对此实现示例的简短描述。在此,您将发现其它文档相关部分的链接(例如底层 I/O 例程纵缆)。

CAkFilePackageLowLevelIO 和相关联的 File Packager 实用程序 代码可用来抛砖引玉,实现更复杂文件打包解决方案。

Copy Streamed Files 实用程序

Copy Streamed Files 实用程序可用于替代 File packager 或与它并行使用。它采用外部工具的形式实现,作为例程提供,便于您修改它或将它用作创建您自己工具的基础。它采用 C# 编写。

此工具可将流播放文件从项目的缓存中复制到 SoundBank 文件夹中。它的可执行文件随 Wwise 一起安装,位于 Tools 子文件夹中。如果您修改此工具,则请确保更新公司中运行 Wwise 的所有机器(程序员、声音设计师、编译机器……)中的可执行文件。

位置:"samples\Tools\CopyStreamedFiles"

SoundFrame 例程(已弃用)

使用 SoundFrame(已弃用) 中的解释,SoundFrame 可让您将 Wwise 连接到其它设计工具,例如 3D 应用程序和游戏编辑器。请参阅 使用 SoundFrame(已弃用) 了解更多信息。

SoundFrame 测试应用程序

这是演示 SoundFrame API 用途的简单应用程序。

位置:"samples\SoundFrame\SFTest"

版本控制例程

有关这些插件示例的详细信息,请参见 版本控制插件例程

基本版本控制插件示例

这是示例 DLL 工程,显示如何为 Wwise 创建版本控制插件。它不执行版本控制操作,但可用作开发此类插件的框架。

位置:"samples\SourceControl\SourceControlSample"

请参阅 基本版本控制插件示例 了解更多信息。

Perforce 版本控制插件示例

这是 Wwise 中默认包含的 Perforce 插件。它可以让您在 Wwise 设计工具中执行 Perforce 操作。其中包含完整的源代码,为您提供版本控制插件的完整示例。如果您愿意,它还可以让您自定义和增强此插件。

位置:"samples\SourceControl\Perforce"

请参阅 Perforce 版本控制插件示例 了解更多信息。

Subversion 版本控制插件示例

这是 Wwise 中默认包含 的 Subversion 插件。它可以让您在 Wwise 设计工具中执行 Subversion 操作。其中包含完整的源代码,为您提供版本控制插件的完整示例。如果您愿意,它还可以让您自定义和增强此插件。

Note.gif
Note: 此插件当前仅提供 32 位版本。

位置:"SDK\samples\SourceControl\Subversion"

请参阅 Subversion 版本控制插件示例 了解更多信息。

The Wwise Authoring API(Wwise创作API)

Wwise Authoring API (WAAPI)包括多个小演示,展示了如何用以下三种编程语言编写各种特性和功能:C++,JavaScript,和Python.

C++文件夹包含一个展示如何实现以下功能的演示:

  • SampleClient
    • 从命令行运行Wwise并且不使用用户界面打开一个Wwise版本。
    • 位置:“SDK”

JavaScript文件夹包含几个演示,展示了各种连接到Wwise的协议,比如:

  • HTTP POST
    • 位置:"SDK\samples\WwiseAuthoringAPI\js\hello-wwise-node-http"
  • WAMP
    • 位置:"SDK\samples\WwiseAuthoringAPI\js\hello-wwise-node-wamp"
  • Web WAMP
    • 位置:"SDK\samples\WwiseAuthoringAPI\js\hello-wwise-web-wamp"

除了提供简单连接的例子,JavaScript 文件夹也包含更多的动手实例,探索了通过 Wwise Authoring Protocol(Wwise设计协议)可用的不同功能:

  • Web 播放控制
    • web 播放控制允许从网页上启动命令。
    • 位置:"SDK\samples\WwiseAuthoringAPI\js\web-transport"
  • XY-pad
    • XY-pad 用来通过2D区域内单一移动点来同时更改两个游戏参数。
    • 位置:"SDK\samples\WwiseAuthoringAPI\js\xy-pad"
  • 选择
    • 选择的案例展示了怎样使用 Wwise Authoring API 的选择功能。
    • 位置:"SDK\samples\WwiseAuthoringAPI\js\xy-pad"

Python 文件夹包含了展示连接到 Wwise 所使用的不同协议:

  • HTTP POST
    • 位置:"SDK\samples\WwiseAuthoringAPI\python\hello-wwise-http"
  • WAMP
    • 位置:"SDK\samples\WwiseAuthoringAPI\python\hello-wwise-wamp"
参见: