Wwiseに完備されたプロファイリング、トラブルシューティング、そしてデバッグの各種ツールは、このソフトが有力なゲームオーディオ専用ミドルウェアである理由の1つといえます。これらの機能を使いこなせれば、その高い品質が実感できるでしょう。
今回は、Profilerレイアウト、Game Object Profilerレイアウト、そしてSchematic Viewの3つの画面を効率的に活用する方法や、ゲームオーディオのトラブルシューティングやデバッグ段階で利用できるその他の使いやすいツールを紹介します。
Profilerレイアウト
プロファイリングの作業に取り掛かる際に最初に思い当たるのが、Layoutの1つであるProfilerレイアウトでしょう。このレイアウトは、Capture Log、Performance Monitor、Advanced Profilerの3つのビューに分かれています。パフォーマンス状況、メモリ消費、そしてサウンドエンジン側の全アクティビティをモニタリングして記録するのが目的です。
ここでSoundcaster Sessionを開始すれば、サウンドをゲームに実装する前からローカルでプロファイリングできます。つまり、オーディオクリエイターはゲームの実行可能なビルドが完成する前からオーディオシステムをプロファイリングしてデバッグできる上に、オーディオが割り当てられたメモリ制限内でおさまっていてゲームに実装しても破壊的な動きをしないことを開発者に証明したい時などにも便利です。また、オーディオがゲームに組み込まれたあとは、プレイしながらリアルタイムでオーディオをプロファイリングできます。ゲームエンジンからオーディオEventを確実に起動できているかを確認するのに非常に便利な機能であり、Soundcasterを使ってEventをマニュアル操作でトリガーして確認する機能と併用できます。
左上にあるCapture Logに、サウンドエンジンから入る全てのアクティビティが記録されます。ここで膨大な量の情報が生成されるので、目的に合わせてEvent、Action、State、Switchなどの要素をCapture Log Filterで選択して表示内容を絞ることが強く推奨されます。
ヒント: 私はよくデバッグ以外に、正確にサウンドをデザインしたい時にもCapture Logを利用しています。例えば、ゲーム内のアニメーションのスタート時点でトリガーされるべきオーディオEventがあれば、Wwiseを使ってゲームにリモート接続して、ゲームをプレイしながらアニメーションをトリガーさせて、アニメーションの開始と終了の正確なタイミングをCapture Logで記録させます。それと同時に全てを動画としてキャプチャーしておき、あとでアニメーションサウンドをゲームのどのタイミングでスタートさせるべきかを映像で明確に把握しておきながら、DAWの作業に移るのです。
Performance Monitorビューには、パフォーマンス情報としてCPU、ストリーミング、メモリ消費などが表示されます。Start Captureでキャプチャーを開始すると、サウンドエンジンが実行する全てのアクティビティのデータがリアルタイムで表示されます。パフォーマンスのピークポイントやそのピークに関連するアクティビティを知るのに、非常に役に立ちます。
ヒント: Performance Monitor SettingsでMin値やMax値を設定しておくと、グラフでMax値を超える部分が棒線で表示されます。こうすると、グラフに示される測定値、例えばNumber of Voices(ボイス数)、CPU、メモリ消費などが決められた制限内に収まらない部分を、瞬時に見極めることができます。次にそのグラフの表示範囲をMin/Max(最小・最大)設定値を変えて拡張すれば、問題となった部分を細かく確認できます。
ヒント: Performance MonitorのTime Cursor線を左右にドラッグすると、右下のコーナーでカウンター値の増減を具体的に確認できます。
Advanced Profilerビューには、LogやPerformance Monitorでキャプチャー中の動きについて、非常に詳しい情報が表示されます。問題があった場合に、具体的な内容を探りたいと思った時に便利な機能です。ゲーム開発では、オーディオが独占できるスペース、パフォーマンス、メモリが事前に厳しく計算されて割り当てられるのが一般的です。この制限を守ることは不可欠で、Advanced Profilerにすぐに再生中のボイス数、アクティブなバス、メモリ消費量、ストリーミング情報などが正確に出るので、常に範囲内に収まるように調整できます。また、Voices Graphタブを開くとSchematic Viewの現在の状況がリアルタイムで表示され、階層設定のエラーやGame Objectの設定間違いなどに簡単に気づけます。
ヒント: Asset Bundling機能を使う時に、どのSoundBankがロードされているのかを把握できると、SoundBankごとに1つのAsset Bundleが参照先となっていることが多いので、便利です。正しいタイミングでSoundBankがロードされていなければ、Asset Bundleに原因があるのかもしれません。
ヒント: プロファイリングデータの精度を向上させるには、Profiler Settingsダイアログでキャプチャー対象の情報を厳選します。Wwiseのプロファイラ機能のパフォーマンスが改善され、ゲームとWwiseの両方のCPU時間を節約できます。
ヒント: プロファイリングセッションをファイルとして保存すれば、あとから確認したり開発者に見せて分析したりできます。
Game Object Profiler レイアウト
Game Object Profilerレイアウトは使い方が少し複雑になりますが、これもゲーム内のGame ObjectやListenerの情報をリアルタイムで分析する時に非常に便利です。このレイアウトはGame Object Explorer、Game Sync Monitor、Game Object 3D Viewerの3つのビューで構成されています。ゲームにオーディオを実装してから、ゲームに接続してリアルタイムでプレイ中に使うレイアウトです。
Profiler Layoutと同様にサウンドエンジンのアウトプットを分析する画面ですが、サウンドエンジンとその様々なアクティビティの観点からではなく、各ゲームオブジェクトの観点で情報が表示されます。Game Object Profiler Layoutでは、ゲーム中にサウンドを出すあらゆるオブジェクトが見え、計画通りの動作をするかどうかを確認できます。
よく使う場面を、私の経験に基づいてまとめてみました:
- オブジェクト毎のAttenuation(減衰)半径のイメージを表示させて他のオブジェクトとの関係を確認したいとき。
- 動き回るオブジェクトの3Dサウンド設定をテストしながら、他のオブジェクトとの関係を確認したいとき。
- リアルタイムで変化するRTPC値を観察しながら分析して、サウンドスケープ全体にどのように影響するかを確認したいとき。
- Game ObjectやListenerを1つ1つ確認して、あるべきエレメントが実際に全て揃っているかを見たいとき。
言い換えると、Profiler Layoutがパフォーマンスに関するものであれば、Game Object Profiler Layoutはゲームのオーディオの仕組みを見ながら、エンジンで設定した通りに全てが動くかを確認するための画面であると私は考えています。プレイ中のゲームのサウンドスケープ全体を見渡しながら、自分の耳だけでなく実際のリアルタイムのデータを頼りにしながらデバッグできる手法を与えてくれるのです。
Game Object Explorerビューには、プログラマーが登録した、サウンドを発生する全てのGame Objectのリストがあります。この一覧表からWatchしたいゲームオブジェクトを右クリックして選択します。このWatch中のオブジェクトがGame Object 3D Viewerに表示され、ゲーム中に動き回る様子と同じ姿を観察できます。Game Sync Monitorには、実行中のRTPCとそのリアルタイムの値がグラフ表示されます。この3つのビューを見比べながら観察すれば、サウンドがおかしいと感じた時の具体的な原因となっている値や、RTPCなどの3Dサウンドが設定通りに動いているかどうか、またはどのように動くべきかなどを、簡単に見抜けます。
Schematic View
Schematic Viewは、デバッグが主要な役割ではないものの、プロジェクトの複雑な階層を確認したい時や、正しい条件や設定に従ってパスが的確にトリガーされているかどうかを見た時にも、使いやすい画面です。
ワークフローとしては単純で、Project Explorerの要素をSchematic Viewにドラッグすると図式化され、さらに「+」アイコンをクリックするとその下の階層レベルが展開されます。
そして驚くほど便利な機能が、Schematic View上でオブジェクトを直接再生する方法で、ゲームのオーディオコンテンツを細かく図式化したこの画面が、同時にインタラクティブエディタ兼ミキサーとして使えるのです。
-
Schematic Viewにあるオブジェクトは、どれもダブルクリックするだけでプロパティをアクセスできるので、Designer Layoutに切り替える手間も省けます。同様に、階層の最下位にあるサウンドファイルをダブルクリックすると、Source Editorウィンドウをアクセスして基本的な編集作業をファイルに直接行えます。また、右クリックで表示されるオプションにはFind in Project Explorerなどの便利な機能が満載で、ワークフローの劇的な効率化が図れます。
-
Schematic View Settings画面で表示内容を変更すれば、各オブジェクトのプロパティを表示させて、再生しながらボリューム、ピッチ、フィルター、Mute/Soloなどを調整できるのです。同時に数種類のプロパティを表示させれば、Schematic Viewをかなり手の込んだミキサーに変身させることも難しくありません。例えば私は、ボリューム、Icon Strip(アイコン一覧)、Mute/Solo、3Dポジショニングなどを選択して様々なオブジェクトのプロパティをいつでも変更できるようにしておきながら、それぞれのオブジェクトがオーディオパイプラインのどの位置にあるのかを観察するようにしています。
ヒント: Schematic ViewのSearchボックスを使って素早くオブジェクトを見つけたり、 Schematic Viewを開く前であればGeneral Searchボックスを使ってオブジェクトを見つけて、そこからSchematic Viewを直接開いたりできます。
最後に、プロジェクトがある程度の規模になると階層内のコンポーネントやオブジェクトを全て把握するのが難しくなり、サウンドやEventの複数のバージョンを試しながら進めている場合は、なおさら混乱しがちです。Event Viewerを使えば、選択中のオブジェクトがEventの参照先になっているかどうかをすぐに確認できます。時々、階層内を見直して不要なオブジェクトが存在しないかをチェックすると、誤ってSoundbankにロードして貴重なアセット用に活用できるスペースを無駄に消化してしまうことが避けられます。同様に、QueriesタブとQuery Editorでもプロジェクト内のあらゆるObject Typeを見つけられ、例えばPluginやEffectを使うバスはどれかを確認できるので、あなどれません。
また、忘れてはならないのがSoundcaster Sessionですが、それ自体がテスト兼デバッグツールになり、ゲーム全体やゲームの一部のオーディオコンテンツを中心に再現できる場となります。そして最初に覚えておくショートカットとしてお勧めなのが、SoundcasterのShift+Sであり、この画面を開けば複数のオーディオコンポーネントが互いに影響し合う様子を聞いたり、設定したState、Switch、RTPC、Music Triggerなどが正しいEventに結びついているかどうかを確認したりできます。
Happy debugging :)
アン・ソフィー・モンジョウ(ANNE-SOPHIE MONGEAU)
DIGIT Game Studios - ゲームオーディオエンジニア
コメント