Compare commits

..

No commits in common. "7c05eaf4adabbb3e04f0b762ddec12e883d013dc" and "b32c6677c93732266ef949155b29e62513455c34" have entirely different histories.

3 changed files with 135 additions and 108 deletions

View File

@ -102,7 +102,6 @@ public class NetworkTransformHybrid2022 : NetworkBehaviour
// debugging /////////////////////////////////////////////////////////// // debugging ///////////////////////////////////////////////////////////
[Header("Debug")] [Header("Debug")]
public bool debugDraw;
public bool showGizmos; public bool showGizmos;
public bool showOverlay; public bool showOverlay;
public Color overlayColor = new Color(0, 0, 0, 0.5f); public Color overlayColor = new Color(0, 0, 0, 0.5f);
@ -214,11 +213,6 @@ void CmdClientToServerBaseline_PositionRotation(byte baselineTick, Vector3 posit
lastDeserializedBaselinePosition = position; lastDeserializedBaselinePosition = position;
lastDeserializedBaselineRotation = rotation; lastDeserializedBaselineRotation = rotation;
// debug draw: baseline
if (debugDraw) Debug.DrawLine(position, position + Vector3.up, Color.yellow, 10f);
Debug.Log($"{name} server received baseline: {baselineTick}");
// if baseline counts as delta, insert it into snapshot buffer too // if baseline counts as delta, insert it into snapshot buffer too
if (baselineIsDelta) if (baselineIsDelta)
OnClientToServerDeltaSync(baselineTick, position, rotation);//, scale); OnClientToServerDeltaSync(baselineTick, position, rotation);//, scale);
@ -230,9 +224,6 @@ void CmdClientToServerBaseline_Position(byte baselineTick, Vector3 position)
lastDeserializedBaselineTick = baselineTick; lastDeserializedBaselineTick = baselineTick;
lastDeserializedBaselinePosition = position; lastDeserializedBaselinePosition = position;
// debug draw: baseline
if (debugDraw) Debug.DrawLine(position, position + Vector3.up, Color.yellow, 10f);
// if baseline counts as delta, insert it into snapshot buffer too // if baseline counts as delta, insert it into snapshot buffer too
if (baselineIsDelta) if (baselineIsDelta)
OnClientToServerDeltaSync(baselineTick, position, Quaternion.identity);//, scale); OnClientToServerDeltaSync(baselineTick, position, Quaternion.identity);//, scale);
@ -253,9 +244,6 @@ void CmdClientToServerBaseline_Rotation(byte baselineTick, Quaternion rotation)
[Command(channel = Channels.Unreliable)] // unreliable delta [Command(channel = Channels.Unreliable)] // unreliable delta
void CmdClientToServerDelta_Position(byte baselineTick, Vector3 position) void CmdClientToServerDelta_Position(byte baselineTick, Vector3 position)
{ {
// debug draw: delta
if (debugDraw) Debug.DrawLine(position, position + Vector3.up, Color.white, 10f);
// Debug.Log($"[{name}] server received delta for baseline #{lastDeserializedBaselineTick}"); // Debug.Log($"[{name}] server received delta for baseline #{lastDeserializedBaselineTick}");
OnClientToServerDeltaSync(baselineTick, position, Quaternion.identity);//, scale); OnClientToServerDeltaSync(baselineTick, position, Quaternion.identity);//, scale);
} }
@ -270,11 +258,6 @@ void CmdClientToServerDelta_Rotation(byte baselineTick, Quaternion rotation)
[Command(channel = Channels.Unreliable)] // unreliable delta [Command(channel = Channels.Unreliable)] // unreliable delta
void CmdClientToServerDelta_PositionRotation(byte baselineTick, Vector3 position, Quaternion rotation) void CmdClientToServerDelta_PositionRotation(byte baselineTick, Vector3 position, Quaternion rotation)
{ {
// debug draw: delta
if (debugDraw) Debug.DrawLine(position, position + Vector3.up, Color.white, 10f);
Debug.Log($"[{name}] server received delta for {baselineTick}, with last baseline {lastDeserializedBaselineTick}");
// Debug.Log($"[{name}] server received delta for baseline #{lastDeserializedBaselineTick}"); // Debug.Log($"[{name}] server received delta for baseline #{lastDeserializedBaselineTick}");
OnClientToServerDeltaSync(baselineTick, position, rotation);//, scale); OnClientToServerDeltaSync(baselineTick, position, rotation);//, scale);
} }
@ -282,25 +265,19 @@ void CmdClientToServerDelta_PositionRotation(byte baselineTick, Vector3 position
// local authority client sends sync message to server for broadcasting // local authority client sends sync message to server for broadcasting
protected virtual void OnClientToServerDeltaSync(byte baselineTick, Vector3? position, Quaternion? rotation)//, Vector3? scale) protected virtual void OnClientToServerDeltaSync(byte baselineTick, Vector3? position, Quaternion? rotation)//, Vector3? scale)
{ {
// only apply if in client authority mode
if (syncDirection != SyncDirection.ClientToServer) return;
// ensure this delta is for our last known baseline. // ensure this delta is for our last known baseline.
// we should never apply a delta on top of a wrong baseline. // we should never apply a delta on top of a wrong baseline.
if (baselineTick != lastDeserializedBaselineTick) if (baselineTick != lastDeserializedBaselineTick)
{ {
// debug draw: drop
if (debugDraw)
{
if (position.HasValue) Debug.DrawLine(position.Value, position.Value + Vector3.up, Color.red, 10f);
}
// this can happen if unreliable arrives before reliable etc. // this can happen if unreliable arrives before reliable etc.
// no need to log this except when debugging. // no need to log this except when debugging.
Debug.LogWarning($"[{name}] Server: received delta for wrong baseline #{baselineTick} from: {connectionToClient}. Last was {lastDeserializedBaselineTick}. Ignoring."); // Debug.Log($"[{name}] Server: received delta for wrong baseline #{baselineTick} from: {connectionToClient}. Last was {lastDeserializedBaselineTick}. Ignoring.");
return; return;
} }
// only apply if in client authority mode
if (syncDirection != SyncDirection.ClientToServer) return;
// protect against ever-growing buffer size attacks // protect against ever-growing buffer size attacks
if (serverSnapshots.Count >= connectionToClient.snapshotBufferSizeLimit) return; if (serverSnapshots.Count >= connectionToClient.snapshotBufferSizeLimit) return;
@ -347,11 +324,6 @@ void RpcServerToClientBaseline_PositionRotation(byte baselineTick, Vector3 posit
lastDeserializedBaselinePosition = position; lastDeserializedBaselinePosition = position;
lastDeserializedBaselineRotation = rotation; lastDeserializedBaselineRotation = rotation;
Debug.Log($"{name} RpcServerToClientBaseline sets new baseline := {baselineTick}");
// debug draw: baseline
if (debugDraw) Debug.DrawLine(position, position + Vector3.up, Color.yellow, 10f);
// if baseline counts as delta, insert it into snapshot buffer too // if baseline counts as delta, insert it into snapshot buffer too
if (baselineIsDelta) if (baselineIsDelta)
OnServerToClientDeltaSync(baselineTick, position, rotation);//, Vector3.zero);//, scale); OnServerToClientDeltaSync(baselineTick, position, rotation);//, Vector3.zero);//, scale);
@ -368,11 +340,6 @@ void RpcServerToClientBaseline_Position(byte baselineTick, Vector3 position)
lastDeserializedBaselineTick = baselineTick; lastDeserializedBaselineTick = baselineTick;
lastDeserializedBaselinePosition = position; lastDeserializedBaselinePosition = position;
Debug.Log($"{name} RpcServerToClientBaseline sets new baseline := {baselineTick}");
// debug draw: baseline
if (debugDraw) Debug.DrawLine(position, position + Vector3.up, Color.yellow, 10f);
// if baseline counts as delta, insert it into snapshot buffer too // if baseline counts as delta, insert it into snapshot buffer too
if (baselineIsDelta) if (baselineIsDelta)
OnServerToClientDeltaSync(baselineTick, position, Quaternion.identity);//, Vector3.zero);//, scale); OnServerToClientDeltaSync(baselineTick, position, Quaternion.identity);//, Vector3.zero);//, scale);
@ -389,8 +356,6 @@ void RpcServerToClientBaseline_Rotation(byte baselineTick, Quaternion rotation)
lastDeserializedBaselineTick = baselineTick; lastDeserializedBaselineTick = baselineTick;
lastDeserializedBaselineRotation = rotation; lastDeserializedBaselineRotation = rotation;
Debug.Log($"{name} RpcServerToClientBaseline sets new baseline := {baselineTick}");
// if baseline counts as delta, insert it into snapshot buffer too // if baseline counts as delta, insert it into snapshot buffer too
if (baselineIsDelta) if (baselineIsDelta)
OnServerToClientDeltaSync(baselineTick, Vector3.zero, rotation);//, Vector3.zero);//, scale); OnServerToClientDeltaSync(baselineTick, Vector3.zero, rotation);//, Vector3.zero);//, scale);
@ -404,9 +369,6 @@ void RpcServerToClientDelta_PositionRotation(byte baselineTick, Vector3 position
// ignore if this object is owned by this client. // ignore if this object is owned by this client.
if (IsClientWithAuthority) return; if (IsClientWithAuthority) return;
// debug draw: delta
if (debugDraw) Debug.DrawLine(position, position + Vector3.up, Color.white, 10f);
OnServerToClientDeltaSync(baselineTick, position, rotation);//, scale); OnServerToClientDeltaSync(baselineTick, position, rotation);//, scale);
} }
@ -418,9 +380,6 @@ void RpcServerToClientDelta_Position(byte baselineTick, Vector3 position)
// ignore if this object is owned by this client. // ignore if this object is owned by this client.
if (IsClientWithAuthority) return; if (IsClientWithAuthority) return;
// debug draw: delta
if (debugDraw) Debug.DrawLine(position, position + Vector3.up, Color.white, 10f);
OnServerToClientDeltaSync(baselineTick, position, Quaternion.identity);//, scale); OnServerToClientDeltaSync(baselineTick, position, Quaternion.identity);//, scale);
} }
@ -438,6 +397,16 @@ void RpcServerToClientDelta_Rotation(byte baselineTick, Quaternion rotation)
// server broadcasts sync message to all clients // server broadcasts sync message to all clients
protected virtual void OnServerToClientDeltaSync(byte baselineTick, Vector3 position, Quaternion rotation)//, Vector3 scale) protected virtual void OnServerToClientDeltaSync(byte baselineTick, Vector3 position, Quaternion rotation)//, Vector3 scale)
{ {
// ensure this delta is for our last known baseline.
// we should never apply a delta on top of a wrong baseline.
if (baselineTick != lastDeserializedBaselineTick)
{
// this can happen if unreliable arrives before reliable etc.
// no need to log this except when debugging.
// Debug.Log($"[{name}] Client: received delta for wrong baseline #{baselineTick}. Last was {lastDeserializedBaselineTick}. Ignoring.");
return;
}
// in host mode, the server sends rpcs to all clients. // in host mode, the server sends rpcs to all clients.
// the host client itself will receive them too. // the host client itself will receive them too.
// -> host server is always the source of truth // -> host server is always the source of truth
@ -449,22 +418,6 @@ protected virtual void OnServerToClientDeltaSync(byte baselineTick, Vector3 posi
// don't apply for local player with authority // don't apply for local player with authority
if (IsClientWithAuthority) return; if (IsClientWithAuthority) return;
// ensure this delta is for our last known baseline.
// we should never apply a delta on top of a wrong baseline.
if (baselineTick != lastDeserializedBaselineTick)
{
// debug draw: drop
if (debugDraw)
{
Debug.DrawLine(position, position + Vector3.up, Color.red, 10f);
}
// this can happen if unreliable arrives before reliable etc.
// no need to log this except when debugging.
Debug.LogWarning($"[{name}] Client: received delta for wrong baseline #{baselineTick}. Last was {lastDeserializedBaselineTick}. Ignoring.");
return;
}
// Debug.Log($"[{name}] Client: received delta for baseline #{baselineTick}"); // Debug.Log($"[{name}] Client: received delta for baseline #{baselineTick}");
// on the client, we receive rpcs for all entities. // on the client, we receive rpcs for all entities.
@ -694,13 +647,8 @@ void UpdateServer()
// should we broadcast at all? // should we broadcast at all?
if (!disableSendingThisToClients) // CUSTOM CHANGE: see comment at definition if (!disableSendingThisToClients) // CUSTOM CHANGE: see comment at definition
{ {
// only broadcast for server owned objects. UpdateServerBaseline(localTime);
// otherwise server would overwrite ClientToServer object's baselines. UpdateServerDelta(localTime);
if (syncDirection == SyncDirection.ServerToClient || IsClientWithAuthority)
{
UpdateServerBaseline(localTime);
UpdateServerDelta(localTime);
}
} }
// interpolate remote clients // interpolate remote clients
@ -1090,8 +1038,6 @@ public override void OnDeserialize(NetworkReader reader, bool initialState)
Vector3 position = Vector3.zero; Vector3 position = Vector3.zero;
Quaternion rotation = Quaternion.identity; Quaternion rotation = Quaternion.identity;
Debug.Log($"{name} OnDeserialize sets new baseline := {lastDeserializedBaselineTick}");
if (syncPosition) if (syncPosition)
{ {
position = reader.ReadVector3(); position = reader.ReadVector3();

View File

@ -26,13 +26,13 @@ Transform:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3342527215728230228} m_GameObject: {fileID: 3342527215728230228}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 1.4999999, z: 0} m_LocalPosition: {x: 0, y: 1.4999999, z: 0}
m_LocalScale: {x: 0.099999994, y: 0.099999994, z: 0.099999994} m_LocalScale: {x: 0.099999994, y: 0.099999994, z: 0.099999994}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 4659514702152478195} m_Father: {fileID: 4659514702152478195}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!23 &6511570575193480752 --- !u!23 &6511570575193480752
MeshRenderer: MeshRenderer:
@ -51,6 +51,8 @@ MeshRenderer:
m_ReflectionProbeUsage: 1 m_ReflectionProbeUsage: 1
m_RayTracingMode: 2 m_RayTracingMode: 2
m_RayTraceProcedural: 0 m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_RenderingLayerMask: 1 m_RenderingLayerMask: 1
m_RendererPriority: 0 m_RendererPriority: 0
m_Materials: m_Materials:
@ -135,13 +137,13 @@ Transform:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4592122871669721618} m_GameObject: {fileID: 4592122871669721618}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0.39999998, z: 0.5} m_LocalPosition: {x: 0, y: 0.39999998, z: 0.5}
m_LocalScale: {x: 0.5, y: 0.1, z: 0.2} m_LocalScale: {x: 0.5, y: 0.1, z: 0.2}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 3834521907656645861} m_Father: {fileID: 3834521907656645861}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &7450643213444322531 --- !u!33 &7450643213444322531
MeshFilter: MeshFilter:
@ -168,6 +170,8 @@ MeshRenderer:
m_ReflectionProbeUsage: 1 m_ReflectionProbeUsage: 1
m_RayTracingMode: 2 m_RayTracingMode: 2
m_RayTraceProcedural: 0 m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_RenderingLayerMask: 4294967295 m_RenderingLayerMask: 4294967295
m_RendererPriority: 0 m_RendererPriority: 0
m_Materials: m_Materials:
@ -218,6 +222,7 @@ Transform:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5844787331012650587} m_GameObject: {fileID: 5844787331012650587}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
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}
@ -225,7 +230,6 @@ Transform:
m_Children: m_Children:
- {fileID: 5246057292441020322} - {fileID: 5246057292441020322}
m_Father: {fileID: 4659514702152478195} m_Father: {fileID: 4659514702152478195}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &7647174189108629449 --- !u!33 &7647174189108629449
MeshFilter: MeshFilter:
@ -252,6 +256,8 @@ MeshRenderer:
m_ReflectionProbeUsage: 1 m_ReflectionProbeUsage: 1
m_RayTracingMode: 2 m_RayTracingMode: 2
m_RayTraceProcedural: 0 m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_RenderingLayerMask: 1 m_RenderingLayerMask: 1
m_RendererPriority: 0 m_RendererPriority: 0
m_Materials: m_Materials:
@ -308,6 +314,7 @@ Transform:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7863680369626900553} m_GameObject: {fileID: 7863680369626900553}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1.1, z: 0} m_LocalPosition: {x: 0, y: 1.1, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
@ -316,7 +323,6 @@ Transform:
- {fileID: 3834521907656645861} - {fileID: 3834521907656645861}
- {fileID: 3595398802692822242} - {fileID: 3595398802692822242}
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!136 &4284051235536850638 --- !u!136 &4284051235536850638
CapsuleCollider: CapsuleCollider:
@ -326,8 +332,17 @@ CapsuleCollider:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7863680369626900553} m_GameObject: {fileID: 7863680369626900553}
m_Material: {fileID: 0} m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0 m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1 m_Enabled: 1
serializedVersion: 2
m_Radius: 0.5 m_Radius: 0.5
m_Height: 2 m_Height: 2
m_Direction: 1 m_Direction: 1
@ -340,9 +355,17 @@ CharacterController:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7863680369626900553} m_GameObject: {fileID: 7863680369626900553}
m_Material: {fileID: 0} m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0 m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 0 m_Enabled: 0
serializedVersion: 2 serializedVersion: 3
m_Height: 2 m_Height: 2
m_Radius: 0.5 m_Radius: 0.5
m_SlopeLimit: 45 m_SlopeLimit: 45
@ -357,10 +380,21 @@ Rigidbody:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7863680369626900553} m_GameObject: {fileID: 7863680369626900553}
serializedVersion: 2 serializedVersion: 4
m_Mass: 1 m_Mass: 1
m_Drag: 0 m_Drag: 0
m_AngularDrag: 0.05 m_AngularDrag: 0.05
m_CenterOfMass: {x: 0, y: 0, z: 0}
m_InertiaTensor: {x: 1, y: 1, z: 1}
m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_ImplicitCom: 1
m_ImplicitTensor: 1
m_UseGravity: 1 m_UseGravity: 1
m_IsKinematic: 1 m_IsKinematic: 1
m_Interpolate: 0 m_Interpolate: 0
@ -445,7 +479,6 @@ MonoBehaviour:
syncPosition: 1 syncPosition: 1
syncRotation: 1 syncRotation: 1
disableSendingThisToClients: 0 disableSendingThisToClients: 0
debugDraw: 1
showGizmos: 1 showGizmos: 1
showOverlay: 1 showOverlay: 1
overlayColor: {r: 0, g: 0, b: 0, a: 0.5} overlayColor: {r: 0, g: 0, b: 0, a: 0.5}
@ -465,8 +498,7 @@ MonoBehaviour:
syncMode: 0 syncMode: 0
syncInterval: 0 syncInterval: 0
characterController: {fileID: 1014105431373575527} characterController: {fileID: 1014105431373575527}
ControllerUIPrefab: {fileID: 644766297742565710, guid: 7beee247444994f0281dadde274cc4af, ControllerUIPrefab: {fileID: 644766297742565710, guid: 7beee247444994f0281dadde274cc4af, type: 3}
type: 3}
moveKeys: moveKeys:
Forward: 119 Forward: 119
Back: 115 Back: 115

View File

@ -13,7 +13,7 @@ OcclusionCullingSettings:
--- !u!104 &2 --- !u!104 &2
RenderSettings: RenderSettings:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
serializedVersion: 9 serializedVersion: 10
m_Fog: 0 m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3 m_FogMode: 3
@ -44,7 +44,6 @@ RenderSettings:
LightmapSettings: LightmapSettings:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
serializedVersion: 12 serializedVersion: 12
m_GIWorkflowMode: 1
m_GISettings: m_GISettings:
serializedVersion: 2 serializedVersion: 2
m_BounceScale: 1 m_BounceScale: 1
@ -67,9 +66,6 @@ LightmapSettings:
m_LightmapParameters: {fileID: 0} m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1 m_LightmapsBakeMode: 1
m_TextureCompression: 1 m_TextureCompression: 1
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 256
m_ReflectionCompression: 2 m_ReflectionCompression: 2
m_MixedBakeMode: 2 m_MixedBakeMode: 2
m_BakeBackend: 1 m_BakeBackend: 1
@ -97,15 +93,14 @@ LightmapSettings:
m_ExportTrainingData: 0 m_ExportTrainingData: 0
m_TrainingDataDestination: TrainingData m_TrainingDataDestination: TrainingData
m_LightProbeSampleCountMultiplier: 4 m_LightProbeSampleCountMultiplier: 4
m_LightingDataAsset: {fileID: 112000000, guid: 7dde303f10b9fde4fae4878d2c9f360f, m_LightingDataAsset: {fileID: 112000000, guid: 7dde303f10b9fde4fae4878d2c9f360f, type: 2}
type: 2}
m_LightingSettings: {fileID: 0} m_LightingSettings: {fileID: 0}
--- !u!196 &4 --- !u!196 &4
NavMeshSettings: NavMeshSettings:
serializedVersion: 2 serializedVersion: 2
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
m_BuildSettings: m_BuildSettings:
serializedVersion: 2 serializedVersion: 3
agentTypeID: 0 agentTypeID: 0
agentRadius: 0.5 agentRadius: 0.5
agentHeight: 2 agentHeight: 2
@ -118,7 +113,7 @@ NavMeshSettings:
cellSize: 0.16666667 cellSize: 0.16666667
manualTileSize: 0 manualTileSize: 0
tileSize: 256 tileSize: 256
accuratePlacement: 0 buildHeightMesh: 0
maxJobWorkers: 0 maxJobWorkers: 0
preserveTilesOutsideBounds: 0 preserveTilesOutsideBounds: 0
debug: debug:
@ -164,9 +159,17 @@ Camera:
m_projectionMatrixMode: 1 m_projectionMatrixMode: 1
m_GateFitMode: 2 m_GateFitMode: 2
m_FOVAxisMode: 0 m_FOVAxisMode: 0
m_Iso: 200
m_ShutterSpeed: 0.005
m_Aperture: 16
m_FocusDistance: 10
m_FocalLength: 50
m_BladeCount: 5
m_Curvature: {x: 2, y: 11}
m_BarrelClipping: 0.25
m_Anamorphism: 0
m_SensorSize: {x: 36, y: 24} m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0} m_LensShift: {x: 0, y: 0}
m_FocalLength: 50
m_NormalizedViewPortRect: m_NormalizedViewPortRect:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
@ -200,13 +203,13 @@ Transform:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 361955662} m_GameObject: {fileID: 361955662}
serializedVersion: 2
m_LocalRotation: {x: 0.15731035, y: 0.072513655, z: -0.011583021, w: 0.98481524} m_LocalRotation: {x: 0.15731035, y: 0.072513655, z: -0.011583021, w: 0.98481524}
m_LocalPosition: {x: -402.78363, y: 31.230488, z: -13.799797} m_LocalPosition: {x: -402.78363, y: 31.230488, z: -13.799797}
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: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &856494733 --- !u!1 &856494733
GameObject: GameObject:
@ -304,10 +307,21 @@ Rigidbody:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 856494733} m_GameObject: {fileID: 856494733}
serializedVersion: 2 serializedVersion: 4
m_Mass: 1 m_Mass: 1
m_Drag: 0 m_Drag: 0
m_AngularDrag: 0.05 m_AngularDrag: 0.05
m_CenterOfMass: {x: 0, y: 0, z: 0}
m_InertiaTensor: {x: 1, y: 1, z: 1}
m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_ImplicitCom: 1
m_ImplicitTensor: 1
m_UseGravity: 1 m_UseGravity: 1
m_IsKinematic: 1 m_IsKinematic: 1
m_Interpolate: 0 m_Interpolate: 0
@ -321,10 +335,18 @@ BoxCollider:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 856494733} m_GameObject: {fileID: 856494733}
m_Material: {fileID: 0} m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0 m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1 m_Enabled: 1
serializedVersion: 2 serializedVersion: 3
m_Size: {x: 2, y: 2, z: 2} m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0} m_Center: {x: 0, y: 0, z: 0}
--- !u!23 &856494739 --- !u!23 &856494739
MeshRenderer: MeshRenderer:
@ -343,6 +365,8 @@ MeshRenderer:
m_ReflectionProbeUsage: 1 m_ReflectionProbeUsage: 1
m_RayTracingMode: 2 m_RayTracingMode: 2
m_RayTraceProcedural: 0 m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_RenderingLayerMask: 1 m_RenderingLayerMask: 1
m_RendererPriority: 0 m_RendererPriority: 0
m_Materials: m_Materials:
@ -383,13 +407,13 @@ Transform:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 856494733} m_GameObject: {fileID: 856494733}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 2, z: -200} m_LocalPosition: {x: 0, y: 2, z: -200}
m_LocalScale: {x: 4, y: 4, z: 4} m_LocalScale: {x: 4, y: 4, z: 4}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &890531170 --- !u!1 &890531170
GameObject: GameObject:
@ -427,13 +451,13 @@ Transform:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 890531170} m_GameObject: {fileID: 890531170}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -325, y: 11.02, z: -6} m_LocalPosition: {x: -325, y: 11.02, z: -6}
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: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &980545347 --- !u!1 &980545347
GameObject: GameObject:
@ -471,13 +495,13 @@ Transform:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 980545347} m_GameObject: {fileID: 980545347}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -325, y: 11.02, z: -10} m_LocalPosition: {x: -325, y: 11.02, z: -10}
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: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1175360880 --- !u!1 &1175360880
GameObject: GameObject:
@ -515,13 +539,13 @@ Transform:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1175360880} m_GameObject: {fileID: 1175360880}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -325, y: 11.02, z: -14} m_LocalPosition: {x: -325, y: 11.02, z: -14}
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: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 6
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1177316161 --- !u!1 &1177316161
GameObject: GameObject:
@ -550,7 +574,16 @@ TerrainCollider:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1177316161} m_GameObject: {fileID: 1177316161}
m_Material: {fileID: 0} m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_ProvidesContacts: 0
m_Enabled: 1 m_Enabled: 1
serializedVersion: 2
m_TerrainData: {fileID: 15600000, guid: 3a63939a39af1904d908274fdcd10fb6, type: 2} m_TerrainData: {fileID: 15600000, guid: 3a63939a39af1904d908274fdcd10fb6, type: 2}
m_EnableTreeColliders: 1 m_EnableTreeColliders: 1
--- !u!218 &1177316163 --- !u!218 &1177316163
@ -571,22 +604,28 @@ Terrain:
m_DetailObjectDensity: 1 m_DetailObjectDensity: 1
m_HeightmapPixelError: 5 m_HeightmapPixelError: 5
m_SplatMapDistance: 1000 m_SplatMapDistance: 1000
m_HeightmapMinimumLODSimplification: 0
m_HeightmapMaximumLOD: 0 m_HeightmapMaximumLOD: 0
m_ShadowCastingMode: 2 m_ShadowCastingMode: 2
m_DrawHeightmap: 1 m_DrawHeightmap: 1
m_DrawInstanced: 0 m_DrawInstanced: 0
m_DrawTreesAndFoliage: 1 m_DrawTreesAndFoliage: 1
m_StaticShadowCaster: 0 m_StaticShadowCaster: 0
m_IgnoreQualitySettings: 0
m_ReflectionProbeUsage: 1 m_ReflectionProbeUsage: 1
m_MaterialTemplate: {fileID: 10650, guid: 0000000000000000f000000000000000, type: 0} m_MaterialTemplate: {fileID: 10650, guid: 0000000000000000f000000000000000, type: 0}
m_BakeLightProbesForTrees: 1 m_BakeLightProbesForTrees: 1
m_PreserveTreePrototypeLayers: 0 m_PreserveTreePrototypeLayers: 0
m_DeringLightProbesForTrees: 1 m_DeringLightProbesForTrees: 1
m_ReceiveGI: 1
m_ScaleInLightmap: 0.0256 m_ScaleInLightmap: 0.0256
m_LightmapParameters: {fileID: 15203, guid: 0000000000000000f000000000000000, type: 0} m_LightmapParameters: {fileID: 15203, guid: 0000000000000000f000000000000000, type: 0}
m_GroupingID: 0 m_GroupingID: 0
m_RenderingLayerMask: 1 m_RenderingLayerMask: 1
m_AllowAutoConnect: 1 m_AllowAutoConnect: 1
m_EnableHeightmapRayTracing: 1
m_EnableTreesAndDetailsRayTracing: 0
m_TreeMotionVectorModeOverride: 3
--- !u!4 &1177316164 --- !u!4 &1177316164
Transform: Transform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -594,13 +633,13 @@ Transform:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1177316161} m_GameObject: {fileID: 1177316161}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -500, y: 0, z: -500} m_LocalPosition: {x: -500, y: 0, z: -500}
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: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 8
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1177316165 --- !u!114 &1177316165
MonoBehaviour: MonoBehaviour:
@ -654,13 +693,13 @@ Transform:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1708370876} m_GameObject: {fileID: 1708370876}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -325, y: 11.02, z: -18} m_LocalPosition: {x: -325, y: 11.02, z: -18}
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: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 7
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &2078663351 --- !u!1 &2078663351
GameObject: GameObject:
@ -687,9 +726,8 @@ Light:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2078663351} m_GameObject: {fileID: 2078663351}
m_Enabled: 1 m_Enabled: 1
serializedVersion: 10 serializedVersion: 11
m_Type: 1 m_Type: 1
m_Shape: 0
m_Color: {r: 0.6226415, g: 0.6226415, b: 0.6226415, a: 1} m_Color: {r: 0.6226415, g: 0.6226415, b: 0.6226415, a: 1}
m_Intensity: 0.5 m_Intensity: 0.5
m_Range: 10 m_Range: 10
@ -748,13 +786,13 @@ Transform:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2078663351} m_GameObject: {fileID: 2078663351}
serializedVersion: 2
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
m_LocalPosition: {x: 0, y: 3, z: 0} m_LocalPosition: {x: 0, y: 3, 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: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
--- !u!1 &2126814503 --- !u!1 &2126814503
GameObject: GameObject:
@ -812,13 +850,13 @@ Transform:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2126814503} m_GameObject: {fileID: 2126814503}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
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: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &2126814506 --- !u!114 &2126814506
MonoBehaviour: MonoBehaviour:
@ -846,8 +884,7 @@ MonoBehaviour:
disconnectInactiveConnections: 0 disconnectInactiveConnections: 0
disconnectInactiveTimeout: 60 disconnectInactiveTimeout: 60
authenticator: {fileID: 0} authenticator: {fileID: 0}
playerPrefab: {fileID: 7863680369626900553, guid: 0febcff3b53ac2341933e3386498cbbd, playerPrefab: {fileID: 7863680369626900553, guid: 0febcff3b53ac2341933e3386498cbbd, type: 3}
type: 3}
autoCreatePlayer: 1 autoCreatePlayer: 1
playerSpawnMethod: 1 playerSpawnMethod: 1
spawnPrefabs: [] spawnPrefabs: []
@ -866,9 +903,8 @@ MonoBehaviour:
evaluationMethod: 0 evaluationMethod: 0
evaluationInterval: 3 evaluationInterval: 3
timeInterpolationGui: 1 timeInterpolationGui: 1
spawnHenchman: 0 spawnHenchman: 1
henchmanPrefab: {fileID: 7863680369626900553, guid: 400bac1c9e1e96648a83f333d4837484, henchmanPrefab: {fileID: 7863680369626900553, guid: 400bac1c9e1e96648a83f333d4837484, type: 3}
type: 3}
--- !u!114 &2126814507 --- !u!114 &2126814507
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -897,3 +933,16 @@ MonoBehaviour:
m_EditorClassIdentifier: m_EditorClassIdentifier:
showGUI: 1 showGUI: 1
showLog: 0 showLog: 0
--- !u!1660057539 &9223372036854775807
SceneRoots:
m_ObjectHideFlags: 0
m_Roots:
- {fileID: 361955665}
- {fileID: 2078663353}
- {fileID: 1177316164}
- {fileID: 856494741}
- {fileID: 2126814505}
- {fileID: 890531172}
- {fileID: 980545349}
- {fileID: 1175360882}
- {fileID: 1708370878}