Skip to content

Commit f027e58

Browse files
authored
fix: exposing the network tick interval in the Editor (#566)
1 parent 44cfa29 commit f027e58

File tree

5 files changed

+17
-6
lines changed

5 files changed

+17
-6
lines changed

com.unity.multiplayer.mlapi/Editor/NetworkManagerEditor.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public class NetworkManagerEditor : Editor
2424
private SerializedProperty m_AllowRuntimeSceneChangesProperty;
2525
private SerializedProperty m_NetworkTransportProperty;
2626
private SerializedProperty m_ReceiveTickrateProperty;
27+
private SerializedProperty m_NetworkTickIntervalSecProperty;
2728
private SerializedProperty m_MaxReceiveEventsPerTickRateProperty;
2829
private SerializedProperty m_EventTickrateProperty;
2930
private SerializedProperty m_MaxObjectUpdatesPerTickProperty;
@@ -100,6 +101,7 @@ private void Init()
100101
m_AllowRuntimeSceneChangesProperty = m_NetworkConfigProperty.FindPropertyRelative("AllowRuntimeSceneChanges");
101102
m_NetworkTransportProperty = m_NetworkConfigProperty.FindPropertyRelative("NetworkTransport");
102103
m_ReceiveTickrateProperty = m_NetworkConfigProperty.FindPropertyRelative("ReceiveTickrate");
104+
m_NetworkTickIntervalSecProperty = m_NetworkConfigProperty.FindPropertyRelative("NetworkTickIntervalSec");
103105
m_MaxReceiveEventsPerTickRateProperty = m_NetworkConfigProperty.FindPropertyRelative("MaxReceiveEventsPerTickRate");
104106
m_EventTickrateProperty = m_NetworkConfigProperty.FindPropertyRelative("EventTickrate");
105107
m_ClientConnectionBufferTimeoutProperty = m_NetworkConfigProperty.FindPropertyRelative("ClientConnectionBufferTimeout");
@@ -137,6 +139,7 @@ private void CheckNullProperties()
137139
m_AllowRuntimeSceneChangesProperty = m_NetworkConfigProperty.FindPropertyRelative("AllowRuntimeSceneChanges");
138140
m_NetworkTransportProperty = m_NetworkConfigProperty.FindPropertyRelative("NetworkTransport");
139141
m_ReceiveTickrateProperty = m_NetworkConfigProperty.FindPropertyRelative("ReceiveTickrate");
142+
m_NetworkTickIntervalSecProperty = m_NetworkConfigProperty.FindPropertyRelative("NetworkTickIntervalSec");
140143
m_MaxReceiveEventsPerTickRateProperty = m_NetworkConfigProperty.FindPropertyRelative("MaxReceiveEventsPerTickRate");
141144
m_EventTickrateProperty = m_NetworkConfigProperty.FindPropertyRelative("EventTickrate");
142145
m_ClientConnectionBufferTimeoutProperty = m_NetworkConfigProperty.FindPropertyRelative("ClientConnectionBufferTimeout");
@@ -283,6 +286,7 @@ public override void OnInspectorGUI()
283286

284287
EditorGUILayout.LabelField("Performance", EditorStyles.boldLabel);
285288
EditorGUILayout.PropertyField(m_ReceiveTickrateProperty);
289+
EditorGUILayout.PropertyField(m_NetworkTickIntervalSecProperty);
286290
EditorGUILayout.PropertyField(m_MaxReceiveEventsPerTickRateProperty);
287291
EditorGUILayout.PropertyField(m_EventTickrateProperty);
288292
EditorGUILayout.PropertyField(m_EnableNetworkVariableProperty);
@@ -407,4 +411,4 @@ public override void OnInspectorGUI()
407411
}
408412
}
409413
}
410-
}
414+
}

com.unity.multiplayer.mlapi/Runtime/Configuration/NetworkConfig.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,12 @@ public class NetworkConfig
7272
[Tooltip("The amount of times per second the receive queue is emptied from pending incoming messages")]
7373
public int ReceiveTickrate = 64;
7474

75+
/// <summary>
76+
/// Duration in seconds between network ticks.
77+
/// </summary>
78+
[Tooltip("Duration in seconds between network ticks")]
79+
public float NetworkTickIntervalSec = 0.050f;
80+
7581
/// <summary>
7682
/// The max amount of messages to process per ReceiveTickrate. This is to prevent flooding.
7783
/// </summary>
@@ -351,4 +357,4 @@ public bool CompareConfig(ulong hash)
351357
return hash == GetConfig();
352358
}
353359
}
354-
}
360+
}

com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ private void Init(bool server)
318318
NetworkTickSystem = null;
319319
}
320320

321-
NetworkTickSystem = new NetworkTickSystem();
321+
NetworkTickSystem = new NetworkTickSystem(NetworkConfig.NetworkTickIntervalSec);
322322

323323
//This should never happen, but in the event that it does there should be (at a minimum) a unity error logged.
324324
if (RpcQueueContainer != null)
@@ -1487,4 +1487,4 @@ internal void HandleApproval(ulong clientId, bool createPlayerObject, ulong? pla
14871487
}
14881488
}
14891489
}
1490-
}
1490+
}

com.unity.multiplayer.mlapi/Runtime/Core/NetworkTickSystem.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ namespace MLAPI
1010

1111
public class NetworkTickSystem : INetworkUpdateSystem, IDisposable
1212
{
13-
private const float k_DefaultTickIntervalSec = 1 / 60f; // Defaults to 60 ticks second
13+
private const float k_DefaultTickIntervalSec = 0.05f; // Defaults to 20 ticks second
1414
private readonly float m_TickIntervalSec; // Duration of a tick in seconds
1515
private int m_NetworkTickCount; // How many network ticks have passed?
1616

@@ -80,4 +80,4 @@ public void NetworkUpdate(NetworkUpdateStage updateStage)
8080
}
8181
}
8282
}
83-
}
83+
}

testproject/Assets/Scenes/SampleScene.unity

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -774,6 +774,7 @@ MonoBehaviour:
774774
id: 0
775775
CreatePlayerPrefab: 1
776776
ReceiveTickrate: 64
777+
NetworkTickIntervalSec: 0.05
777778
MaxReceiveEventsPerTickRate: 500
778779
EventTickrate: 64
779780
ClientConnectionBufferTimeout: 10

0 commit comments

Comments
 (0)