レッスン 7

目次

プロセッサーにおける最適化

ゲームプレイ中にサウンドを再生するたびに、ゲームシステムのCPU処理能力を少しだけ必要とします。オーディオによるプロセッサーへの負荷は比較的小さいものですが、このプロセッサを、システムに膨大な負荷をかける3Dグラフィックレンダリングなど、ゲームの他の要素と共有する必要があることを考慮してください。こうした理由から、オーディオエンジンがプロセッサーを最大限に生かし、処理サイクルを無駄にしないようにする方法を学ぶ必要があります。

ゲーム内で再生されるサウンドそれぞれは、それが再生されるにあたりボイスと呼ばれるものが必要です。本レッスンの中でダイアログに関連して使用されたVoiceオブジェクトと混同しないようにしてください。この場合は、ゲーム内のサウンドを生成する論理メカニズムとしてボイスを理解してください。全てのアクティブなボイスはプロセッサーの処理サイクルを消費します。

ゲームによっては、特にCubeデモのような3D空間のゲームでは、ボイス数が急激に増加することがあります。Wwizardがモンスター30人に対して魔法のジェムを投げていて、モンスターたちも同時にジェムを投げ返してくるような場合は、その様々なサウンドだけでなく、彼らの足音や、バックグランドのアンビエントサウンドなどが重なり、ボイス数はすぐに増えていきます。しかし実際は、これらのサウンドの多くは聞こえる必要はありません。100m先を歩いているモンスターの足音は遠くで静かに再生されるかもしれませんが、同時にほかのモンスターが10人そろって2m先で魔法のジェムを投げていれば、遠くの音は聞こえることはありません。遠くの足音の処理は、近くの魔法サウンドの処理と同じだけ処理負荷がかかるので、足音に気付く可能性が低いのであれば、処理するだけ無駄です。この無駄を最小限に留めるために、あなたのプロジェクトでは、ボイスを介して実際にレンダリングする必要があるサウンドの最小ボリュームを指定する設定があります。

  1. Wwiseメニューバーで Project > Project Settings を選択してからGeneralタブを選びます。

    開発対象のゲームシステム毎に異なる構成を設定をすることができます。例えば、Nintendo SwitchはPlayStation 5と比べ処理能力が低いため、これらの値をゲームシステム毎に個別に調整します。Volume Thresholdのデフォルト値は-80で、単位はdBです。つまり、このゲームでは80dBのダイナミックレンジがあるということです。ゲームシステムのプロセッサーへの負荷を軽減したい場合には、Volume Thresholdをより高く設定することでダイナミックレンジを押さえることで可能ですが、その場合、微妙な環境音のように、あなたが聞かせたい音もカットオフされてしまう危険性があります。

    また、同時にシステムを介して再生できる最大ボイス数を定義する別のパラメータもあります。これは、システムが完全に過負荷の状態となってしまうのを防止します。このパラメータを低く設定することで、オーディオエンジンはCPUへの負荷を抑えることができますが、特に多くのアクションが行なわれている戦闘中などで、あなたが聞かせたいサウンドがカットオフされてしまう可能性があります。ゲームが最も緊迫した状況において、あなたのメインの魔法のサウンドを失うことは、ゲーム体験から離れてしまうこととなり、最悪の状態となります。でもご心配は無用です、このあとの演習でボイスのプライオリティ付けの方法を学びます。

  2. あなたのシステム用の Volume Threshold-50 に変え、 Max Voice Instances40 に設定して OK をクリックします。

    特定のサウンドは、その性質上、ボイス負荷の高いものがあります。CubeでPoison Gemは高速で投げられ、投げる度に出るサウンドが徐々にオーバーラップしてきます。そうなると、ボイスカウントが急激に蓄積されます。このような状況に対応する為、任意の単一オブジェクトがゲーム中において同時に扱うことができるボイス数を制限します。

  3. Designer レイアウトに戻り、Project Explorerで Magic Actor-Mixerを選択し、Property EditorでAdvanced Settingsタブをクリックします。

    Playback Limitグループで、使用可能な合計ボイス数を設定することができます。ゲームオブジェクト毎に適用する制限値として設定すれば、各キャラクターが自分独自の魔法用にボイスを50個まで使うことができ、グローバル設定とすれば同時に聞こえる同じタイプの魔法サウンドは50個に制限されます。後者は特に有用で、プレイヤーが同時に再生される同一タイプのサウンドを数種類以上判別することは、なかなか出来ません。

  4. Limit sound instances to チェックボックスを選択し、インスタンス値を 25 に設定し、ドロップダウンメニューで Globally を選択します。

    サウンドによっては、ゲーム中何が起ころうとも、Killされることが無いようにしたいものもあります。このような場合に対応するために、ゲームで聞かせることの重要性をサウンドの種類別に決め、その優先順位を設定するボイスのプライオリティシステムがWwiseにあります。このように、ゲームシステムがボイスをKillする際に、本当に聞かせる必要があるサウンドは無音にならないようにすることができます。

    意図せずオフにしたくないサウンドの一例としては、プレイヤーのダイアログや、ミュージックなどがあります。この場合、ミュージックオブジェクトに対して高いボイスプライオリティを設定して無音にならないように防げます。

  5. Cube Main Theme オブジェクトを選択し、その Priority 値を 80 に変更します。

    これで、ゲームプレイ中にミュージックが意図せず無音になることがほとんど無くなります。

    [ヒント]

    Offset priorityのチェックボックスと設定で、オブジェクトがAttenuation Editorで指定したmax distance値に到達した時に、そのオブジェクトのプライオリティがオフセットされる値を指定します。足音のように、リスナーの近くにある時にはプライオリティを高くする必要があり、遠くではそれほど重要でなくなるオブジェクトの、プライオリティ付けに便利です。

    [ヒント]

    同じくAdvanced Settingsに、Virtual Voiceグループがあります。Virtual Voiceは、通常であれば再生されるものの、プラットフォームに設定されているVolume Thresholdよりもボリュームが小さい場合はVirtual Voiceリストに追加されるサウンドを表します。Virtual Voiceリストは、サウンドの特定パラメータをサウンドエンジンがモニタリングする仮想環境です。サウンドは、そのボリュームレベルに基づいて、耳に聞こえるフィジカルボイスの状態から無音のバーチャルボイスに移ったり、その逆となったりします。ボリュームがVolume Threshold以上に戻ったり、再生サウンド数が同時再生サウンドの制限を下回ったりした場合には、オブジェクトは自動的にフィジカルボイスに戻ります。


このページはお役に立ちましたか?