版本
menu_open
警告:系统已根据您所用大版本 (2019.2.15.7667) 自动跳转至最新文档。若想访问特定版本的文档,请从 Audiokinetic Launcher 下载离线文档,并在 Wwise 设计程序中勾选 Offline Documentation 选项。
Wwise SDK 2019.2.15
示例

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

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

Integration Demo

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

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

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

示例插件

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

注意: 如果您在此例程基础上开发您自己的插件,请确保参阅 EffectPlugin和SourcePlugin元素 了解有关插件 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 的示例。

备注: 此工程使用了以下讨论的 默认底层 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 文件包。CAkFilePackageLowLevelIO::Open() 将因此先在 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 操作。其中包含完整的源代码,为您提供版本控制插件的完整示例。如果您愿意,它还可以让您自定义和增强此插件。

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

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

The Wwise Authoring API(Wwise创作API)


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

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

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

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"
参见

此页面对您是否有帮助?

需要技术支持?

仍有疑问?或者问题?需要更多信息?欢迎联系我们,我们可以提供帮助!

查看我们的“技术支持”页面

介绍一下自己的项目。我们会竭力为您提供帮助。

来注册自己的项目,我们帮您快速入门,不带任何附加条件!

开始 Wwise 之旅