実行
デフォルトの実行
以下の図は、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();
    }
}