Library)を使わないのですかなぜGodotは例外処理を使わないのですか?GodotがRTTI(実行時型情報)を強制しないのはなぜですか?GodotがユーザーにDoD(データ指向設計)の実装を強制しないのはなぜですか?Godotの開発をサポートしたり、貢献したりするにはどうすればいいですか?誰がGodotで働いていますか。sourceゲームプレイにオーディオと音楽を同期させる¶はじめに¶どのアプリケーションやゲームでも、サウンドと音楽の再生にはわずかな遅延があります。ゲームの場合、この遅延は多くの場合非常に小さいため無視できます。サウンドエフェクトは、play()関数が呼び出されてから数ミリ秒後に出力されます。音楽の場合、ほとんどのゲームではゲームプレイと相互作用しないため、これは重要ではありません。それでも、一部のゲーム(主にリズムゲーム)では、プレイヤーのアクションを曲内で発生する何かと同期する必要があります(通常はBPMと同期します)。そのためには、正確な再生位置のより正確なタイミング情報を取得すると便利です。非常に細かい再生タイミング精度を達成することは困難です。これは、オーディオの再生中に多くの要因が作用するためです。(プロジェクト設定で待機時間を確認します)。オーディオの混合チャンクはすぐには再生されません。グラフィックAPIは2〜3フレーム遅れて表示します。テレビで再生する場合、その画像処理のために遅延が追加される場合があります。レイテンシーを削減する最も一般的な方法は、オーディオバッファを縮小することです(再び、プロジェクト設定でレイテンシー設定を編集します)。問題は、レイテンシーが小さすぎると、サウンドミキシングにかなり多くのCPUが必要になることです。これにより、スキップする(ミックスコールバックが失われたためサウンドの亀裂が生じる)リスクが高まります。これは一般的なトレードオフであるため、Godotには、変更する必要のない適切なデフォルトが含まれています。問題は、最終的に、このわずかな遅延ではなく、それを必要とするゲームのグラフィックとオーディオの同期です。3.2以降では、より正確な再生タイミングを取得するためにいくつかのヘルパーが追加されました。呼び出しても、サウンドはすぐには開始されませんが、オーディオスレッドが次のチャンクを処理するときには開始されます。呼び出すことで推測できます。呼び出すことによっても推測できます。time)ただし、長い目で見れば、サウンドハードウェアクロックがシステムクロックと正確に同期することはないため、タイミング情報はゆっくりとずれていきます。数分後に曲が開始および終了するリズムゲームの場合、このアプローチは適切です(推奨されるアプローチです)。再生がはるかに長い時間続くゲームの場合、ゲームは最終的に同期しなくなり、別のアプローチが必要になります。使用して、曲の現在の位置を取得するのが理想的ですが、現状ではあまり役に立ちません。この値は(オーディオコールバックがサウンドブロックを混合するたびに)チャンク単位で増加するため、多くの呼び出しで同じ値を返すことができます。これに加えて、前述の理由により、値はスピーカーとも同期しません。AudioServer.get_time_since_last_mix()。AudioServer.get_output_latency()これは以前よりも精度の低いアプローチですが、任意の長さの曲、または音楽に何か(たとえば、サウンドエフェクト)を同期させる場合にも機能します。結果は複数のスレッドの動作が原因で少し不安定になる可能性があります。値が前のフレームの値より小さくないことを確認してください(もしそうなら破棄してください)。