Skip to content

Commit a1c0274

Browse files
committed
Added Tickrate config
1 parent a56902d commit a1c0274

File tree

2 files changed

+66
-69
lines changed

2 files changed

+66
-69
lines changed

MLAPI/Data/NetworkingConfiguration.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public class NetworkingConfiguration
1515
internal HashSet<ushort> RegisteredPassthroughMessageTypes = new HashSet<ushort>();
1616
public List<string> RegisteredScenes = new List<string>();
1717
public int MessageBufferSize = 65535;
18-
public int MaxMessagesPerFrame = 150;
18+
public int Tickrate = 64;
1919
public int MaxConnections = 100;
2020
public int Port = 7777;
2121
public string Address = "127.0.0.1";

MLAPI/MonoBehaviours/Core/NetworkingManager.cs

Lines changed: 65 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -288,82 +288,79 @@ private void Shutdown()
288288

289289
//Receive stuff
290290
internal int hostId;
291-
int clientId;
292-
int channelId;
293-
int receivedSize;
294-
byte error;
291+
private int clientId;
292+
private int channelId;
293+
private int receivedSize;
294+
private byte error;
295+
private float lastTickTime;
295296
private void Update()
296297
{
297-
if(isListening)
298+
if(isListening && (Time.time - lastTickTime >= (1f / NetworkConfig.Tickrate)))
298299
{
299-
NetworkEventType eventType;
300-
int messagesProcessed = 0;
301-
do
300+
foreach (KeyValuePair<int, NetworkedClient> pair in connectedClients)
301+
{
302+
NetworkTransport.SendQueuedMessages(hostId, pair.Key, out error);
303+
}
304+
NetworkEventType eventType = NetworkTransport.Receive(out hostId, out clientId, out channelId, messageBuffer, messageBuffer.Length, out receivedSize, out error);
305+
NetworkError networkError = (NetworkError)error;
306+
if (networkError == NetworkError.Timeout)
302307
{
303-
messagesProcessed++;
304-
eventType = NetworkTransport.Receive(out hostId, out clientId, out channelId, messageBuffer, messageBuffer.Length, out receivedSize, out error);
305-
NetworkError networkError = (NetworkError)error;
306-
if(networkError == NetworkError.Timeout)
308+
//Client timed out.
309+
if (isServer)
307310
{
308-
//Client timed out.
311+
OnClientDisconnect(clientId);
312+
return;
313+
}
314+
}
315+
else if (networkError != NetworkError.Ok)
316+
{
317+
Debug.LogWarning("MLAPI: NetworkTransport receive error: " + networkError.ToString());
318+
return;
319+
}
320+
321+
switch (eventType)
322+
{
323+
case NetworkEventType.ConnectEvent:
309324
if (isServer)
310325
{
311-
OnClientDisconnect(clientId);
312-
continue;
326+
pendingClients.Add(clientId);
327+
StartCoroutine(ApprovalTimeout(clientId));
313328
}
314-
}
315-
else if (networkError != NetworkError.Ok)
316-
{
317-
Debug.LogWarning("MLAPI: NetworkTransport receive error: " + networkError.ToString());
318-
continue;
319-
}
320-
switch (eventType)
321-
{
322-
case NetworkEventType.ConnectEvent:
323-
if (isServer)
324-
{
325-
pendingClients.Add(clientId);
326-
StartCoroutine(ApprovalTimeout(clientId));
327-
}
328-
else
329-
{
330-
int sizeOfStream = 32;
331-
if (NetworkConfig.ConnectionApproval)
332-
sizeOfStream += 2 + NetworkConfig.ConnectionData.Length;
329+
else
330+
{
331+
int sizeOfStream = 32;
332+
if (NetworkConfig.ConnectionApproval)
333+
sizeOfStream += 2 + NetworkConfig.ConnectionData.Length;
333334

334-
using (MemoryStream writeStream = new MemoryStream(sizeOfStream))
335+
using (MemoryStream writeStream = new MemoryStream(sizeOfStream))
336+
{
337+
using (BinaryWriter writer = new BinaryWriter(writeStream))
335338
{
336-
using (BinaryWriter writer = new BinaryWriter(writeStream))
339+
writer.Write(NetworkConfig.GetConfig());
340+
if (NetworkConfig.ConnectionApproval)
337341
{
338-
writer.Write(NetworkConfig.GetConfig());
339-
if(NetworkConfig.ConnectionApproval)
340-
{
341-
writer.Write((ushort)NetworkConfig.ConnectionData.Length);
342-
writer.Write(NetworkConfig.ConnectionData);
343-
}
342+
writer.Write((ushort)NetworkConfig.ConnectionData.Length);
343+
writer.Write(NetworkConfig.ConnectionData);
344344
}
345-
Send(clientId, "MLAPI_CONNECTION_REQUEST", "MLAPI_RELIABLE_FRAGMENTED_SEQUENCED", writeStream.GetBuffer());
346345
}
346+
Send(clientId, "MLAPI_CONNECTION_REQUEST", "MLAPI_RELIABLE_FRAGMENTED_SEQUENCED", writeStream.GetBuffer());
347347
}
348-
break;
349-
case NetworkEventType.DataEvent:
350-
HandleIncomingData(clientId, messageBuffer, channelId);
351-
break;
352-
case NetworkEventType.DisconnectEvent:
353-
if(isServer)
354-
{
355-
OnClientDisconnect(clientId);
356-
}
357-
break;
358-
}
359-
} while (eventType != NetworkEventType.Nothing &&
360-
(messagesProcessed < NetworkConfig.MaxMessagesPerFrame || NetworkConfig.MaxMessagesPerFrame < 0));
361-
362-
}
363-
if (isServer)
364-
{
365-
LagCompensationManager.AddFrames();
366-
NetworkedObject.InvokeSyncvarUpdate();
348+
}
349+
break;
350+
case NetworkEventType.DataEvent:
351+
HandleIncomingData(clientId, messageBuffer, channelId);
352+
break;
353+
case NetworkEventType.DisconnectEvent:
354+
if (isServer)
355+
OnClientDisconnect(clientId);
356+
break;
357+
}
358+
if (isServer)
359+
{
360+
LagCompensationManager.AddFrames();
361+
NetworkedObject.InvokeSyncvarUpdate();
362+
}
363+
lastTickTime = Time.time;
367364
}
368365
}
369366

@@ -826,7 +823,7 @@ internal void PassthroughSend(int targetId, int sourceId, ushort messageType, in
826823
writer.Write((ushort)data.Length);
827824
writer.Write(data);
828825
}
829-
NetworkTransport.Send(hostId, targetId, channelId, stream.GetBuffer(), sizeOfStream, out error);
826+
NetworkTransport.QueueMessageForSending(hostId, targetId, channelId, stream.GetBuffer(), sizeOfStream, out error);
830827
}
831828
}
832829

@@ -874,7 +871,7 @@ internal void Send(int clientId, string messageType, string channelName, byte[]
874871
}
875872
if (isPassthrough)
876873
clientId = serverClientId;
877-
NetworkTransport.Send(hostId, clientId, MessageManager.channels[channelName], stream.GetBuffer(), sizeOfStream, out error);
874+
NetworkTransport.QueueMessageForSending(hostId, clientId, MessageManager.channels[channelName], stream.GetBuffer(), sizeOfStream, out error);
878875
}
879876
}
880877

@@ -911,7 +908,7 @@ internal void Send(int[] clientIds, string messageType, string channelName, byte
911908
//Client trying to send data to host
912909
clientId = serverClientId;
913910
}
914-
NetworkTransport.Send(hostId, clientId, channel, stream.GetBuffer(), sizeOfStream, out error);
911+
NetworkTransport.QueueMessageForSending(hostId, clientId, channel, stream.GetBuffer(), sizeOfStream, out error);
915912
}
916913
}
917914
}
@@ -950,7 +947,7 @@ internal void Send(List<int> clientIds, string messageType, string channelName,
950947
//Client trying to send data to host
951948
clientId = serverClientId;
952949
}
953-
NetworkTransport.Send(hostId, clientId, channel, stream.GetBuffer(), sizeOfStream, out error);
950+
NetworkTransport.QueueMessageForSending(hostId, clientId, channel, stream.GetBuffer(), sizeOfStream, out error);
954951
}
955952
}
956953
}
@@ -989,7 +986,7 @@ internal void Send(string messageType, string channelName, byte[] data, uint? ne
989986
//Client trying to send data to host
990987
clientId = serverClientId;
991988
}
992-
NetworkTransport.Send(hostId, clientId, channel, stream.GetBuffer(), sizeOfStream, out error);
989+
NetworkTransport.QueueMessageForSending(hostId, clientId, channel, stream.GetBuffer(), sizeOfStream, out error);
993990

994991
}
995992
}
@@ -1031,7 +1028,7 @@ internal void Send(string messageType, string channelName, byte[] data, int clie
10311028
//Client trying to send data to host
10321029
clientId = serverClientId;
10331030
}
1034-
NetworkTransport.Send(hostId, clientId, channel, stream.GetBuffer(), sizeOfStream, out error);
1031+
NetworkTransport.QueueMessageForSending(hostId, clientId, channel, stream.GetBuffer(), sizeOfStream, out error);
10351032
}
10361033
}
10371034
}

0 commit comments

Comments
 (0)