物理演算
Fusion 2.1では、ネットワーク物理演算に対して「Forecast」「Forecast無効」「Physicsアドオン」の3つのアプローチがあります。これらは、スムーズさ・プロキシが物理インタラクションできるか・コスト・精度のトレードオフになっています。各アプローチの詳細は、以下のリンクをご覧ください。
アプローチ
Forecast
Forecastは、外挿法(Extrapolation)を使用して、リモートの物理オブジェクトを各プレイヤーのローカル時間に配置します。そして、すべてのクライアントはローカルで完全な物理演算を実行し、正しい状態との調整を行います。これによって、すべてのクライアント上で物理オブジェクトのスムーズなインタラクションが可能になります。共有モードでネットワーク物理インタラクションを行いたい場合は、このアプローチが推奨です。クライアントサーバーモードでは、Physicsアドオンの精度とForecastの低CPU負荷の、トレードオフを考慮してください。
Forecast無効
Forecast無効は、Forecast物理やPhysicsアドオンを使用しない場合に適用されます。物理オブジェクトは非物理オブジェクトと同様に、リモート時間のプロキシとして、権限者から他のクライアントへ同期されます。デフォルトでは、プロキシのRigidbodyはKinematicに設定されているため、すべてのインタラクションは権限者上で処理されます。これは最も負荷が小さいオプションで、インタラクションが発生しない物理オブジェクトに適しています。
Physicsアドオン(予測と再シミュレーション)
最も正確にネットワーク物理演算を行う方法は、Fusionで(キネマティックキャラクターと同様に)予測・再シミュレーションを実行することです。クライアントサーバー型ゲームでは、アドオンでこの機能が提供されます。なお、Unityの物理エンジンは再シミュレーション向けに最適化されていないため、このアプローチは最も負荷が高くなります。
アプローチの選択
| アプローチ | トポロジー | プロキシのインタラクション | 負荷 | 最適対象 |
|---|---|---|---|---|
| Forecast | 共有 & クライアントサーバー | 可能、スムーズな近似 | 各クライアント上でローカルな物理演算 | インタラクションが発生するネットワーク物理オブジェクト |
| Forecast無効 | 共有 & クライアントサーバー | 不可(リモート時間のキネマティックなプロキシ) | 最も低い | インタラクションが不要な物理オブジェクト |
| Physicsアドオン | クライアントサーバーのみ | 可能、予測と再シミュレーション | 最も高い | 負荷高めでも高精度が求められるもの |
さらに別の選択肢として、Quantumが利用できます。これは異なるアプローチを採用したネットワーキングで、予測と再シミュレーションに最適化された物理エンジンを備えています。
Fusion 2.0
Fusion 2.0は、ネットワーク物理演算に対して2つのアプローチがあります。このバージョンにForecastは存在しません。
標準挙動
物理演算は権限者上で実行されます。他のクライアントは同期されたTransformを受信しますが、物理演算は実行されません。この挙動は、Forecast無効と同様です。Fusion 2.1とは異なり、Fusion 2.0では、プロキシのRigidbodyがデフォルトでKinematicに設定されていません。以下のページには、Fusion 2.0の挙動に合わせるための互換性設定が記載されています。
Physicsアドオン
クライアントサーバー型ゲーム向けの、完全なプロキシの予測と再シミュレーションを提供します。Fusion 2.0アドオンは、RunnerPhysicsSimulate2D/3DをSimulateAlwaysに設定・Physics AuthorityをFusionに設定・Physics TimingをFixedUpdateNetworkに設定している場合、Fusion 2.1アドオンと同様の動作になります。