This document is about: QUANTUM 3
SWITCH TO

予測ミスとエンティティビュー

はじめに

Photon Quantumは予測/ロールバックエンジンで、通常はプレイヤーの最後の入力が予測フレームで繰り返され、その予測に基づいてローカルシミュレーションを進行します。

確定フレーム(確定した入力のセット)に到達した際、予測中に進行していたデータは、予測ミスにより変更する必要がある可能性があります。

このようなロールバックが発生すると、特にエンティティの位置などのゲームビューでは目立つことがあります。

加速/減速なしにエンティティのtransformを変更する(つまり位置などを急激に変化する)ような一般的な例を考えてみましょう。以下のgifをご覧ください。

上のエンティティ(最初に動く方)はローカルプレイヤーのエンティティです。
下のエンティティはリモートプレイヤーのエンティティで、ロールバックの影響が目立っています。

Mispredictions and Entity Views

補足: これは、エンティティの移動を非常に速く誇張させた例です。

ここでは次のようなことが起こっています。

  1. リモートプレイヤーがボタンを押し始めると、エンティティも右に移動し始めます。
  2. 予測フレーム中、プレイヤー入力が繰り返されるため、リモートプレイヤーのエンティティは右に移動し続けます。
  3. リモートプレイヤーがボタンを離しても、ローカルクライアントはこの変化をまだ認識できないため、エンティティが右に移動していると予測し続けます。
  4. 次の確定フレームが到着すると、EntityViewは予測ミスした位置から正しい位置へ線形補間(わずかに後退)します。

線形補間は、EntityViewの予測誤差修正設定によって行われます。

備考:上記の例ではエンティティのTransformを直接変更していますが、KCCやPhysicsBodyなど、他のキャラクター移動方法でも、類似の挙動は確認できます。

軽減策

これは予測/ロールバックモデルでは避けられない挙動ですが、影響を軽減する方法はいくつかあります。

最も一般的なアドバイスは、以下の2つです(通常は1の方法で十分です)。

  1. エンティティの移動を、急激に移動させるのではなく、加速/減速を加えてください。わずかな加速/減速だけもかなりの効果があり、予測ミスによる差異は非常に小さくなります。
Mispredictions and Entity Views
  1. 入力ディレイを追加してください。予測フレーム数を減らすことで、予測ミス数も減ります。
Mispredictions and Entity Views

補足: ゲームに大きな悪影響を与えずに使用できると確信できなければ、入力ディレイの使用は避けてください。この代替方法を試す場合は、DeterministicConfigアセットのOffsetMinを小さい値(例:2)に設定して、ゲームの動作を確認することをお勧めします。

Back to top