目次

サンプル

以下は、このSDKの一部として提供される全サンプルプロジェクトのリストです。

SDK 内のサンプルコードの場所に関する詳細は、 ディレクトリ構造 を参照してください。

Integration Demo (インテグレーションデモ)

Integration Demoは、様々な Wwise 機能のゲームへの統合法を示す複数の小さなデモを含んだアプリケーションです。

現在、以下を実装する方法を示すデモが含まれています:

インテグレーションデモの詳細については 、 Integration Demoサンプル を参照してください。

サンプルプラグイン

以下のソースプラグインとエフェクトプラグインは、Wwise と一緒にインストールされますが、これらはまたサンプルコードとして、この SDK の一部も成しています。

Caution.gif
Caution: このサンプルコードを基にしてプラグインを作成する場合は、WwiseObject 要素 を参照して、プラグイン ID に関する重要な情報を確認してください。

サンプルソースプラグイン

サインサンプルソースプラグイン

このサンプルソースプラグインによって、Wwise ユーザーは周波数、ゲインおよびサイントーンの持続期間を選択することができます。

場所:"samples\Plugins\AkSineTone"

トーンジェネレータサンプルソースプラグイン

この高度なソースプラグインによって、様々な波形の使用、定義済み周波数範囲にわたる掃引、カスタムエンベロープの指定、周波数のランダム化追加などが可能になり、Wwiseユーザーは更なる制御力を得ることができます。

場所:"samples\Plugins\AkToneGenerator"

オーディオインプットソースプラグイン

このプラグインによって、サウンドデザイナーは、例えば、ネットワークストリームや PC のサウンドカードに接続されたマイクなど、外部ソースからのオーディオを使用することができます。

場所:"samples\Plugins\AkAudioInput"

このプラグインに関する詳細は、オーディオ入力ソースプラグイン を参照してください。

サンプルエフェクトプラグイン

ディレイサンプルエフェクトプラグイン

単純なディレイエフェクトです。

場所:"samples\Plugins\AkDelay"

サンプル オーディオデバイス プラグイン

サンブル オーディオ デバイス プラグイン

これはオーディオをカスタムのサウンドカードにルートする、シンプルなオーデイォデバイスプラグインです (MAC ならびに Windows のみ)。

場所:"samples\Plugins\AkSink"

ゲームインテグレーションサンプルコード

AkCube サウンドエンジン統合サンプルプロジェクト

オープンソースの一人称シューティングゲームに Wwise サウンドエンジンを完全に統合したものです。Audiokinetic のダウンロードページから、このゲームと Wwise プロジェクトをダウンロードすることができます。これに関する、更なる支援や詳細については、サポートまでご連絡ください。

サウンドエンジンサンプル DLL

この DLL は、サウンドエンジンの様々なモジュールを組み合わせて、初期化や終了などのためのシンプルな機能を提供し、統合を簡素化します。すべてのサウンドエンジン関連ライブラリを単一の DLL に組み合わせ、ゲームの Windows バージョンで使用する場合、このサンプルプロジェクトから開始し、そのDLLを作成することができます。このDLLのゲーム内での使用方法については、AkCube サウンドエンジン統合サンプルプロジェクト を参照してください。

Note.gif
Note: このプロジェクトは、以下で説明されている デフォルト低レベル I/O の実装 を使用しています。

場所:"samples\SoundEngine\Win32"

デフォルト低レベル I/O の実装

(AkStreamMgrModule.h で定義されている)低レベルI/Oインターフェースの実装は、Wwise I/O をゲームに統合するための望ましい方法です。SDK は、デフォルトのプラットフォーム固有低レベル 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"

また、複数デバイスで I/O システムを管理するには、CAkDefaultLowLevelIODispatcher クラスを使用します。

場所(共通):

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

ファイルパッケージ低レベルI/Oの実装

このサンプルは、File Packager(ファイルパッケージャ)ユーティリティ(File Packager ユーティリティ 参照)で生成されたファイルパッケージの使用をサポートすることにより、デフォルトの低レベル I/O 実装を強化します。低レベル I/O モジュールの背景にある概念に関する解説は、低レベル I/O を参照してください。このセクションの最後に、File Package Low-Level I/O(ファイルパッケージ低レベルI/O)実装の機能に関する説明があります(サンプルファイルパッケージ 低レベルI/O 実装チュートリアル)。

以下のクラスを、デフォルト低レベル 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 ユーティリティ

ファイルパッケージャユーティリティは、上述のファイルパッケージ低レベル I/O(ファイルパッケージ低レベルI/Oの実装)で使用できるファイルパッケージを作成するためのものです。その実行可能ファイルは、Wwise と一緒に Tools\ subfolder にインストールされます。Wwise SDK は、強化したり単に参照することのできるこのユーティリティのソースコードを提供しています。

場所:"samples\Tools\FilePackager"

ファイルパッケージャは、Wwise に生成されるすべてのファイルを、該当プロジェクトの特定のプラットフォーム用に連結します。これらのファイルは、ランタイム時にサウンドエンジンに読み取られるバンクとストリーミングオーディオファイルです。ファイルパッケージャには、ユーザーインターフェースがあり、そこでパッケージの順序などを編集して保存することができます。また、ファイルパッケージャを "generate mode(生成モード)" で起動し、File Package Low-Level I/O でロード可能なファイルパッケージを直接生成することも可能です。ファイルパッケージャとそのコマンドライン引数の使用法と、サウンドバンク生成プロセス終了時に自動的に実行されるコマンドラインの指定法に関する詳細は、Wwise Help を参照してください。このセクションの残りの部分では、ファイルパッケージャコードのクラスを簡単に見て行きます。

ファイルパッケージは、C#で書かれています。GenerateModeAppContext クラスは、アプリケーションを "generate mode(生成モード)" で処理し、EditModeForm は、"edit mode(編集モード)" (UI)で処理します。"Package Layout" フォルダ内にグループ化されているクラスは、編集モードUIのビジネスロジックとレイアウト持続性を処理します。パッケージングは、("Info File" フォルダ内のクラスの支援により解析される)SoundBanksInfo.xml ファイルのコンテンツに基づきます。SoundBanksInfo.xml ファイルは、プロジェクト内のプラットフォームごとのすべてのバンクとストリーミングオーディオファイルを列挙します(詳細は、SoundBanksInfo.xml を参照してください)。

アプリケーションは、"File package header" フォルダにあるクラスを使用してファイルパッケージングを実行するために、FilePackageGeneratorGenerate() を呼び出します。(SoundBanksInfo.xml を INFOファイルと呼びます):

  • プロジェクトの全言語名を探すためにINFOファイルが解析されます。自動生成の言語IDマップが構築されます(LanguageMap クラス)
  • INFO ファイル (FileLUT)内で検知された全てのサウンドバンクに対して、IncludedFiles のアレイが構築されます。このアレイは、まずファイルID、続いて言語IDでソートされます。
  • INFO ファイル (FileLUT)内で検知された全てのストリーミングファイルに対して、IncludedFiles のアレイが構築されます。このアレイは、まずファイルID、続いて言語IDでソートされます。
  • 全ヘッダサイズが計算されます。
  • ロードされたレイアウトがあればこれに基づきインクルードファイルの順序が決定されます (FileOrganizer)。
  • スターティングブロックを計算するために、ブロックサイズが原因で必要とされるパディングを考慮して、両LUTの IncludedFiles が再検査されます (FileOrganizer)。
  • ヘッダ全体が出力ファイルに書き込まれます。
  • 適切なゼロパディングで、参照ファイルがコピーされ出力ファイルに追加されます。

生成の進行状況とメッセージを表示するUIフォームが Progress クラス("UI"フォルダ)に実装されます。これは、FilePackageGenerator の進行通知をリッスンします。

ファイルパッケージャのコマンドライン引数については、Wwise Help を参照してください。

ファイルパッケージの使用法

ファイルパッケージを使用するには (File Packager ユーティリティ またはその他のツールで作成)、ファイルパッケージを扱うための、低レベル I/O コードを書く必要があります。基本的には、適切な AkFileDesc::uSector() 値でパッケージで要求されたファイルのオフセットを特定します。

CAkFilePackageLowLevelIO クラスを同じコードとして提供します。これによりデフォルト低レベルI/Oを拡張し、ファイルパッケージャーで作成したファイルパッケージと共にそのまま使用できます。ただ、CAkDefaultLowLevelIOの代わりにCAkFilePackageLowLevelIOのインスタンスを生成する必要があります。そして何かをする前に、CAkFilePackageLowLevelIOLoadFilePackage()で呼び出して、ファイルパッケージを明示して読み込む必要があります。低レベルI/Oは、ファイルパッケージのヘッダーを開いてパースし、そのルックアップテーブルを構築します。メモリには、実際のパッケージされたファイルが読み込みません。よって、Stream Managerが、AKStreamMgr::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 の代わりに、または、File packager と一緒に使用することができます。これは、サンプルコードの形で提供される外部ツールとして実装されており、独自ツールのベースとして変更および使用が可能です。このユーティリティは、C#で書かれています。

このツールは、ストリーミングファイルをプロジェクトのキャッシュからSoundBanksフォルダにコピーします。その実行可能ファイルは、Wwise と一緒に Tools subfolder にインストールされます。このツールに変更を加える場合は、Wwiseを実行している社内の全マシン(開発者やサウンドデザイナーのマシン、ビルドマシンなど)上の実行可能ファイルを更新してください。

場所: "samples\Tools\CopyStreamedFiles"

SoundFrame サンプルコード(非推奨です)

SoundFrame の使用(非推奨です) で説明されているように、SoundFrame で Wwise を 3Dアプリケーションやゲームエディタなど他のオーサリングツールに接続することができます。詳細は、SoundFrame の使用(非推奨です) を参照してください。

SoundFrameテストアプリケーション

SoundFrame APIの使用法を示すサンプルアプリケーションです。

場所:"samples\SoundFrame\SFTest"

ソース管理サンプルコード

これらのサンプルプラグインに関する詳細は、ソース管理プラグインサンプルコード からご覧いただけます。

ベーシックソース管理プラグイン

Wwise のソース管理プラグイン作成方法を示すサンプル DLL プロジェクトです。これは、ソース管理操作を実行しませんが、このタイプのプラグイン開発のフレームワークとして機能します。

場所: "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 Authoring API(WAAPI)には、C++、JavaScript、Pythonの3つのプログラミング言語にさまざまな機能を使用する方法を示す、多数の小さなデモンストレーションが含まれています。

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を使用して利用可能なさまざまな機能を探索する実践的な例がいくつか含まれています。

  • Web トランスポート
    • Webトランスポートは、Webページからコマンドを起動できるようにします。
    • 場所:"SDK\samples\WwiseAuthoringAPI\js\web-transport"
  • XY-pad
    • XYパッドは、2次元の領域内で同時に2つのゲームパラメータを変更することを可能にします。
    • 場所:"SDK\samples\WwiseAuthoringAPI\js\xy-pad"
  • selection
    • 選択サンプルは、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"
参照: