userDaniel Pcancel

3,041 Commits over 730 Days - 0.17cph!

28 Minutes Ago
Update: force TimeZone caching in WipeTimer.ServerInit While smashing TestMTSave(WipeTimer) I saw it NRE while resolving timezone. Couldn't repro again, but this should make it safe Tests: none, trivial change
32 Minutes Ago
Update: get rid of WipeTimer rounding to second, just pass DateTime from external source Old version would always have a sporadic fails when serialization test would run across second boundary, this way we can control it in tests Tests: a bunch of times for hacked version of TestMTSave(WipeTimer) that has 1k serialization tasks
1 Hour Ago
Update(tests): add various missing TestServer setup and unit testing bypass for entity logic Tests: ran all TestMTSave, no sporadic failures, except WipeTimer - guess my prev fix didn't work >.>
2 Hours Ago
Update: made MarketTerminal.Save MT friendly - get rid of TimeUntil aliases from Entity.proto - ran protobuf gen Doesn't need protocol update, as the underlying type/serialization doesn't change Tests: TestMTSave - all 636 tests pass, though gotta work on cleanup consistency
3 Hours Ago
Update: WipeTimer now returns time rounded to a second No change for gameplay, but makes serialization tests consistent Tests: 20 runs of TestMTSave(WipeTimer), all pass
3 Hours Ago
Update(tests): TestMTSave - move protobuf serialization to worker threads to catch more invalid API usages Revealed 2 failures Tests: ran all TestMTSave - MarketTerminal (TimeUnitl) and WipeTimer(missmatching stream) failed
3 Hours Ago
Bugfix: avoid Time call in ChickenCoop.Save to make it MT friendly - added chicken as part of test setup to trigger this path Tests: TestMTSave pass
4 Hours Ago
Update: BasePlayer - don't mutate own model state on save We modify the copy as we send it, and the original value should be modified on every tick, so should be safe Tests: none, trivial change
4 Hours Ago
Update: make ItemBlueprint.FindBlueprint MT friendly GetComponent is not thread safe, so caching item->blueprint pairs at init time Tests: setup TC, made sure it has right upkeep calculated
Today
Bugfix: BuildingPrivlidge(sic) - add GetOrUpdateProtectedMinutes that's MT safe and does a bit of a cheeky If we end up sending this entity to many players in 1 frame, it will update the cached protected minutes only for 1 player, and the rest are in limbo if they got old or new value. This gives us same perf as original lazy-eval solution. Tests: TestMTSave - got 0 fails!
Today
Update(tests): patch MapMarkerMissionProvider Tests: TestMTSave passes (down to 2)
Today
Update: TestServer now initializes PaintballColorLookup.instance Tests: TestMTSave - 5 -> 3 fails
Today
Bugfix: make TravelingVendor.Save MT friendly - get rid of wheel flags processing, they were updated on server and sent over, but not used - cache linear velocity every fixed step (we're missing on interpolation, but we only send the snapshot every fixed update anyway) - use manually interpolated steeringAngle instead of querying the wheel collider Tests: TestMTSave(down to 5 remaining), ran TravelingVendorTest scene and looked at the vendor as it drove around
Today
Bugfix: move tin can updates out of Save, as it's not MT safe Tests: TestMTSave and placed it on the ground, walked over and opened inventory
Today
Update(tests): TestServer now also initialized TrainWagonLootData and Translate classes Tests: TestMTSave - 13 -> 7 fails
Today
Bugfix: batch of bugfixes to Save being not MT safe - removed more Time dependency - replaced Transform access with TransformHandle bypass Tests: TestMTSave - 20 -> 13 fails
Yesterday
Bugfix: move Signage.EnsureInitialized from Save to ServerInit, as it's not MT safe Tests: TestMTSave - 25 -> 20 fails
Yesterday
Bugfix(tests): batch of patches for unit test spawned entities to avoid NREs in Save Tests: TestMTSave - 28 -> 25 fails
Yesterday
Bugfix: move CarvablePumpkin.EnsureInitialized out of Save, since it's not thread safe Tests: TestMTSave(CarvablePumpkin) and spawned and carved one on playground
Yesterday
Bugfix: batch of Transform replacements with TransformHandle in save code when using Jobs 4 Tests: TestMTSave - 32 -> 29 fails
Yesterday
Bugfix: batch of replacement for Time usage with ThreadSafeTime Only 1 skipped out for now, BuildingPriviledge - that one does lazy-eval, which is problematic Tests: TestMTSave - 42 -> 32
Yesterday
Bugfix: BasePlayer - avoid Time.time when evaluating mortarCooldown There's one more issue to resolve, but it doesn't affect unit tests, will resolve later Tests: TestMTSave - 59 -> 42 fails
Yesterday
Bugfix: vehicle related Time api fixes - TimeSince and TimeUntil now have a member method allowing to calculate from passed time (to avoid Time.time invoke) - TrainCar uses GetNetworkTime(ThreadSafeTime) overload Tests: ran TestMTSave, 74 -> 59 fails Tests: TestMTSave
Yesterday
Bugfix: don't use cached fuel fraction, just calculate it when saving Avoids TimeUntil sample, which isn't safe in MT Tests: TestMTSave(AttachHelicopter) pass
Yesterday
Update(tests): another small batch of patches and skips that I missed Tests: TestMTSave 81 -> 75 failures
Yesterday
Bugfix: BaseNPC - fallback to original GetNtworkRotation implementation for server side entity It knows how to fetch local rotation in MT-safe way Tests: TestMTSave - 94 -> 81 failures
Yesterday
Update(tests, editor): last batch of patches and bypasses to spawn entities - Renamed Prefabs editor script into PrefabTools, as it was conflicting with PRefabs.Misc.GhostShip I can finally get to fixing save issues for MT Tests: relevant TestMTSave pass
Yesterday
Update(tests): batch of various patches and prefab spawn skips Got about 10 patches to apply before starting to fix saving for MT Tests: relevant TestMTSave pass
Yesterday
Update(tests): skip marker spawning in tests for DeliveryDrone Tests: TestMTSave(DeliveryDrone) pass
Yesterday
Update(tests): patch GraveyardFence Tests: TestMTSave(GraveyardFence) pass
Yesterday
Update(tests): patch StringFirecracker Tests: TestMTSave(StringFirecracker) pass
Yesterday
Update(tests): patch CookingWorkbench Tests: TestMTSave(CookingWorkbench) fails on Save now (realtimeSinceStartup)
Yesterday
Update(tests): patch WaterInflatable Tests: TestMTSave(WaterInflatable) pass
Yesterday
Update(tests): TestServer now creates TreeManager Tests: TestMTSave(TreeEntity) pass
Yesterday
Update(tests): patch ThrownBoomerang Tests: TestMTSave(ThrownBoomerang) pass
Yesterday
Update(tests): patch SingleUseMissionStorageContainer - also have TestServer explicitly create InvokeHandlerFixedTime to avoid DontDestroy call Tests: TestMTSave(SingleUseMSC) pass
Yesterday
Update(tests): patch SantaSleigh Tests: TestMTSave(SantaSleigh) pass
Yesterday
Update(tests): patch MobilePhone Tests: TestMTSave(MobilePhone) pass
Yesterday
Update(tests): patch DisplayingBoxStorage Tests: TestMTSave(DisplayingBoxStorage) pass
Yesterday
Update(tests): patch ConstructableEntity Tests: TestMTSave(ContainerCorpse) pass
Yesterday
Update(tests): patch BallistaGun Tests: TestMTSave(BallistaGun) pass
Yesterday
Update(tests): patch WildlifeHazard Tests: TestMTSave(WildlifeHazard) pass
Yesterday
Bugfix(editor): rename TreeManager.Reset into ResetTrees Unity was derping trying to call instance Reset when it was marked as static Tests: TestMTSave(TreeManager) pass
Yesterday
Update(tests): ensure patched BaseCombatEnt have non-0 starting health Allows for Stocking to survive during initial damage tick on spawn Tests: TestMTSave(Stocking) pass
Yesterday
Update(tests): redirect relationship db location to temp path in tests Tests: TestMTSave(RelationshipManager) pass
Yesterday
Update(tests): skip generation and map marker of ProceduralDynamicDungeon in tests Tests: TestMTSave(ProceduralDynamicDungeon) pass
Yesterday
Update(tests): patch PatrolHelicopter - also bypass map marker spawn in unit tests Tests: TestMTSave(PatrolHelicopter) - fails on transform access in save
Yesterday
Update(tests): bypass mapMarkerPrefab spawning in unit tests Tests: TestMTSave(MLRSRocket) pass
Yesterday
Update(tests): patch MiningQuarry - also bypass deposit spawning in unit tests Tests: TestMTSave(MiningQuarry) pass
Yesterday
Update(tests): patch InvisibleVendingMachine Tests: TestMTSave(InvisibleVendingMachine) - fails on translation token