Fixed networking bugs
This commit is contained in:
@@ -1324,7 +1324,8 @@ Transform:
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Children:
|
||||
- {fileID: 685148375}
|
||||
m_Father: {fileID: 1886023632}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &310045873 stripped
|
||||
@@ -3687,6 +3688,37 @@ GameObject:
|
||||
m_CorrespondingSourceObject: {fileID: 9086668275070771076, guid: 15ac0ed4c56c7784ea3ae9000fc2af1f, type: 3}
|
||||
m_PrefabInstance: {fileID: 7528894854307259292}
|
||||
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
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -4161,7 +4193,7 @@ MonoBehaviour:
|
||||
networkManagers:
|
||||
- {fileID: 811840793}
|
||||
- {fileID: 65516626}
|
||||
interval: 0
|
||||
interval: 0.3
|
||||
ownerIndex: 0
|
||||
--- !u!114 &805005474
|
||||
MonoBehaviour:
|
||||
@@ -6225,7 +6257,8 @@ MonoBehaviour:
|
||||
root: {fileID: 0}
|
||||
delay: 50
|
||||
maxEventSendTries: 3
|
||||
pingDelay: 15
|
||||
sendingPingDelay: 15
|
||||
syncingPingDelay: 300
|
||||
tickDelta: 0.016666668
|
||||
debugOutput: {fileID: 0}
|
||||
DebugImageToIndicateOwner: {fileID: 1745114900}
|
||||
@@ -6478,7 +6511,7 @@ PrefabInstance:
|
||||
objectReference: {fileID: 776794315963647603, guid: 15ac0ed4c56c7784ea3ae9000fc2af1f, type: 3}
|
||||
- target: {fileID: 795751881681854794, guid: 15ac0ed4c56c7784ea3ae9000fc2af1f, type: 3}
|
||||
propertyPath: delay
|
||||
value: 1
|
||||
value: 30
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 795751881681854794, guid: 15ac0ed4c56c7784ea3ae9000fc2af1f, type: 3}
|
||||
propertyPath: debugOutput
|
||||
@@ -14267,6 +14300,10 @@ PrefabInstance:
|
||||
propertyPath: serializationData.Prefab
|
||||
value:
|
||||
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}
|
||||
propertyPath: serializationData.Prefab
|
||||
value:
|
||||
|
||||
+812
-813
File diff suppressed because it is too large
Load Diff
@@ -102,7 +102,13 @@ namespace Marro.PacManUdon
|
||||
/// </summary>
|
||||
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;
|
||||
/// <summary>
|
||||
/// The total size of the Reset event.
|
||||
/// </summary>
|
||||
private const ushort ResetEventSize = HeaderTimestampIndex + GuidSize;
|
||||
#endregion
|
||||
|
||||
@@ -157,6 +163,9 @@ namespace Marro.PacManUdon
|
||||
/// </summary>
|
||||
private int retriesWithoutSuccess;
|
||||
|
||||
/// <summary>
|
||||
/// The data of the last aknowledged Reset event.
|
||||
/// </summary>
|
||||
private byte[] lastResetEventData;
|
||||
|
||||
/// <summary>
|
||||
@@ -760,7 +769,7 @@ namespace Marro.PacManUdon
|
||||
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;
|
||||
int index = 0;
|
||||
@@ -798,9 +807,8 @@ namespace Marro.PacManUdon
|
||||
|
||||
var @event = GetArrayPart(networkedData, index, eventSize);
|
||||
|
||||
if (isReset)
|
||||
if (isReset && TryApplyReset(@event))
|
||||
{
|
||||
TryApplyReset(@event);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -844,7 +852,7 @@ namespace Marro.PacManUdon
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
continue; // Event is currently not relevant
|
||||
}
|
||||
|
||||
lastEventId = eventId;
|
||||
@@ -863,23 +871,23 @@ namespace Marro.PacManUdon
|
||||
|
||||
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
|
||||
if (IsDuplicateResetEvent(@event))
|
||||
{
|
||||
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!");
|
||||
|
||||
lastResetEventData = @event;
|
||||
ClearBuffer();
|
||||
SetSynced(false);
|
||||
Reset();
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool IsDuplicateResetEvent(byte[] @event)
|
||||
@@ -903,7 +911,6 @@ namespace Marro.PacManUdon
|
||||
{
|
||||
Synced = false;
|
||||
RequestEvent(NetworkEventType.FullSync);
|
||||
lastEventTransmissionTime = SyncedTimeTicks;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -973,7 +980,7 @@ namespace Marro.PacManUdon
|
||||
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!
|
||||
|
||||
@@ -998,6 +1005,7 @@ namespace Marro.PacManUdon
|
||||
eventsQueueIndex = 0;
|
||||
lastEventId = 0;
|
||||
hasFullSyncReady = false;
|
||||
lastEventTransmissionTime = SyncedTimeTicks;
|
||||
|
||||
eventTransmissionHistory = new int[maxEventSendTries];
|
||||
eventTransmissionHistoryIndex = 0;
|
||||
@@ -1089,7 +1097,7 @@ namespace Marro.PacManUdon
|
||||
|
||||
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);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -69,6 +69,10 @@ public class NetworkManagerSyncTester : UdonSharpBehaviour
|
||||
var equal = true;
|
||||
|
||||
var positions1 = positionCaptures[index];
|
||||
if (positions1 == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
var positions2 = GetPositions(gridMovers2);
|
||||
for (int i = 0; i < positions1.Length; i++)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user