Struct NetworkTime
Present on both client and server world, singleton component that contains all the timing characterist of the client/server simulation loop.
Implements
Inherited Members
Namespace: Unity.NetCode
Assembly: Unity.NetCode.dll
Syntax
public struct NetworkTime : IComponentData, IQueryTypeParameter
Fields
InterpolationTick
The current interpolated tick (integral part). Always less than the ServerTick on the Client (and equal to ServerTick on the server).
Declaration
public NetworkTick InterpolationTick
Field Value
Type | Description |
---|---|
NetworkTick |
InterpolationTickFraction
The fractional part of the tick (XXX.fraction). Always in between (0.0, 1.0]
Declaration
public float InterpolationTickFraction
Field Value
Type | Description |
---|---|
float |
ServerTick
The current simulated server tick the server will run this frame. Always start from 1. 0 is consider an invalid value. The ServerTick value behave differently on client and server. On the server:
- it is always a "full" tick
- strict monontone and continue (up to the wrap around)
- the same inside or outside the prediction loop On the client:
- it is the tick the client predict the server should simulate this frame. Depends on current lag and command slack
- can be either a full or partial.
- if the tick is partial, the client would run the simulation for it multiple time, each time with a different delta time proportion
- it is not monotone:
- in some rare/recovery situation may rollback or having jump forward (due to time/lag adjustments).
- during the prediction loop the ServerTick value is changed to match either the last full simulated tick or , in case of a rollback because a snapshot has been received, to the oldest received tick among all entities. In both case, and the end of of the prediction loop the server tick will be reset to current predicted server tick.
Declaration
public NetworkTick ServerTick
Field Value
Type | Description |
---|---|
NetworkTick |
ServerTickFraction
Only meaningful on the client that run at variable step rate. On the server is always 1.0. Always in range is (0.0 and 1.0].
Declaration
public float ServerTickFraction
Field Value
Type | Description |
---|---|
float |
SimulationStepBatchSize
The number of simulation steps this tick is scaled with. This is used to make one update which covers N ticks in order to reduce CPU cost. This is always 1 for partial ticks in the prediction loop, but can be more than 1 for partial ticks outside the prediction loop.
Declaration
public int SimulationStepBatchSize
Field Value
Type | Description |
---|---|
int |
Properties
IsCatchUpTick
Only valid on server. True when the current simulated tick is running with a variabled delta time to recover from a previous long running frame.
Declaration
public bool IsCatchUpTick { get; }
Property Value
Type | Description |
---|---|
bool |
IsFinalFullPredictionTick
Only valid inside the prediction loop. The current server tick which will be the last full tick we are predicting
Declaration
public bool IsFinalFullPredictionTick { get; }
Property Value
Type | Description |
---|---|
bool |
IsFinalPredictionTick
Only valid inside the prediction loop. The current server tick which will be the last tick to predict
Declaration
public bool IsFinalPredictionTick { get; }
Property Value
Type | Description |
---|---|
bool |
IsFirstPredictionTick
Only valid inside the prediction loop. The server tick the prediction is starting from.
Declaration
public bool IsFirstPredictionTick { get; }
Property Value
Type | Description |
---|---|
bool |
IsFirstTimeFullyPredictingTick
Only valid inside the prediction loop. True when this ServerTick
is being predicted in full for the first time.
"In full" meaning the first non-partial simulation tick. I.e. Partial ticks don't count.
Declaration
public bool IsFirstTimeFullyPredictingTick { get; }
Property Value
Type | Description |
---|---|
bool |
IsInPredictionLoop
Indicate that the current ServerTick is a predicted one and the simulation is running inside the prediction group.
Declaration
public bool IsInPredictionLoop { get; }
Property Value
Type | Description |
---|---|
bool |
IsPartialTick
True if the current tick is running with delta time that is a fraction of the ServerTickDeltaTime. Only true on the client when running at variable frame rate.
Declaration
public bool IsPartialTick { get; }
Property Value
Type | Description |
---|---|
bool |
PredictedTickIndex
Counts the number of predicted ticks triggered on this frame (while inside the prediction loop). Thus, client only, and increments BEFORE the tick occurs (i.e. the first predicted tick will have a value of 1). Outside the prediction loop, records the current or last frames prediction tick count (until prediction restarts).
Declaration
public readonly int PredictedTickIndex { get; }
Property Value
Type | Description |
---|---|
int |
Methods
ToFixedString()
Helper to debug NetworkTime issues via logs.
Declaration
public FixedString512Bytes ToFixedString()
Returns
Type | Description |
---|---|
FixedString512Bytes | Formatted string containing NetworkTime data. |