menu
バージョン
2019.2.15.7667
2024.1.4.8780
2023.1.12.8706
2022.1.18.8567
2021.1.14.8108
2019.2.15.7667
2019.1.11.7296
2018.1.11.6987
2017.2.10.6745
2017.1.9.6501
2016.2.6.6153
2015.1.9.5624
2024.1.4.8780
2023.1.12.8706
2022.1.18.8567
2021.1.14.8108
2019.2.15.7667
2019.1.11.7296
2018.1.11.6987
2017.2.10.6745
2017.1.9.6501
2016.2.6.6153
2015.1.9.5624
オーディオコマンドキューは、ゲームから内部サウンドエンジンへの全てのAPIコールを伝達するメカニズムです。これは、Performance Monitorビューでモニタリングできるメモリバッファです。バッファがコマンドでいっぱいになると、さらにコマンドを追加しようとするゲームスレッドが一時的にブロックされます。目的は、APIコールの損失によるゲームとサウンドエンジンの同期問題を防止することです。ただし、ゲームのフレームレートが乱れる可能性が高くなります。
考えられる原因:
1つのゲームフレームで送信されるAPIコールが多すぎます。これが、このエラーの最も一般的な原因です。 SetPosition
、 SetRTPCValue
、 SetSwitch
などへの余分なコールが理由で、よく発生するエラーです。また、ゲームで新しいレベルを展開するときに、多数のゲームオブジェクトを作成して、実際のゲームプロセスのスタート前にそれらのポジションやRTPCを設定する場合などにも、発生します。
大量のパラメータアレイ( SetMultiplePositions
や、スペーシャルオーディオ用のジオメトリ関連コールなど)が含まれる、メモリ負荷の高い複数のAPIコールが発生しました。
オーディオ処理スレッドに過度の負荷がかかり、コマンド処理を阻止しています。このエラーにボイススターベーションが伴えば、Voice Starvationエラーも表示されます。
オーディオ処理スレッドがブロックされた、またはデッドロックが発生しました。ゲームまたはWwise自体のバグの可能性があります。
推奨される解決策:
Profiler Settings (Alt-G) の"API Calls"オプションを有効にして、ゲームのAPIコールをプロファイリングします。これを使って、キューに大量のAPIコールを送り込んでいるゲームプロセスを特定できます。
ゲームがWwiseに対して、ゲームシンク(States, Switches, Game Parameters)をどのように更新しているかを、再確認します。これらの更新は、必要なときだけに行うようにします。
ゲームフレーム内のコールを AK::SoundEngine::RenderAudio
に追加して、ゲームフレームを複数のオーディオフレームに分割します。RenderAudioは、1つのゲームフレームに属する一連のAPIコールの終了だけを認識します。内部サウンドエンジンの状況を更新するために、Audioコマンドキューの処理をトリガーしますが、このファンクションコールでレンダリングされる実際のオーディオはありません。
オーディオ処理スレッド(名前がAK::EventMgrThread
で、プライオリティを AkPlatformInitSettings::threadLEngine
経由で設定したもの)の、CPUプライオリティが、この処理をするために充分であることを確認してください。問題がある場合は、ゲーム中に"Voice Starvation"エラーも頻繁に発生するはずです。
ゲームにデバッガを接続して、AK::EventMgrThread
というスレッドが実際に稼働しているかを、検証してください。稼働していない場合は、ゲームのサウンドが既に失われていることを意味します。この場合は、Audiokineticサポートに連絡してください。
コマンドキューのメモリサイズを、 AkInitSettings::uCommandQueueSize を参照し、拡張してください。