Dynamic Latency Input
このトピックを使用して、Dynamic Latency Input (DLI) がゲーム内デバイスの入出力を同期させる方法を理解します。 入力タイム ラグ、または入力の待機時間は、物理的な入力が発生してから出力が送信されるまでの時間における遅延として定義されます。 ゲームでは、ボタンを押してから画面に出力されるまでの時間です。 この待機時間を低く保つことは、ユーザーをゲーム プレイに没頭させ夢中にさせるために非常に重要です。
入力の待機時間は、ボタンを押してから、ゲームがそれを読み取るまでの時間です。 DLI は、この数式の一部で遅延を短縮するために設計された入力アーキテクチャです。
Dynamic Latency Input の概要
DLI は、コントローラーとゲーム プラットフォームとの間の同期システムです。 ゲームの入力呼び出しパターンを評価し、コントローラーのレポート レートを調整して、入力呼び出しの直前に最新の入力を配信します。 入力呼び出しを完了させるために必要な、主なコンポーネントは次のとおりです。
- ボタンをレポートする、および読み取る頻度を動的に調整できるコントローラー。
- 次の入力が必要となるタイミングを予測するゲーム入力読み取りパターンを監視する機能。
- これらのパターンを使用してコントローラー レポートを調整し、ゲームのニーズに合わせる機能。
DLI の精度
DLI はサポート対象のデバイスが使用されると実行されます。 次の入力読み取りがいつ発生するかをどの程度予測しているかを監視します。 また、この値を内部の信頼度として保持します。 予測が一貫して外れていると、信頼度が低くなりすぎて DLI はそれ自体を無効にします。 低い信頼度値の最も多い原因は、動作に一貫性がないことです。 DLI は、入力が一貫性のあるリズムで読み取られることを前提とし、それを同期します。 一部のゲームは、DLI より速いシミュレーション スレッドを使用したり、一貫性のない間隔で入力を読み取ったりすることがあります。 これらのケースでは DLI が混乱し、同期する安定したレートを見つけることができなくなるため、信頼度が低下します。
注意
DLI は 125Hz の周期に制限されます。 その値より高い周期を試みると、DLI 自体が無効になります。
信頼度を上げるためのヒントを活用する
信頼度の低い値を緩和し、DLI を支援するために、ヒントをプラットフォームに送信して、入力が同期するタイミングを制御することができます。
SendInputSynchronizationHint が呼び出されると、DLI は入力読み取りのタイミングを無視し、ヒント呼び出しに同期します。 入力が遅れないようにするためには、次のコードで示すように、これはそれぞれのシミュレーション パスの最初の入力を読み込む直前に SendInputSynchronizationHint
を使用します。
IGameInputDevice::SendInputSynchronizationHint()
DLI を無効にする
現在のところ、入力同期をオフにすることが推奨される状況はありませんが、無効にするとメリットの評価において役立つ可能性はあります。 DLI を無効にする、または再び有効にするには、次のコードで示すように、SetInputSynchronizationState を使用します。
IGameInputDevice::SetInputSynchronizationState(bool enabled)
DLI パフォーマンスの分析
DLI がタイトルに対してどのように動作するかの詳細については、「Dynamic Latency Input パフォーマンスの分析 (NDA トピック)認可が必須です」参照してください。
デバイスのサポート
DLI はファームウェアをサポートしている入力デバイス上でのみ動作します。 DLI をサポートするデバイスの詳細については、「GameInputDeviceCapabilities」を参照してください。