バージョン

menu_open

Audio command queue is full, blocking caller. Reduce number of calls to sound engine or boost command queue memory.

オーディオコマンドキューは、ゲームから内部サウンドエンジンへの全てのAPIコールを伝達するメカニズムです。これは、Performance Monitorビューでモニタリングできるメモリバッファです。バッファがコマンドでいっぱいになると、さらにコマンドを追加しようとするゲームスレッドが一時的にブロックされます。目的は、APIコールの損失によるゲームとサウンドエンジンの同期問題を防止することです。ただし、ゲームのフレームレートが乱れる可能性が高くなります。

考えられる原因:

  • 1つのゲームフレームで送信されるAPIコールが多すぎます。これが、このエラーの最も一般的な原因です。 SetPosition SetRTPCValue SetSwitch などへの余分なコールが理由で、よく発生するエラーです。また、ゲームで新しいレベルを展開するときに、多数のゲームオブジェクトを作成して、実際のゲームプロセスのスタート前にそれらのポジションやRTPCを設定する場合などにも、発生します。

  • 大量のパラメータアレイ( SetMultiplePositionsや、スペーシャルオーディオ用のジオメトリ関連コールなど)が含まれる、メモリ負荷の高い複数のAPIコールが発生しました。

  • オーディオ処理スレッドに過度の負荷がかかり、コマンド処理を阻止しています。このエラーにボイススターベーションが伴えば、Voice Starvationエラーも表示されます。

  • オーディオ処理スレッドがブロックされた、またはデッドロックが発生しました。ゲームまたはWwise自体のバグの可能性があります。

推奨される解決策:

  • API CallsProfiler Settings (Alt-G)で有効にしてゲームが行っているAPIコールのプロファイリングを行います。これを使って、キューに大量のAPIコールを送り込んでいるゲームプロセスを特定できます。

  • ゲームがWwiseに対して、ゲームシンク(States, Switches, Game Parameters)をどのように更新しているかを、再確認します。これらの更新は、必要なときだけに行うようにします。

  • AK::SoundEngine::RenderAudio にゲームフレーム内コールを追加し、1つのゲームフレームを複数のオーディオフレームに分割します。RenderAudioは、1つのゲームフレームに属する一連のAPIコールの終了だけを認識します。内部サウンドエンジンの状況を更新するために、Audioコマンドキューの処理をトリガーしますが、このファンクションコールでレンダリングされる実際のオーディオはありません。

  • オーディオ処理スレッド(名前は AK::EventMgrThread であるものの、プロパティは AkPlatformInitSettings::threadLEngine 経由で設定)のCPUのプライオリティを、処理するのに充分な優先順位にします。問題がある場合は、ゲーム中に"Voice Starvation"エラーも頻繁に発生するはずです。

  • ゲームにデバッガを接続して、AK::EventMgrThreadというスレッドが実際に稼働しているかを、検証してください。稼働していない場合は、ゲームのサウンドが既に失われていることを意味します。この場合はAudiokineticサポートにご連絡ください。

  • コマンドキューのメモリサイズを、 AkInitSettings::uCommandQueueSize を参照し、拡張してください。


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

サポートは必要ですか?

ご質問や問題、ご不明点はございますか?お気軽にお問い合わせください。

サポートページをご確認ください

あなたのプロジェクトについて教えてください。ご不明な点はありませんか。

プロジェクトを登録していただくことで、ご利用開始のサポートをいたします。

Wwiseからはじめよう