実行
デフォルトの実行
以下の図は、1つのUnityフレーム内でKCCが使用するFusionコールバックのデフォルトの実行順序を示しています。
- (1)はサーバから新しいデータを受信したときのみ実行される。
- (2)は
1-N
フォワードティックシミュレーション時に実行される。 - (3) は新しいティックをシミュレートするのに十分なデルタ時間がない場合に実行される。
- (4)は、シミュレーション待ちの再シミュレーションまたはフォワードティックがさらにある場合に実行される。
- (5)は、すべての再シミュレーションとフォワードティックのシミュレーションが完了した後に実行される。
以下のシナリオが考えられます。
- サーバーから新しいデータを受信 = [Y] 再シミュレーションティック => [X] 順方向ティック => レンダリング更新。
- データを受信していない = [X] フォワードティック => レンダリング更新。
- データを受信せず、十分な差分時間もない = レンダリング更新のみ。
以下の図は、KCC内部ロジックの実行に続く、Fusionコールバックの詳細な概要を示しています。
⚠️ Some operations are valid only for input/state authority or proxy. For example proxy never writes to the network buffer.
⚠️ いくつかの操作は、入力/状態権限またはプロキシに対してのみ有効です。例えば、プロキシは決してネットワークバッファに書き込みません。
Authority BehaviorMove
サブルーチンの実行はKCC SettingsセクションのInput Authority Behavior
、State Authority Behavior
、Proxy Behavior
によって定義されます。
Input Authority Behavior | Fixed Update | Render Update |
---|---|---|
Predict Fixed | Interpolate Render | Move (Predicted) | Move (Interpolated) |
Predict Fixed | Predict Render | Move (Predicted) | Move (Predicted) |
State Authority Behavior | Fixed Update | Render Update |
---|---|---|
Predict Fixed | Interpolate Render | Move (Predicted) | Move (Interpolated) |
Predict Fixed | Predict Render | Move (Predicted) | Move (Predicted) |
Proxy Behavior | Fixed Update | Render Update |
---|---|---|
Skip Fixed | Interpolate Render | Nothing | Server snapshots interpolation |
Interpolate Fixed | Interpolate Render | Server snapshots interpolation | Server snapshots interpolation |
Predict Fixed | Interpolate Render | Move (Predicted) | Move (Interpolated) |
Predict Fixed | Predict Render | Move (Predicted) | Move (Predicted) |
手動実行
デフォルトでは、KCC fixed/renderの更新は、ラグ補正をサポートするためにHitboxManager
の前に実行されます。
正確な実行順序を制御するために、手動実行を有効にすることができます。
C#
public class Player : NetworkBehaviour
{
public KCC KCC;
public override void Spawned()
{
KCC.SetManualUpdate(true);
}
public override void FixedUpdateNetwork()
{
KCC.ManualFixedUpdate();
}
public override void Render()
{
KCC.ManualRenderUpdate();
}
}
Back to top