userDaniel Pcancel

2,114 Commits over 549 Days - 0.16cph!

Today
Merge: from triggerparentdelayedexit_optim - Optim: new TriggerParent volume processing mode, controlled by TriggerParent.TickMode (default to 1, old mode is 0). TickMode 1-specific optims controlled by UsePlayerV2Shortcuts and AllowTriggerSleeping switches (both enabled by default) Tests: built boats, sank them while on them, spawned 100 boats with sleepers both with TickMode 0 and 1
Today
Update: set TriggerParent.TickMode to 1 by default - codegen Tests: booted up craggy in editor, checked that it's set to 1 and called at boot
Today
Merge: from main Tests: compiles
Today
Merge: from main Tests: compiles
Today
Clean: remove TriggerParentDelayedExit.allow_tick_skipping support - codegen Originally was an optim, but discovered that I had a bug that always stayed disabled. If we need it, I'll reimplement it for TickMode 1 Tests: compiles
Today
Update: Tickmode 1 - add allowtriggersleeping optim killswitch - codegen Tests: built a boat, set tickmode 1, checked in profiler what runs. set AllowTriggerSleeping 0, checked profiler - it started running queries
Today
Optim: TickMode 1 - allow triggers to sleep if they don't move on specific axis and internal entities also don't move on specific axis - took out internals of BaseEntity.HasMovedInLS to BaseEntity.ComparePos(Vec3 from, to) - Player Boats now set interest in XZ when alive, XYZ when sinking - Buildfix for SERVER only code (whoops) This brings 100 boat test to 0.25ms (down from 1.6ms, -85%), or down from 3.1ms, -92% from TickMode 0 Tests: built a boat, set tickmode 1, jumped on and off - got unparented. turned on the engine, jumped off - got unparented once in the water. noclipped above with engine on - got unparented after a delay. Spawned 100 boats.
Today
Update: BaseEntity now remember it's last LS position and can report on which axis it has moved - added unit test for it Needed for upcoming parent trigger optim Tests: ran unit test
Yesterday
Optim: reduce branching in BaseEntity.HasEntityInParents Saves a tiny amount (60micros for 600 checks), but the change is relatively trivial and is used in a bunch of places Tests: spawned 100 boats with 3 sleepers
Yesterday
▇▍▇▋▆: ▇▉▌█▅▉▍▌▅▍ - ▅▌▌▍ ▅▆▍▅▆▄ ▆▊▊▌▆▆▄▍ ▅▋▋▉▆▊ ▊▆▊▋ ▍▌▋ ▇█▅▋ ▋▉ ▆▊▋▇▋▅▋ ▄▊▍▍ ▆▍▉▍▊█ ▅▉▉▆▆▌▊▅▆ ▇.▆▍▆(█▅█ ▊▌▇▇▇▄█▉ ▊)/▍.▇▋▉(▍▆▋ ▊▄▄▆▅▇▍▋ ▅) ▅█ ▋█▄██▌▋▆▊▊ ▆▄▄▄▄: ▊▆▉▌▊ ▆ ▄█▆▅ █▌▇ ▇▍▉▆ ▅▉ ▋▄▉▉ - ▌▌▌ ▊▊ ▅▇▍▍▆▅▊ ▊▆▆▉▆▊▍▌▆▄
Yesterday
Optim: TriggreParent.TickMode 1 - batch swimming checks 100 boats now take 1.6ms max (down from previous 2.1ms, -24%) vs 3.1ms (-49%) of TickMode 0. Tests: built a boat, sank it by shooting, got unparented
Yesterday
Update: expose StableObjectCache internal T[] - had to introduce approx equals to WaterInfo as unit tests were failing (why now?) - consolidated common logic to fix missing shoreline check in batched version (we need unit tests as part of builds) Need it to simplify code around water factor batching Tests: unit tests
18 Days Ago
Update: adding a TODO to enable minor logic caching Tests: none, trivial change
18 Days Ago
Merge: from main
18 Days Ago
Merge: from triggerparentdelayedexit_optim - Bugfix: added missing check in tickmode 1 - Bugfix: fixed TriggerParentDelayedExit cleanup logic disabling it's effects - New: paste_line command Tests: built a wonky ship with tickmode 1, jumped over it's gaps
18 Days Ago
Update: TriggerParentDelayedExit cleanup logic only runs when trigger is disabled We always ran cleanup when OnEmpty got invoked, even if decided to delay the exit, which disabled delay functionality Tests: built a wonky ship and jumped around gaps - parenting was in effect long enough
18 Days Ago
Bugfix: TickMode 1 - add missing overrideOtherTriggers check Tests: none, trivial change
18 Days Ago
Update: remove dead vars and cache == null check Tests: none, trivial change
18 Days Ago
Update: add paste_line <name> [count = 1] [offset = 1] - will spawn the clipboard in a line using player's facing with offset-sized spacing - also if pasting players, make sure they run their ForceTriggerUpdate - codegen Tests: spawned a 100 boats in a line
18 Days Ago
Merge: from main
19 Days Ago
Bugfix: TriggerParentDelayedExit::SupportsTickSkipping was always evaluating to false - switched it to be off by default, as it was likely off during my earlier testing Tests: none, trivial change
19 Days Ago
Merge: from main
19 Days Ago
Merge: from triggerparentdelayedexit_teleport_fix - Bugfix: teleporting from a player boat should no longer cause weird parenting issues Tests: built a boat, teleported away - no weird movement afterwards
19 Days Ago
Bugfix: don't try to delay unparenting when teleporting away from the boat Tests: built a small boat, spawned a player on it, turned on the engine, teleported away - didn't have the weird extra movement
19 Days Ago
Merge: from analytics_std_dev_fix - Bugfix: fix for invalid std_dev calculation Tests: none, trivial change
19 Days Ago
Update: always record high and low percentile telemetry for non-game mode It's a smidge more data, but makes building dashboards easier Tests: none, trivial change
19 Days Ago
Bugfix: fix std_dev that could generate NaNs via sqrt of a negative number Tests: none, trivial change
19 Days Ago
Merge: from triggerparentdelayedexit_optim - Bugfix: shooting a weapon can cause NREs on the client Tests: shot in the sky with a bunch of bursts - no NREs
19 Days Ago
Bugfix: VerifyRays - avoid trying to read hit array outside of working area I asssumed we always call it with tightly-sized arrays, but it's not the case on client Tests: shot in the sky with a couple bursts - no NREs
20 Days Ago
Merge: from triggerparentdelayedexit_optim - Optim: improve performance of GamePhysics.TraceRays family of queries - Optim: TickMode 1 - add UsePlayerUpdateJobs2 related shortcuts to TriggerParent Tests: built a boat with tickmode 1, spawned npc player on it, jumped on and off, flew in it's vicinity - no issues.
20 Days Ago
Merge: from main
20 Days Ago
Optim: TraceRaysUnordered - optimize collider validation using burst jobs - added UtilityJobs.FlipBoolJob and ScatterToJob<T> This brings costs down across the board: * 128 rays - 0.37ms -> 0.25ms, 33% improvement (serial was 0.49ms, 49%) * 1k rays - 2.59ms -> 1ms, 61% (serial was 4.33ms, 77%) * 8k rays - 18.9ms -> 6.26ms, 67% (serial was 34.79ms, 82%) Tests: unit tests
20 Days Ago
Optim: TraceRaysUnordered - run water traces in parallel to raycasts Not the best impl, but shows improvement for smaller ray counts (where we're not dominated by Verify): * TraceRaysUnordered - 128rays: 0.44ms -> 0.37ms, 1k+ rays same * TraceRays - 128rays: 0.56ms -> 0.50ms, 1k+ rays same Can apply the same to sphere casts as well. Tests: unit tests
21 Days Ago
Optim: TriggerParent.TickMode 1 - use cached water and ladder results in UsePlayerUpdateJobs 2 env - codegen This should allow us to skip ~30% of the overall runtime. Can be disabled via TriggerParent.UsePlayerV2Shortcuts 0 (defaults to 1) Tests: none, will check tomorrow once brain is fresh
21 Days Ago
Optim: TriggerParent.TickMode 1 - avoid unnecessary entity lookups in RunClippingChecks Microoptim, but why not Tests: none, trivial change
21 Days Ago
Optim: TriggerParent.TickMode 1 - skip RunClippingChecks for entities that failed RunCheckForObjUnderFeet Tests: none, trivial change
21 Days Ago
Clean: remove a couple TODOs Was worried about a bug, but deeper scrutiny think the code is correct Tests: none, trivial change
21 Days Ago
Clean: refactor TriggerParent.ShouldParentEntitiesJobs - Added profiling scopes No functional changes. This makes data flow easier to track and manage, and helps visualizing stages in perf snapshots. Tests: built a long-boat in tickmode 1, spawend 6 players on it, went to edit mode and back, jumped on-and-off as it was moving
21 Days Ago
Bugfix: Add missing Native collection disposal in GamePhysics Audited all of GamePhysics, looks to be the only cases that slipped in Tests: unit tests + built a boat with tickmode 1
21 Days Ago
Optim: use persistent buffers for TriggerParent::RunCustomJobsQueue - codegen Tests: with tickmode 1 - built a boat, jumped on-off
21 Days Ago
Clean: rip out tickmode 1 and 2, rename Jobs mode as tickmode 1 - codegen Out of all versions it's fastest, so only going to continue with it vs baseline 0 Tests: compiles
21 Days Ago
Merge: from main
21 Days Ago
Merge: from triggerparentdelayedexit_optim - Bugfix: properly cleanup TriggerParent and TriggerParentDelayedExit to avoid invalid invokes running Tests: built & finished a boat, jumped around while moving, put it into edit, finished, jumped around - no errors, no extra invokes
21 Days Ago
Bugfix: properly clean-up TriggerParent and TriggerParentDelayedExit when it gets disabled Reimplements intents of `139965`. Tests: built & finished a boat, jumped around while moving, put it into edit, finished, jumped around - no errors, no extra invokes
22 Days Ago
Merge: from triggerparentdelayedexit_optim - Bugfix: mitigate double trigger exit call on TriggerParent - Bugfix: TriggerParentDelayedExit leaving invalid invokes when editing already existing boat Tests: built a boat, spawned a player on it, edited - no more errors, no extra invokes running
22 Days Ago
Undo of Undo: 139927 (merge: from triggerparentdelayedexit_optim) Will apply the fixes on top with merge
22 Days Ago
Bugfix: TriggerParentDelayedExit - skip entity-delay logic when trigger gets disabled This left invalid invokes running when editing existing player boat, inflating the perf cost Tests: edited existing boat, checked profiler - saw no perf samples gor persistent queue
22 Days Ago
Bugfix: early out when double-remove happens Not sure why yet, but saw the same with double-add before, so going to replicate. Also noticed that we can be tracked, but have null-entitycontents, which leads to wasted Invokes, adding overhead - checking Tests: built boat, spawned npc, went to edit mode - no more errors
22 Days Ago
Undo: `139927` (merge: from triggerparentdelayedexit_optim)
22 Days Ago
Merge: from triggerparentdelayedexit_optim - Optim: triggerparent.tickmode 0-3 (0 default) - various implementations for TriggerParent.OnTick execution, can be switched at runtime. Tests: unit tests + building a boat, jumping around on it, trying going under it and climbing ladders and stairs.