From 65450ed71b982c7a936e29736c30d55c9af09028 Mon Sep 17 00:00:00 2001 From: SnpM Date: Sun, 14 Aug 2016 21:51:41 -0600 Subject: [PATCH] Fix replay deserialization; Fix bug when Move.Speed set to 0; Add command SendOut check every Visualize frame in addition to Simulate frame (better responsiveness); Remove Immediate sending out of commands (obsolete with Visualize SendOut checks); Various Tweaks; --- Core/Game/Abilities/Essential/Move.cs | 2 +- Core/Game/Managers/LockstepManager.cs | 1 + Core/Game/Managers/ReplayManager.cs | 2 +- Core/Game/Player/Commands/CommandManager.cs | 198 +++++++++--------- .../ExampleDatabase/Example_Database.asset | Bin 4724 -> 1636 bytes Example/ExampleGameManager.cs | 27 +-- Example/ExampleScene.unity | Bin 113880 -> 187710 bytes Example/TestAgent.prefab | 45 ++-- .../DefaultLockstepFrameworkSettings.asset | Bin 4208 -> 466 bytes 9 files changed, 148 insertions(+), 127 deletions(-) mode change 100755 => 100644 Example/TestAgent.prefab diff --git a/Core/Game/Abilities/Essential/Move.cs b/Core/Game/Abilities/Essential/Move.cs index 841ecd58..1b19a726 100755 --- a/Core/Game/Abilities/Essential/Move.cs +++ b/Core/Game/Abilities/Essential/Move.cs @@ -26,7 +26,7 @@ public class Move : ActiveAbility private int RepathRate { - get { return FixedMath.Create(repathRate).Div(this.Speed).CeilToInt(); } + get { return FixedMath.Create(repathRate).Div(this.Speed > FixedMath.One ? this.Speed : FixedMath.One).CeilToInt(); } } private const int straightRepathRate = repathRate * 4; diff --git a/Core/Game/Managers/LockstepManager.cs b/Core/Game/Managers/LockstepManager.cs index 4c80ba92..73282274 100755 --- a/Core/Game/Managers/LockstepManager.cs +++ b/Core/Game/Managers/LockstepManager.cs @@ -307,6 +307,7 @@ internal static void Visualize () AgentController.Visualize (); ProjectileManager.Visualize (); EffectManager.Visualize (); + CommandManager.Visualize(); } diff --git a/Core/Game/Managers/ReplayManager.cs b/Core/Game/Managers/ReplayManager.cs index 060cd42a..64a9979a 100755 --- a/Core/Game/Managers/ReplayManager.cs +++ b/Core/Game/Managers/ReplayManager.cs @@ -92,7 +92,7 @@ public static Frame[] Deserialize (Reader reader) { bufferFrames.Clear(); int length = reader.ReadInt(); - int lastSavedFrame = 0; + int lastSavedFrame = -1; while (reader.Position < reader.Length) { int frameCount = reader.ReadInt(); diff --git a/Core/Game/Player/Commands/CommandManager.cs b/Core/Game/Player/Commands/CommandManager.cs index 34a67d9f..50962072 100755 --- a/Core/Game/Player/Commands/CommandManager.cs +++ b/Core/Game/Player/Commands/CommandManager.cs @@ -1,99 +1,101 @@ -using System; -using UnityEngine; -using System.Collections.Generic; -namespace Lockstep -{ - public static class CommandManager - { - - #region Recording - - - #endregion - - static readonly FastList bufferedBytes = new FastList(256); - - public static void Initialize() - { - } - - public static void Simulate() - { - SendOut(); - } - - public static void ProcessPacket(byte[] packet) - { - processBytes.FastClear(); - processBytes.AddRange(packet); - ProcessPacket(processBytes); - } - - static FastList processBytes = new FastList(); - - public static void ProcessPacket(FastList packet) - { - - if (packet == null || packet.Count < 4) - { - throw new System.Exception("Packet is null or not valid length"); - } - int frameCount = BitConverter.ToInt32(packet.innerArray, 0); - int index = 4; - - Frame frame = new Frame(); - - if (packet.Count > 4) - { - while (index < packet.Count) - { - Command com = new Command(); - index += com.Reconstruct(packet.innerArray, index); - frame.AddCommand(com); - } - } - ProcessFrame(frameCount, frame); - - } - - public static void ProcessFrame(int frameCount, Frame frame) - { - if (FrameManager.HasFrame(frameCount) == false) - { - FrameManager.AddFrame(frameCount, frame); - } - - } - - /// - /// Sends out all Commands - /// - public static void SendOut() - { - - if (bufferedBytes.Count > 0) - { - ClientManager.Distribute(bufferedBytes.ToArray()); - bufferedBytes.FastClear(); - } - - - } - //static FastList asdf = new FastList(); - public static void SendCommand(Command com, bool immediate = false) - { - if (com == null) - { - return; - } - - bufferedBytes.AddRange(com.Serialized); - if (immediate) - { - - SendOut(); - } - } - } - +using System; +using UnityEngine; +using System.Collections.Generic; +namespace Lockstep +{ + public static class CommandManager + { + + #region Recording + + + #endregion + + static readonly FastList bufferedBytes = new FastList(256); + + public static void Initialize() + { + } + + public static void Simulate() + { + SendOut(); + } + public static void Visualize() + { + SendOut(); + } + + public static void ProcessPacket(byte[] packet) + { + processBytes.FastClear(); + processBytes.AddRange(packet); + ProcessPacket(processBytes); + } + + static FastList processBytes = new FastList(); + + public static void ProcessPacket(FastList packet) + { + if (ReplayManager.IsPlayingBack) return; + if (packet == null || packet.Count < 4) + { + throw new System.Exception("Packet is null or not valid length"); + } + int frameCount = BitConverter.ToInt32(packet.innerArray, 0); + + int index = 4; + + Frame frame = new Frame(); + + if (packet.Count > 4) + { + + while (index < packet.Count) + { + Command com = new Command(); + index += com.Reconstruct(packet.innerArray, index); + frame.AddCommand(com); + } + + } + ProcessFrame(frameCount, frame); + } + + public static void ProcessFrame(int frameCount, Frame frame) + { + if (FrameManager.HasFrame(frameCount) == false) + { + FrameManager.AddFrame(frameCount, frame); + } + + } + + /// + /// Sends out all Commands + /// + public static void SendOut() + { + + if (bufferedBytes.Count > 0) + { + ClientManager.Distribute(bufferedBytes.ToArray()); + bufferedBytes.FastClear(); + } + + + } + //static FastList asdf = new FastList(); + public static void SendCommand(Command com) + { + if (com == null) + { + return; + } + + bufferedBytes.AddRange(com.Serialized); + + } + } + } \ No newline at end of file diff --git a/Example/ExampleDatabase/Example_Database.asset b/Example/ExampleDatabase/Example_Database.asset index 76fd0ddb69019b53226ca347f7254b07b98ae724..876aea4e2c10be0f41bcd9e73021778acecba4d6 100644 GIT binary patch literal 1636 zcmb`HO^@0z5Qgvk3h!Zi0u(!6kQ)n>A}#HzaH*;ajXwfzlQ>EYDysV5>j?`Yf|a%s z91y%7zdSSZhR1KC#WSIO+Id`!X5?Y_KrC#MU7_v4mwjRKF7qf&I=x;GPbm$^2lwXT ztFthLc~V>0YqP784k7va3;(Hv{iLP(n8Bt_h}Xz3l}drXK&1+MEJ?_pRA*{FaV38* zYUYJiRRP)c`3!RP*4=3VJX10uw6U5>ZB2DWu@sdq?S(U?Vbe*MY z?raSk_Z^FIVm-1h8kd!-?Fdht=!&GO8(3|M=9ZJRz|ZZeIk{{`dvQQL&!^t0r5I$& zBFVytMR5=YoJZ-9hhY$VUPxtpYKdV>Yh9GPYqn*ngoX@fd**%B*bU9Up#_)P*i@=z zhC<5;g_aEpEswcXdCLQZmIn$g4;0YDjm%(5UHopY;c1s;>JEE|;)tF15X3`4Idh|z z122dIHUJ4yrZnP#FVvvD2bHD{u%RR0e;_k(owU7oh4E`H3QXx& zl_uobh+nl;WglI;WK`EG=h>k*UT&c(k3W-XS5eF{C}SgC{!hDV;***x2kTNh1G~k< zw|2A?P~0CDUH=Cbk#57b;V0_RRgNl7nV`2>Qpbx&7Xd(~B7auh7!5B$=!218s?B33;x4fHllGA(U zH)sBH?m2hwOhwil7HRiIzF9?{CiU{Cd7K z-?Zx0b6;j(I{Wu8$@Aa+@zMT;BX5@xw;REXZ?&ZMph%7P;S?UZCGRv#?PFYv0WmH# z{uTKid=17X7-KDXKjF?BanAVW2v0!gcAT%OUkl?cd7(*a7wS6kNPJYMCBmaRt%_UH z3!T}z4xce#$fqsBqdKbd(CzoX65S zTobU6N1u!CDV-7MzYiVOpDnd&LAM6_ntlg)Ke?{Ye&W`ENA+(~+>*`kAAm8>n=#61-lOZ^qPVVqD><6R z=YCSppE{i?J{IJURs{O%6pw59-v(}tP^U$!&wBDezeTGL*JH>-{b8K*xf?Ks`Rn={ zflc~%kQ?;xR6Hh=@Ut+kolUTCzH#mMau;x@6PM^Zxm)p=%)oyRMxA?LCY{Z|CY>#c zTXG8iYcS6DUW}%G-KV(TuP*XnzIwm9RlMG>gyMQV?*}*4b1S)_p7vcu8uNdM+>rmnitFp`5pa|KPR5VGmaOMpN=IMM zk1DROw?1&wI@zt__4U@TxW3-_`!nh6QSrJ?QgKVZfd4Iw{Tjq*>Q_o}yFE91r?}p)ad1;V)a!ge zalKy?%jj?~GVKos6}RL^_`kx~uO~2?`gKTgyir4$~wBq{yfUg{5J)a>r z^lM6SyZ>`$KE297!eDE zQ?iSWWTu^J&T}h1ZVxp#O;kMBclspb<`f%7?7r+VC+CA#JST5wC0(kVh$y>_QyKTl zj6@=f&#h=oQu#b07B4&MTn4gk!S&}Bui1-0k_Ee3ot&#U2b{d)Ii(zC5autL9It^( zrr=glks!Zhc^V;ZDPQ)AHYYiZvN#@=g-HLOXIaeP@SDPAqwl>w|5v)bE87u3dG~U*+sO{6KEL$YL0>wahY}9|n{#IlzuZ4`>f*)A_UKoy zgfzIc@@J(2D;4;ERiM5d1lvMmPvF0nsgriGQgAZduCjKOZ=E2f4dbL!^@Ht~aLK{# z;D;AORsQ>d9bG0WPR_Lp+amtkXfu==AvpXvEWR z#M5uY(`P(0TMgqJ_M9jb93Ll34sL%JA{!fDPqe+|S!YS8tOpn?=Z<4zt|S=HwPB!I zb&A=-Tz7I}#`Y?U`7#$ipIQ?+J9y*4RfndONe&|{VFlaUIpvI(U X|3_mZc)B!e^A$X3&m|ah1sVAlO1zdx diff --git a/Example/ExampleGameManager.cs b/Example/ExampleGameManager.cs index cf855e2b..adc93d25 100755 --- a/Example/ExampleGameManager.cs +++ b/Example/ExampleGameManager.cs @@ -11,21 +11,24 @@ void OnGUI () { GUI.matrix = Matrix4x4.TRS (new Vector3(0, 0, 0), Quaternion.identity, new Vector3 (2.5f, 2.5f, 1)); - if (ReplayManager.CurrentReplay != null) - { - if (GUILayout.Button ("Stop")) { - ReplayManager.CurrentReplay = null; - ReplayManager.Stop (); - LSUtility.LoadLevel (SceneManager.GetActiveScene().name); - } - if (GUILayout.Button ("Rewind")) { - ReplayManager.Play (LastSave); - LSUtility.LoadLevel (SceneManager.GetActiveScene().name); + if (ReplayManager.IsPlayingBack) { + if (ReplayManager.CurrentReplay != null) + { + if (GUILayout.Button("Stop")) + { + ReplayManager.CurrentReplay = null; + ReplayManager.Stop(); + LSUtility.LoadLevel(SceneManager.GetActiveScene().name); + } + + if (GUILayout.Button("Rewind")) + { + ReplayManager.Play(LastSave); + LSUtility.LoadLevel(SceneManager.GetActiveScene().name); + } } - } - if (ReplayManager.IsPlayingBack) { } else { if (GUILayout.Button ("Restart")) { LSUtility.LoadLevel (SceneManager.GetActiveScene().name); diff --git a/Example/ExampleScene.unity b/Example/ExampleScene.unity index 8d0e2feeb8de258311b750d358a23eba6ae4903b..ad22337358bf87f2f1451813fb05f09b6edbbc76 100644 GIT binary patch literal 187710 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 TWG~6N%Hx&z#@@e-Q|x~L0{jvl diff --git a/Example/TestAgent.prefab b/Example/TestAgent.prefab old mode 100755 new mode 100644 index ff7520b2..bd2ff148 --- a/Example/TestAgent.prefab +++ b/Example/TestAgent.prefab @@ -66,6 +66,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0.48} m_LocalScale: {x: 0.5, y: 0.5, z: 0.6} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] m_Father: {fileID: 450234} m_RootOrder: 0 @@ -78,6 +79,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0.6, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: - {fileID: 422538} m_Father: {fileID: 465378} @@ -89,8 +91,9 @@ Transform: m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 100310} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0.778} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: - {fileID: 450234} m_Father: {fileID: 0} @@ -104,17 +107,20 @@ MeshRenderer: m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 m_Materials: - {fileID: 2100000, guid: b30447a543b0c4e6b9494c581702fd8c, type: 2} m_SubsetIndices: m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 1 - m_ReflectionProbeUsage: 1 m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_PreserveUVs: 1 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 @@ -130,17 +136,20 @@ MeshRenderer: m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 m_Materials: - {fileID: 2100000, guid: b30447a543b0c4e6b9494c581702fd8c, type: 2} m_SubsetIndices: m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 1 - m_ReflectionProbeUsage: 1 m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_PreserveUVs: 1 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 @@ -185,6 +194,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: _mapIndex: 0 + _bonusHeight: 0 --- !u!114 &11425566 MonoBehaviour: m_ObjectHideFlags: 1 @@ -196,6 +206,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: a7cc9ef18533c9f4c943ac00aab4efd7, type: 3} m_Name: m_EditorClassIdentifier: + _cooldown: 0 Destination: x: 0 y: 0 @@ -204,6 +215,7 @@ MonoBehaviour: _speed: 131072 _acceleration: 65536 _canPathfind: 0 + StopTimer: 0 DrawPath: 1 --- !u!114 &11439568 MonoBehaviour: @@ -231,6 +243,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: _maxHealth: 65536000 + _currentHealth: 0 --- !u!114 &11479720 MonoBehaviour: m_ObjectHideFlags: 1 @@ -242,17 +255,23 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: f4525e3f8c8889d43a4d23626ea32d54, type: 3} m_Name: m_EditorClassIdentifier: + _cooldown: 0 _projectileCode: TestBullet _range: 786432 _sight: 655360 _damage: 65536 _attackRate: 32 _targetAllegiance: 4 - _targetPlatform: 4 _trackAttackAngle: 1 _attackAngle: 11380 - _energyCost: 0 - _projectileOrigin: {x: 0, y: 0, z: 1.273089} + _projectileOffset: + x: 0 + y: 0 + z: 0 + _secondaryProjectileOffsets: [] + _cycleProjectiles: 0 + _windup: 0 + _increasePriority: 1 --- !u!114 &11485440 MonoBehaviour: m_ObjectHideFlags: 1 @@ -267,15 +286,10 @@ MonoBehaviour: _deathTime: 64 _agentType: 0 _globalID: 0 - _statsBarOffset: {x: 0, y: 1, z: 0} _boxPriority: 0 _selectionPriority: 0 - _attachedAbilities: [] - _body: {fileID: 0} - _triggers: [] - _animator: {fileID: 0} - _cachedTransform: {fileID: 0} - _cachedGameObject: {fileID: 0} + _selectable: 1 + TypeIndex: 0 Tag: 0 _selectionRadius: 1 _visualCenter: {fileID: 465378} @@ -320,6 +334,7 @@ MonoBehaviour: _height: 65536 _positionalTransform: {fileID: 465378} _rotationalTransform: {fileID: 465378} + _rotationOffset: {x: 0, y: 0, z: 0} --- !u!1001 &100100000 Prefab: m_ObjectHideFlags: 1 diff --git a/Resources/DefaultLockstepFrameworkSettings.asset b/Resources/DefaultLockstepFrameworkSettings.asset index 7fc250dc06f51e9ad59e21e16cbc6bac82f93d77..4acf87f460e8854d87869f69379423a951c833d9 100644 GIT binary patch literal 466 zcmZ{gOK-w35QOjf73M%sfb3w5;~OoHB0-BpFFheYHmOU9k>j*NRsVYp2!w>{gAY5i zqi?7EK3Xmi>5-)UHkzSU(?UTOqN!{+^i5B@T_?qah@{)?9#ujpdWauBzGUet_Xr>I z%euyk1fkvLRegdE&(^@SltnENK8;r%a;a9*Llw>zfqrsZ!h9Spzc-$F6~I@ryw_)P z2mkF(Dyd2^0+CbH#Mt2c9mQIEyALmTL-_bJ{n9Va7p{ zA;!ZF3Wq%i)ISryL?VI4@wBE43#Yerfc@0R>9_OSHH2WRqP`(|DrH^IO)SCY7Q8@F q+ZY+7l66eFHgakB!Ufte${{6$VNO#;Gs*@m!(4KfDRSjXf0I8Chm8XO literal 4208 zcmeH~y=xRf7{=eZ)tvDon)sa*T11G=q2xpm33qV$5U)5%sYkN$Hr|=shkNT+w}q&X zP6P!JtR$c!#>!H#u@NjRw2+j3fQ_J?=kv_&EtB9MU@-^p&O5(-=b4#j_KFd4>LNQ@ zBC;JV8j)j}Z05-PsQl@4I!Xbc?F@f>`tYzUe>zwCvGg^+diLe_k@Ablf&2O2w+_93 zJ9%dabp-_L(@MhQA|c12i;P^!V@JXjyxRc8x+wS*`2fBZZ3@9!h3qp%?m?gRj=?j~ zIe`AA_+3=55Bq^t%uOE#V_qr+{>kx5Eol1V*8;E6t~DEDQlFWqEqbR4NJ?%{ zMWXA5i_--+aOd2%HzqTcIK`a$m;3oFO7P?#h4%R*kx$HI_4;$&^7ECY2eYqde--;~ zXUq4#45nNBc17ORZ)Ey=rdIA&yx!&Nt4q36zp)SNfOWt+U>&dySO=^F)&c8)b-+6C zA2|?Th4huDd)GOL^%cB%_wr&;Y@T0e2VQH!ckABOroS-l1wpNGq0KGuqSL)Y{RMud Bo^AjD