移動同期のパラメーターを調整する方法

StrixMovementSynchronizerはオブジェクトの移動を同期するコンポーネントです。補間/補外の手法を用いて複雑な移動を正確かつ自然に同期します。このコンポーネントには多数の調整可能なパラメーターがあり、想定する移動パターンに合わせて最適にすることができます。

ゲームオブジェクトに合わせてパラメーターを調整する必要がある場合には以下に示す指針を参考にしてください。

デフォルト値から始める

一部のエンジニアは、実際のGameObjectにStrixMovementSynchronizerをアタッチして実行しないうちにパラメーターの正確な設定値を見出そうとします。通常、これは推奨されません。パラメーターのデフォルト値は、多くのゲーム内オブジェクトの典型的な移動パターンに対応しており、大抵はそのままでうまく動作します。

まずオーナーオブジェクトを動かすためのスクリプトを書き、その後StrixMovementSynchronizerがレプリカをどう動かすのかを見てみることをお勧めします。その移動が良さそうであれば、パラメーターを調整する必要はありません。

同期回数を増やしすぎないようにしましょう

一般的な3Dゲームでは、毎秒何十フレームもの画面更新を行います。例えば、30 fpsや60 fpsですが、もっと速い場合もあるでしょう。スクリプトは潜在的にはFixedUpdate (またはUpdate)が呼ばれるたびにオブジェクトの位置や加速度を変更するかもしれません。

しかし大抵のゲームでは、ネットワークを介してレプリカを同様の頻度で更新しようと試みたのでは多すぎるでしょう。StrixMovementSynchronizerは補外の手法を用いてオブジェクトの将来の位置を予測し必要な同期の回数を削減します。さらに移動のパターンに基づいて動的に同期間隔の最適化を試みます。

SyncPeriodMinSyncPeriodMaxは、移動同期の頻度を制御します。これはミリ秒で表した同期と同期の間の時間であり、小さな値は頻繁な同期を、大きな値は頻繁でない同期を意味します。SyncPeriodMinは同期と同期の間の最小時間であり、結果として最大頻度を定めることになります。SyncPeriodMaxは同期と同期の間の最大時間であり、最小頻度を定めます。デフォルト値は、SyncPeriodMinが50ms、SyncPeriodMaxが200msです。つまり、1秒あたり最大20回最小5回の同期を行うことになります。

毎秒5回~20回という頻度の移動同期は、60 fpsで動作しているゲームには不十分とお考えかもしれませんが、通常はこれで大丈夫です。