Fixed networking bugs
This commit is contained in:
@@ -1324,7 +1324,8 @@ Transform:
|
|||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children: []
|
m_Children:
|
||||||
|
- {fileID: 685148375}
|
||||||
m_Father: {fileID: 1886023632}
|
m_Father: {fileID: 1886023632}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!1 &310045873 stripped
|
--- !u!1 &310045873 stripped
|
||||||
@@ -3687,6 +3688,37 @@ GameObject:
|
|||||||
m_CorrespondingSourceObject: {fileID: 9086668275070771076, guid: 15ac0ed4c56c7784ea3ae9000fc2af1f, type: 3}
|
m_CorrespondingSourceObject: {fileID: 9086668275070771076, guid: 15ac0ed4c56c7784ea3ae9000fc2af1f, type: 3}
|
||||||
m_PrefabInstance: {fileID: 7528894854307259292}
|
m_PrefabInstance: {fileID: 7528894854307259292}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
--- !u!1 &685148374
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 685148375}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Make networkmanager visible
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &685148375
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 685148374}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 297676220}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!1 &689152543
|
--- !u!1 &689152543
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -4161,7 +4193,7 @@ MonoBehaviour:
|
|||||||
networkManagers:
|
networkManagers:
|
||||||
- {fileID: 811840793}
|
- {fileID: 811840793}
|
||||||
- {fileID: 65516626}
|
- {fileID: 65516626}
|
||||||
interval: 0
|
interval: 0.3
|
||||||
ownerIndex: 0
|
ownerIndex: 0
|
||||||
--- !u!114 &805005474
|
--- !u!114 &805005474
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
@@ -6225,7 +6257,8 @@ MonoBehaviour:
|
|||||||
root: {fileID: 0}
|
root: {fileID: 0}
|
||||||
delay: 50
|
delay: 50
|
||||||
maxEventSendTries: 3
|
maxEventSendTries: 3
|
||||||
pingDelay: 15
|
sendingPingDelay: 15
|
||||||
|
syncingPingDelay: 300
|
||||||
tickDelta: 0.016666668
|
tickDelta: 0.016666668
|
||||||
debugOutput: {fileID: 0}
|
debugOutput: {fileID: 0}
|
||||||
DebugImageToIndicateOwner: {fileID: 1745114900}
|
DebugImageToIndicateOwner: {fileID: 1745114900}
|
||||||
@@ -6478,7 +6511,7 @@ PrefabInstance:
|
|||||||
objectReference: {fileID: 776794315963647603, guid: 15ac0ed4c56c7784ea3ae9000fc2af1f, type: 3}
|
objectReference: {fileID: 776794315963647603, guid: 15ac0ed4c56c7784ea3ae9000fc2af1f, type: 3}
|
||||||
- target: {fileID: 795751881681854794, guid: 15ac0ed4c56c7784ea3ae9000fc2af1f, type: 3}
|
- target: {fileID: 795751881681854794, guid: 15ac0ed4c56c7784ea3ae9000fc2af1f, type: 3}
|
||||||
propertyPath: delay
|
propertyPath: delay
|
||||||
value: 1
|
value: 30
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 795751881681854794, guid: 15ac0ed4c56c7784ea3ae9000fc2af1f, type: 3}
|
- target: {fileID: 795751881681854794, guid: 15ac0ed4c56c7784ea3ae9000fc2af1f, type: 3}
|
||||||
propertyPath: debugOutput
|
propertyPath: debugOutput
|
||||||
@@ -14267,6 +14300,10 @@ PrefabInstance:
|
|||||||
propertyPath: serializationData.Prefab
|
propertyPath: serializationData.Prefab
|
||||||
value:
|
value:
|
||||||
objectReference: {fileID: 776794315963647603, guid: 15ac0ed4c56c7784ea3ae9000fc2af1f, type: 3}
|
objectReference: {fileID: 776794315963647603, guid: 15ac0ed4c56c7784ea3ae9000fc2af1f, type: 3}
|
||||||
|
- target: {fileID: 795751881681854794, guid: 15ac0ed4c56c7784ea3ae9000fc2af1f, type: 3}
|
||||||
|
propertyPath: delay
|
||||||
|
value: 30
|
||||||
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 795751881681854794, guid: 15ac0ed4c56c7784ea3ae9000fc2af1f, type: 3}
|
- target: {fileID: 795751881681854794, guid: 15ac0ed4c56c7784ea3ae9000fc2af1f, type: 3}
|
||||||
propertyPath: serializationData.Prefab
|
propertyPath: serializationData.Prefab
|
||||||
value:
|
value:
|
||||||
|
|||||||
+812
-813
File diff suppressed because it is too large
Load Diff
@@ -102,7 +102,13 @@ namespace Marro.PacManUdon
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private const ushort HeaderLength = 8;
|
private const ushort HeaderLength = 8;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The size of a GUID as used in the Reset event, in bytes.
|
||||||
|
/// </summary>
|
||||||
private const ushort GuidSize = 16;
|
private const ushort GuidSize = 16;
|
||||||
|
/// <summary>
|
||||||
|
/// The total size of the Reset event.
|
||||||
|
/// </summary>
|
||||||
private const ushort ResetEventSize = HeaderTimestampIndex + GuidSize;
|
private const ushort ResetEventSize = HeaderTimestampIndex + GuidSize;
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@@ -157,6 +163,9 @@ namespace Marro.PacManUdon
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private int retriesWithoutSuccess;
|
private int retriesWithoutSuccess;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The data of the last aknowledged Reset event.
|
||||||
|
/// </summary>
|
||||||
private byte[] lastResetEventData;
|
private byte[] lastResetEventData;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -760,7 +769,7 @@ namespace Marro.PacManUdon
|
|||||||
return; // Nothing to store
|
return; // Nothing to store
|
||||||
}
|
}
|
||||||
|
|
||||||
//Debug.Log($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Received {networkedData.Length} bytes!\nBytes received:\n{ArrayToString(networkedData)}");
|
Debug.Log($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Received {networkedData.Length} bytes!\nBytes received:\n{ArrayToString(networkedData)}");
|
||||||
|
|
||||||
var length = networkedData.Length;
|
var length = networkedData.Length;
|
||||||
int index = 0;
|
int index = 0;
|
||||||
@@ -798,9 +807,8 @@ namespace Marro.PacManUdon
|
|||||||
|
|
||||||
var @event = GetArrayPart(networkedData, index, eventSize);
|
var @event = GetArrayPart(networkedData, index, eventSize);
|
||||||
|
|
||||||
if (isReset)
|
if (isReset && TryApplyReset(@event))
|
||||||
{
|
{
|
||||||
TryApplyReset(@event);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -844,7 +852,7 @@ namespace Marro.PacManUdon
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return;
|
continue; // Event is currently not relevant
|
||||||
}
|
}
|
||||||
|
|
||||||
lastEventId = eventId;
|
lastEventId = eventId;
|
||||||
@@ -863,23 +871,23 @@ namespace Marro.PacManUdon
|
|||||||
|
|
||||||
hasFullSyncReady = true;
|
hasFullSyncReady = true;
|
||||||
|
|
||||||
//Debug.Log($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Queued full sync in buffer, should execute at {nextEventTime}.");
|
Debug.Log($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Queued full sync in buffer, current time is {SyncedTimeTicks}, should execute at {nextEventTime}.");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void TryApplyReset(byte[] @event)
|
private bool TryApplyReset(byte[] @event)
|
||||||
{
|
{
|
||||||
// Compare the guid to the one in the previous reset event
|
// Compare the guid to the one in the previous reset event
|
||||||
if (IsDuplicateResetEvent(@event))
|
if (IsDuplicateResetEvent(@event))
|
||||||
{
|
{
|
||||||
Debug.Log($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Rejected Reset event as it was a duplicate.");
|
Debug.Log($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Rejected Reset event as it was a duplicate.");
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Debug.Log($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Applied Reset event!");
|
Debug.Log($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Applied Reset event!");
|
||||||
|
|
||||||
lastResetEventData = @event;
|
lastResetEventData = @event;
|
||||||
ClearBuffer();
|
Reset();
|
||||||
SetSynced(false);
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool IsDuplicateResetEvent(byte[] @event)
|
private bool IsDuplicateResetEvent(byte[] @event)
|
||||||
@@ -903,7 +911,6 @@ namespace Marro.PacManUdon
|
|||||||
{
|
{
|
||||||
Synced = false;
|
Synced = false;
|
||||||
RequestEvent(NetworkEventType.FullSync);
|
RequestEvent(NetworkEventType.FullSync);
|
||||||
lastEventTransmissionTime = SyncedTimeTicks;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -973,7 +980,7 @@ namespace Marro.PacManUdon
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Debug.Log($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Performed incoming event of type {eventType}! Total {index} bytes.");
|
Debug.Log($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Performed incoming event of type {eventType}! Total {index} bytes.");
|
||||||
|
|
||||||
retriesWithoutSuccess = 0; // We had success!
|
retriesWithoutSuccess = 0; // We had success!
|
||||||
|
|
||||||
@@ -998,6 +1005,7 @@ namespace Marro.PacManUdon
|
|||||||
eventsQueueIndex = 0;
|
eventsQueueIndex = 0;
|
||||||
lastEventId = 0;
|
lastEventId = 0;
|
||||||
hasFullSyncReady = false;
|
hasFullSyncReady = false;
|
||||||
|
lastEventTransmissionTime = SyncedTimeTicks;
|
||||||
|
|
||||||
eventTransmissionHistory = new int[maxEventSendTries];
|
eventTransmissionHistory = new int[maxEventSendTries];
|
||||||
eventTransmissionHistoryIndex = 0;
|
eventTransmissionHistoryIndex = 0;
|
||||||
@@ -1089,7 +1097,7 @@ namespace Marro.PacManUdon
|
|||||||
|
|
||||||
if (nextEventTime < SyncedTimeTicks)
|
if (nextEventTime < SyncedTimeTicks)
|
||||||
{
|
{
|
||||||
Debug.LogWarning($"({nameof(PacManUdon)} {nameof(NetworkManager)}) New event timestamp is earlier than our current synced time by {SyncedTime - nextEventTime} seconds! nextEventTime: {nextEventTime} SyncedTime: {SyncedTime}, internalTime: {targetTicks}");
|
Debug.LogWarning($"({nameof(PacManUdon)} {nameof(NetworkManager)}) New event timestamp is earlier than our current synced time by {SyncedTimeTicks - nextEventTime}! nextEventTime: {nextEventTime} SyncedTime: {SyncedTimeTicks}, targetTicks: {targetTicks}");
|
||||||
HandleError(true);
|
HandleError(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -69,6 +69,10 @@ public class NetworkManagerSyncTester : UdonSharpBehaviour
|
|||||||
var equal = true;
|
var equal = true;
|
||||||
|
|
||||||
var positions1 = positionCaptures[index];
|
var positions1 = positionCaptures[index];
|
||||||
|
if (positions1 == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
var positions2 = GetPositions(gridMovers2);
|
var positions2 = GetPositions(gridMovers2);
|
||||||
for (int i = 0; i < positions1.Length; i++)
|
for (int i = 0; i < positions1.Length; i++)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user