オーディオのメモリ使用量を最適化する

次のセクションでは、ゲームのランタイムのオーディオのメモリ要件をできるだけ低くするための戦略について説明します。どの手法を選択するかは、作成するゲームの種類、ゲームで使用するサウンドの量、ターゲットとするプラットフォームなどの多くの要因に依存します。

Wwise ヘルプ」の Wwise エンジン内のメモリ管理に関するトピックも参照してください。

また、ゲームでのメモリ消費の監視に関するヒント、およびその他の領域のランタイムのメモリ使用量の削減に関するアイデアについては、「メモリ使用量を最適化する」も参照してください。

Wwise プロファイラを使用してオーディオの使用を監視する

Wwise エディタには組み込みプロファイリングおよび監視システムが含まれており、Stingray エンジンが提供する共有メモリ監視ツールよりも詳細なレベルで、ゲームでのオーディオ クリップのロードおよび使用状況を追跡することができます。

プロファイリングを開始するには:

  1. ローカル PC または接続されている別のプラットフォーム上で、Stingray Editor から Stingray プロジェクトを実行します。

  2. Wwise のメイン メニューから Layouts > Profiler を選択します。

  3. ツールバーで、Remote... をクリックします。リストに表示されている場合は、ゲームを実行するホストを選択して、Connect をクリックします。ゲームのホストが表示されていない場合は、Refresh をクリックしてみるか、Connect to IP... をクリックして、IP アドレスを指定します。

Wwise エンジンによって使用されるメモリの概要を取得するには、Memory タブを選択します。

Wwise プロファイリングは、最終リリース バージョンではなく、ゲームのデバッグ ビルドおよび開発ビルドでのみ使用できます。

Wwise ドキュメントの「プロファイリング」および「メモリ統計情報」も参照してください。

複数のサウンド バンクを使用する

ゲームでリソース パッケージをロードおよびロード解除するシステムが設定済みの場合、Wwise で複数の異なるサウンド バンク(またはオーディオ クリップ セット)を作成し、異なる Stingray リソース パッケージ内にそれらの異なるサウンド バンクをリストすることで、メモリの使用量を削減できます。これにより、特定の時間にゲームで実際に必要なサウンドのセットのみをメモリにロードすることができます。

たとえば、各レベルで異なるリソース パッケージを使用するようにゲームを設定する場合、そのレベルに必要なサウンドのみが含まれているサウンド バンクを各レベルに作成することもできます。次に、そのレベルのリソース パッケージに各レベルのバンクを追加します。

あるいは、ゲームで多数のサウンドを使用している場合は、より詳細なバンクとリソース パッケージを作成することもできます。たとえば、ゲームに種類の異なるたくさんの武器モデルがあり、それぞれに独自のサウンド効果が設定されている場合に、それぞれのオーディオ クリップ用に個別のサウンド バンクと個別のリソース パッケージを作成することができます。その後、ゲームプレイ コードで、プレイヤーが新しい武器を選択するたびに、新しいリソース パッケージ(対応するサウンド バンクとともに)でストリーミングするように設定できます。

ゲームをローカライズする場合、特定のキャラクタまたはレベルのナレーションと台詞のトラックは、そのキャラクタまたはレベルで使用するその他のサウンド効果とは別に、個別のバンクとパッケージに格納することを推奨します。

Stingray リソース パッケージの使用に関する詳細については、「ランタイムでコンテンツをロードおよびロード解除する」を参照してください。

クリップを圧縮およびダウンサンプリングする

Wwise でサウンド バンクを作成すると、プロジェクト内の各オーディオ クリップは、各ターゲット プラットフォームに合わせてフォーマットが変換されます。それぞれのプラットフォームで、各クリップに使用する変換設定を変更できます。

Wwise ではプリセットに変換設定が保存され、Conversion Settings Editor ウィンドウで編集できます。既定では、新しい Stingray プロジェクトを作成すると、対応する Wwise プロジェクトはすべてのクリップに次の既定の設定を適用して作成されます。

この変換中にメモリを節約するには、チャネル(つまり、ステレオ トラックからモノラルへ)の数を減らす、サンプリング レートを低くする、適用する圧縮のフォーマットと品質を変更する方法などを利用できます。これらはすべて結果のクリップのサウンド品質に影響を与えるため、これらの設定を大幅に変更することのないように注意する必要があります。

プロジェクト内のすべてのクリップに使用する既定のプリセットを設定するには:

特定のクリップまたはコンテナの変換設定を管理するには:

詳細については、Wwise のドキュメントの「プラットフォーム全体のオーサリング」を参照してください。

オーディオ クリップをストリーミングする

Wwise エンジンでは、クリップ全体をメモリにロードする代わりに、データをディスクから直接読み取ってクリップを再生することができます。これにより、ファイルのロードに使用されるメモリを節約できますが、データをディスクから取得する際にいくらかの遅延が発生します。

この方法は、長いオーディオ クリップに対して特に効果的で、メモリを大幅に節約できます。遅延の可能性があるため、シューティングなどのゲーム イベントと同期してトリガする必要がある激しい攻撃のサウンドには、一般的に適していません。

さらに、ゲームで DVD のような時間のかかるデータ ソースから読み込んでいる場合は、遅延時間が長くなることに注意してください。サウンド ファイルの「事前ロード」部分によって遅延を相殺することができますが、これによって節約できるメモリ量が少なくなり、ディスクの遅延が事前ロード バッファよりも長い場合は、サウンドのドロップ アウトが発生する場合があります。

クリップのストリーミングを有効にするには、WWise の Project Explorer でクリップを選択します。Property EditorGeneral Settings タブで Stream のチェックボックスをオンにします。

Wwise ドキュメントも参照してください。

Wwise エンジン設定を最適化する

Wwise エンジンは、ゲームの過程で使用する複数のメモリ プールを保有します。既定で、Stingray は非常に複雑なオーディオのニーズがあるゲームに適切に対応できるように、これらのエンジン プールにかなり大きい値を使用して Wwise を初期化します。ゲームのニーズがそれほど厳しくない場合は、これらのプールのサイズを調整できます。

これらの設定は、Stingray ゲームの settings.ini ファイルに公開されます。

このファイルで公開される Wwise エンジン設定のリストについては、「Stingray エンジンの settings.ini ファイルのリファレンス」を参照してください。また、Wwise ドキュメント内の「メモリ使用量を低減するためのヒント」も参照してください。

サウンドの設計手法

ゲームでのサウンドの使用をどのように設計するかによって、その設計を実現するためにゲームで必要となるメモリ量は大きく変わります。

役に立つアドバイスとしては、長いオーディオ クリップを事前に録音してメモリにロードするのではなく、ランタイムでゲーム内で短いクリップを動的に組み合わせて、長いサウンドを構築するということです。これを実行するには、アクター/ミキサー階層で作成するランダム、シーケンス、ブレンド、およびスイッチなどのコンテナから動的にサウンドを選択するという、Wwise が提供するオプションのメリットを活用できます。

たとえば、都市の環境サウンドが必要な場合に、数分の長さの単一クリップを複数録音してループすることができます。しかし、さらに短いクリップを複数録音して、ランダムなシーケンスで再生し、サウンド間をクロスフェードするように設定することで、同様の効果を実現できます。これによって、永続的に変化するシームレスな環境サウンドが作成されます。

同様に、これらのコンテナを使用して、小さなサンプルのライブラリから、異なる種類の武器サウンドをアセンブルすることができます。たとえば、さまざまな種類のマシンガンのシューティング音は、単一のシューティング音の小さいクリップを組み合わせ、シューティング音の間に異なる遅延を設定し、異なる武器で跳ね返りや再装弾の音を共有することによって作成できます。