|
Wwise SDK 2024.1.10
|
Wwiseサウンドエンジン統合の最初のステップは、ゲーム起動時にサウンドエンジンを構成する各種モジュールを適切に初期化することです。
このサンプルプロジェクトでは、サウンドエンジンの初期化に関する全ての操作を実行するために次の関数が定義されています:
これは、メイン関数の開始時に呼び出されます。初期化の必要な各種モジュールを見てみましょう:
まず始めに初期化しなければならないのは、Memory Manager(メモリマネージャ)です。次のコードにより、デフォルトのMemory Managerが作成されます:
![]() | 注釈: メモリマネージャはオーバーライドすることができますが、その場合は、上記のコードを必要に応じて適合させる必要があります。詳細は、メモリマネージャのオーバーライド を参照してください。 |
メモリマネージャに関する詳細は、メモリマネージャ を参照してください。
メモリマネージャの初期化が完了したら、今度は Streaming Manager(ストリーミングマネージャ)を初期化します。
次のコードにより、デフォルトのストリーミングマネージャが初期化されます。これには AK::StreamMgr::IAkFileLocationResolver のインスタンスが必要で、これによりストリーミングデバイスが作成されます。これには AK::StreamMgr::IAkLowLevelIOHook のインスタンスが必要です。このインターフェースは、SDK付属のデフォルトStream Manager実装に固有の全定義を含むAkStreamMgrModule.hで定義されます。
ディスクI/Oに関しては、デフォルトのストリームマネージャ実装を使用し、AkStreamMgrModule.h で定義されているインターフェースを実装するサウンドエンジン統合方法をお勧めします。これらのインターフェースは、低レベルI/Oサブモジュールを構成しています。詳細は、ストリーミング/ストリームマネージャ を参照してください。
この例は、サンプルCAkFilePackageLowLevelIODeferredをそのまま使用しています。このクラスは、 AK::StreamMgr::IAkFileLocationResolver インターフェースと AK::StreamMgr::IAkLowLevelIOHook インターフェースの両方を実装し、File Packagerユーティリティで生成されるファイルパッケージをロードできます(File Packagerの詳細と、File PackagerのLow-Level I/Oにおける動作については ファイルパッケージ低レベルI/Oの実装 および File Packager ユーティリティ をご参照ください)。
低レベルI/Oに関する詳細は、低レベル I/O を参照してください。
デフォルトストリームマネージャとストリーミングデバイスの初期設定に関する詳細は、Audiokinetic ストリームマネージャ初期化設定 を参照してください。
![]() | 注意: 初期設定の一部は、 AkThreadProperties のようにプラットフォーム固有のメンバ構造体を使用します。 |
デフォルトの低レベルI/Oの実装、または、完全なストリーミングマネージャをオーバーライドする場合、必要に応じてこのコードを適合させる必要があります。詳細は、ストリーミング/ストリームマネージャ を参照してください。
基本的なモジュールの初期化が終わったので、サウンドエンジンそのものを初期化する準備ができました:
サウンドエンジン初期化に関する詳細は、サウンドエンジン統合の詳細 を参照してください。
プロジェクトがインタラクティブミュージック(Interactive Music)機能を使用する場合、サウンドエンジンに続いてミュージックエンジンも初期化する必要があります。
あなたのプロジェクトにWwise Spatial Audioが使われる場合、サウンドエンジンに続いてSpatial Audioライブラリも初期化する必要があります。Spatial Audioの一般的な使い方については、 APIのセットアップ を参照してください。Spatial Audioで設定できる様々なパラメータを確認するには、 AkSpatialAudioInitSettings を参照してください。
![]() | 注釈: Spatial Audioを使うには、Spatial Audioモジュールとリンクする必要があります。 |
If you want to use Wwise Authoring to connect to your game and perform in-game mixing, profiling, and troubleshooting, you must initialize communications. We recommend that you do so because in-game mixing, profiling, and troubleshooting are powerful ways for sound designers to work on your game's audio efficiently.
To use communications, you need to link to the CommunicationCentral module.
To use CommunicationCentral on Windows, you must also link to the external Winsock 2 library (ws2_32.lib).
Communications are only available in the Debug and Profile sound engine configurations. They are not needed in the retail version of your game, so they are not part of the sound engine Release build. The following code uses the AK_OPTIMIZED symbol to omit communication-specific code from the release build.
これで、サウンドエンジンの全モジュール初期化が完了しました。次に、プラグイン(プラグイン統合例 を参照)を登録する必要があります。オーディオを処理するために、ゲームループ内に作成する必要のある呼び出しの詳細については、オーディオ処理実行の反復呼び出し作成 を参照してください。
一部のコンソールの通信ライブラリは、初期化/終了 呼び出しのバランスを適切に保たないため、 AK::Comm::Term の呼び出しにより、コンソール用の基本的な低レベル通信ライブラリを終了させます。これは、ゲームに対するの全てのTCP/IP通信を効果的に閉じます。終了後もゲーム側が通信ライブラリを有効に保つ必要がある場合は、( Ak::Comm:Init と一緒に使用される)AkCommSettingsに、システムライブラリを初期化するかどうかを決めるパラメータがあります。通信ライブラリ自体を初期化する場合、Wwiseサウンドエンジンに使用される以下のコードを確認してください。ゲームは、同様の動作をするはずです。
Windows ソケットの初期化:
終了:
AkCommSettings 構造体の AkCommSettings::ports メンバは、Wwiseオーサリングアプリケーションとサウンドエンジン間の通信に使用されるネットワークポートを表します。Wwise 通信が有効にされると、これらの全てのポートがゲーム側で開かれます。
ポート AkCommSettings::Ports::uDiscoveryBroadcast は、動的にすることができません(0に設定することができません)。オーサリングアプリケーションがこのポートを認識し、ネットワーク上でゲームを検出する必要があるからです。更に、ここで指定する値は、オーサリングアプリケーション内 Project Settings(プロジェクト設定)の Network タブで指定した値と同じでなければなりません。
![]() | Tip: チームがWwiseを使用して複数のゲームに取り組んでいる場合、ゲームごとに異なるディスカバリブロードキャストポートを使用することができます。Wwiseオーサリングアプリケーションの Remote Connections(リモート接続)ウインドウを開いた時に、現在開いている Wwise プロジェクトに対応するゲームのみが表示されます。このポートを変更する場合は、必ずオーサリングアプリケーションの Project Settings およびゲーム内で AK::Comm::Init() に渡す AkCommSettings 構造体の両方において変更を行うようにしてください。 |
構造体のもう1つのポートは動的(つまり「エフェメラル」)にすることができます。すなわち、固定ポートを使用する代わりに、オペレーティングシステムによって自動的にいずれかのポートが選択されるようにできます。
このポートはデフォルトで動的です。他のアプリケーションとの競合の可能性を最小限に抑えるために、動的に保つことをお勧めします。
ゲームの他のコンポーネントが使用するポートと競合する場合は、AK::Comm::Init()をコールする前にAkCommSettings構造体で変更してください。
![]() | 注釈: マルチプラットフォーム対応のゲームでは、AkCommSettings::Ports::uCommandに対し、プラットフォームごとに異なるポートを使用するのが有効です。 |
![]() | Tip: 動的/エフェメラルポートの詳細については、以下の記事を参照してください。 |
Wwise通信に関与するポートがもう1つありますが、このポートはオーサリングアプリケーションのみで開かれるので、AkCommSettings::Ports 構造体の一部ではありません。
このポートは、ネットワーク上で実行されているゲームを検出するために送信される Discovery Broadcast メッセージへの応答を受信するために、オーサリングアプリケーションによって使用されます。このポートは、デフォルトでは動的(0に設定)ですが、オーサリングアプリケーション内のProject Settingsから変更可能です。