private void RollbackTo(int tick, int maxContinueServerTick, bool isNeedClear = true) { _world.RollbackTo(tick, maxContinueServerTick, isNeedClear); var hash = _commonStateService.Hash; var curHash = _hashHelper.CalcHash(); if (hash != curHash) { Debug.LogError($"Rollback error: Hash isDiff oldHash ={hash} curHash{curHash}"); } }
public void DumpToFile(bool withCurFrame = false) { if (!enable) { return; } #if UNITY_EDITOR var path = dumpPath + "/cur.txt"; var dir = Path.GetDirectoryName(path); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } //var minTick = _tick2OverrideFrameData.Keys.Min(); StringBuilder sbResume = new StringBuilder(); StringBuilder sbRaw = new StringBuilder(); for (int i = 0; i <= Tick; i++) { sbRaw.AppendLine(_tick2RawFrameData[i].ToString()); sbResume.AppendLine(_tick2OverrideFrameData[i].ToString()); } File.WriteAllText(dumpPath + "/resume.txt", sbResume.ToString()); File.WriteAllText(dumpPath + "/raw.txt", sbRaw.ToString()); if (withCurFrame) { _curSb = DumpFrame(); var curHash = _hashHelper.CalcHash(true); File.WriteAllText(dumpPath + "/cur_single.txt", _curSb.ToString()); File.WriteAllText(dumpPath + "/raw_single.txt", _tick2RawFrameData[Tick].ToString()); } UnityEngine.Debug.Break(); #endif }
private bool RollbackTo(int tick, int maxContinueServerTick, bool isNeedClear = true) { _world.RollbackTo(tick, maxContinueServerTick, isNeedClear); var hash = _commonStateService.Hash; var curHash = _hashHelper.CalcHash(); if (hash != curHash) { Debug.LogError($"tick:{tick} Rollback error: Hash isDiff oldHash ={hash} curHash{curHash}"); #if UNITY_EDITOR _dumpHelper.DumpToFile(true); return(false); #endif } return(true); }