このページは編集中です。更新が保留になっている可能性があります。

固定アップデートネットワーク

概要

FixedUpdateNetwork() - 略して FUN()- は、あるティックから次のティックへの新しい状態をシミュレートするときに呼び出されます。FixedUpdateNetwork() は一定の時間間隔で呼び出されます。この間隔のタイムステップは NetworkProjectConfig アセットの Simulation > Tick Rate で定義します。このタイムステップは SimulationBehaviourNetworkBehaviour から Runner.DeltaTime プロパティを介してアクセスすることができ、シミュレーションロジックに関してUnityの Time.deltaTime が使用されているようなシナリオで使用するものです。

FUN() メソッドには全てのシミュレーションロジックが含まれており、刻みを正しく再シミュレーションし、クライアント間で状態を同期させることを保証します。

トップに戻る

シミュレーションと再シミュレーション

FixedUpdateNetwork()は同じ状態遷移に対して複数回呼び出すことができ、サーバーから受け取ったアップデート(ground truth)に基づいて現在予測されている状態を再シミュレーションすることができます。Fusion は再シミュレーションのために FixedUpdateNetwork() を呼び出す前にネットワークの状態をリセットするので、[Networked] プロパティでは 再シミュレーション は透過的に行われます。

重要: 通常のローカルな非ネットワーク状態変数(クラスメンバーなど)はリセットされず、単に前方への状態遷移が追加されたとみなされます。

トップに戻る

シミュレーションティック

以下のシミュレーションプロパティを FUN() で使用することで、現在のシミュレーションティックがどの状態であるかを知ることができます(例: Runner.Simulation.IsResimulation など)。

  • IsResimulation: FixedUpdateNetworkの内部で使用し、現在シミュレーションされているティックが、以前にローカルでシミュレーションされていたかどうかを判断します。
  • IsForward: FixedUpdateNetworkの内部で使用し、現在シミュレートされているティックが以前にローカルでシミュレートされていないかどうかを判断します。
  • IsLastTick: FixedUpdateNetwork内でIsResimulation/IsForwardと一緒に使用し、現在シミュレーションされているティックがシミュレーションループの再シミュレーションまたはフォワードフェーズの最後のティックであるかどうかを決定します。
  • IsFirstTick: FixedUpdateNetwork内のIsResimulation/IsForwardと組み合わせて使用し、シミュレーションされている現在のティックがシミュレーションループの再シミュレーションまたはフォワードフェーズの最初のティックであるかどうかを決定します。

トップに戻る

実行順序

FixedUpdateNetwork は Resimulation と Forward Loop の両方の中心に位置しています。FUN は [Networked] 状態に影響を与えるすべてのゲームプレイロジックが配置され、実行される場所です。

デフォルトでは、NetworkBehavioursSimulationBehaviours は任意の順序で並んでいます。つまり、同じゲームセッションに参加しているシミュレーションの間で、これらすべてのFUNの実行順序が異なる可能性があります。FUNループの一部であるネットワーク物理シミュレーションは、PhysicsEnginePhysics 3D またはPhysics 2D に設定されている場合、その「中間」で実行されます。したがって、デフォルトでは、ある種の動作は FixedUpdateNetwork メソッドが Network Physics の前または後に実行されることになります。

Fixed Update Network
Fusion固定更新ネットワークループ

トップに戻る

FUNと物理

クラス属性 [OrderedBefore()][OrderedAfter()] を使用すると、動作を特定の種類の動作の前または後に明示的に並べることが可能です。これらの属性は、シミュレーションで使用する物理の種類(NetworkPhysics2DまたはNetworkPhysics3D)を指定することによって、ネットワーク物理の前または後に動作を実行させるためにも使用することができます。スクリプト実行コントロール](~~/manual/script-execution-control)の詳細については、同名のページを参照してください。

Network Physics Engine
ネットワークシミュレーションで使用する物理エンジン

ドキュメントのトップへ戻る