userDaniel Pcancel

2,066 Commits over 518 Days - 0.17cph!

1 Year Ago
Merge: from profiling_improvements Removes boxing allocations in Pool.Get and Pool.Free in Editor context. Tests: in editor on Craggy started a normal session, couldn't see allocations in the profiler. Overrode the startup params and was able to see the overhead table printed out when invoking cmd.
1 Year Ago
Merge: from main Tests: none
1 Year Ago
Update: Make Pool capacity waste tracking off by default - Added an editor-only command to enable it, "pool.memory_overhead_tracking_enabled" - Cleaned up implementation a smidge, left a comment explaining where the box is coming from - "pool.print_memory_overhead" skips entries with 0 overhead I couldn't find a way to avoid boxing in a generic call, so I decided to disable this telemetry gathering by default to avoid muddying profiler data. Tests: in editor on Craggy started a normal session, couldn't see allocations in the profiler. Overrode the startup params and was able to see the overhead table printed out when invoking cmd.
1 Year Ago
Merge: from main Tests: none
1 Year Ago
Update: changing starting scene to be Bootstrap when running a perf test - Also removed direct world setup settings modification, instead pushing them to global World static params We have to go via Bootstrap because that's what initializes global systems. Will need to massage platform-specific transition logic to account for perf testing workflow (need to support CLIENT+SERVER flow). Tests: Test player fails because of CWD, but if I run TestPlayer manually it boots and loads to main menu, so I count it as pass-ish
1 Year Ago
Update: Symlink assetbundles on test player build Tests: ran the test, validated that they got symlinked to expected path (but there are other issues, investigating)
1 Year Ago
Update: Sneak in console cmds via command line Need a better way in the future, but for now this should allow to control test conditions. Tests: none (need to fix assetbundle copying first), though validated it sohuld work by reading through code
1 Year Ago
Merge: from main Tests: none
1 Year Ago
Merge: from main Tests: none
1 Year Ago
Merge: from profiling_improvements Just additional profiling annotations to fill in voids on FixedUpdate and UpdateLOD. Also editor microoptim in GamePhysics. Tests: Rode a horse on Craggy and checked profiler for changes
1 Year Ago
Merge: from main Tests: none
1 Year Ago
Update: Gamephysics now uses TryGetComponent instead of GetComponent - Same perf in standalone builds, better perf in editor builds (avoids string format alloc for null obj description) Tests: Rode a horse on craggy and check profiler to confirm GamePhysics routines were triggered
1 Year Ago
Update: Adding missing ChangeLOD profiling annotation Tests: loaded 6k world and found it in profile data
1 Year Ago
Update: Annotating all VehicleFixedUpdate calls - Replacing existing Profiler.BeginSample with TimeWarning - Moved some samplers around to build a nested flamegraph (consolidates vehicles in the profile) Tests: loaded 6k world and looked through the profiling info
1 Year Ago
Merge: from remove_editor_update This shaves off another 5ms from editor update times on 6k world map Tests: built all modes in editor, tested debug rendering still works on craggy and loaded a 6k proc map and checked profiler
1 Year Ago
Merge: from main Tests: built all modes locally
1 Year Ago
Buildfix: Hide DDraw calls behind CLIENT Tests: checked all build modes
1 Year Ago
Update: DDrawAIDataPoints is an editor server var (instead of client) - Also fixed formatting and borked whitespace on one line This makes it a bit more consistent with how it's implemented (since ServerMgr executes the drawing). Tests: On craggy spawned junkpile_j, enabled the flag - debug rendering worked.
1 Year Ago
Optim: Reimplement AI-Cover/Move-Point debug drawing as a utility function instead of FixedUpdate - Also now requires both CLIENT+SERVER being active in the editor (as it's part of ServerMgr's FixedUpdate step) - Will reconcile the client cmd line arg but server logic in next CL This wins us 5.5ms on 6k procedural map in editor Tests: loaded a 6k procgen map on 1337 seed and checked the profiled. Tried enabling the debug flag, but it nukes the perf. Tested flag on craggy by spawning junkpile_j - saw the debug graphics.
1 Year Ago
Merge: from remove_treeentity_update This eliminates the many calls of TreeEntity.Update in editor play mode, saves ~16ms on 6k procgen map Tests: booted editor with swamp_a scene and shut down, booted into craggy then switched to swamp_a, added and moved trees to swamp_a, changed tree prefabs - all cases could see expected visuals.
1 Year Ago
Bugfix: TreeToolRenderer can render on editor start - Replaced sceneOpened with activeSceneChangedInEditMode, as former didn't react to boot process changing scenes Tests: closed editor and reopened, trees started to render
1 Year Ago
Merge: from main Tests: none (trivial merge)
1 Year Ago
Update: TreeToolRenderer tracks everything via a dictionary instead of a list - Also track trees that are roots of scene(helps with domain reloads) This'll avoid stutters in large monuments with a lot of pre-placed trees. Tests: in swamp_a spawned a tree, triggered domain reload, and was able to see prefab changes afterwards
1 Year Ago
Bugfix: Don't allow TreeToolRenderer to react to changes of existing trees in wrong scenes Tests: opened craggy, add a tree and tried to change prefab - nothing happened.
1 Year Ago
Update: TreeToolRenderer can visualize newly created trees - Also added tracking for the active scene, to avoid letting TreeToolRenderer running on the wrong/unsupported scene Tests: added a new tree to swamp_a. Switchet to Craggy, tried the same - didn't get visualized. Went back to swamp_a and added a tree - all good.
1 Year Ago
Update: TreeToolRenderer can track modifications to existing trees - replaces previously half-working OnToolGUI Tests: on swamp_a, modified tree's prefab - saw visuals change
1 Year Ago
Clean: remove unnecessary event callback for TreeToolRenderer Tests: reopened swamp_a
1 Year Ago
Bugfix: Restoring kayak to version from 105500 It got missmerged into nothing(empty prefab), even though it should've automerged Tests: Spawned it on craggy and got in on the front seat. No exceptions during loading or spawning.
1 Year Ago
Update: TreeToolRenderer only runs on prefab scenes Tests: loaded up swamp_a - trees were visible.
1 Year Ago
Update: move TreeEntityEditor closer to Resource Editor folder It was in a generic editor folder previously, and we have a specialized folder now Tests: loaded up swamp_a monument and checked gizmos still draw
1 Year Ago
Optim: Replace TreeEntity.Update with a an editor-only renderer - Handled by an EditorTool(work in progress, doesn't track all changes to the scene) This wins back 16ms on a 6k world in editor. Tests: Loaded swamp_a scene from a cold start, was able to see trees. Started 6k procgen map, fps was better.
1 Year Ago
Merge: from main Tests: none
1 Year Ago
Merge: from requesttrees_spike This reduces overhead of streaming grid cells of tree impostors from 3.5m to 1m on a 4.5k server. Tests: 2 editors(1 server, 1 client) in same session - streamed no changes, removed 1 tree then re-streamed, and streamed with disabled lazy serialization
1 Year Ago
Merge: from main Tests: none
1 Year Ago
Optim: Avoid expensive reserializations when trees de-/spawn - Controlled by TreeManager.UseLazySerialization, enabled by default - Tracked by LazyUpdate scopes - Simplifies some profiling scope names - Added OnTreeDestroyed profiling scope This should save us 0.25ms per cell reserialization on larger worlds. Tests: local multiplayer session, connected, destroyed a tree, reconnected. Confirmed tree impostor wasn't there and profiling scopes showed lazy serialization. Disabled lazy serialization and reconnected - still good and no spikes in profiler on chopping down trees.
1 Year Ago
Optim: Preserialize the tree grid before sending to the player - Added ClientRPC overload that accepts a MemoryStream to support above - Early out of the tree streaming logic if no players are in the streaming queue Local test on 4.5k Proc world showed that it took ~1m to stream entire world for 1 player instead of previous 3.5m Tests: minimal, booted procgen map in CLIENT+SERVER local session, waited until everything streamed in
1 Year Ago
Merge: from main Tests: none
1 Year Ago
Merge: from requesttrees_spike - Fixes NRE when players disconnect during tree streaming (fixed by discarding those players early) Tests: in Editor CLIENT+SERVER mode disconnected before 4k proc-map streamed in - server was gud
1 Year Ago
Clean: removing leftover log Tests: none, trivial change
1 Year Ago
Merge: from main Tests: none (no conflicts)
1 Year Ago
Bugfix: Don't try to send tree batches to disconnected players - Also replace a broken link in a comment Tests: In Server+Client mode disconnected the client - no NRE
1 Year Ago
Add: Perf Test dud to boot ProcGen map Builds for player and starts switching the world, but I try to set it up incorrectly and still need to build/copy asset bundles. Tests: Confirmed that the player asserts when running the new test
1 Year Ago
Clean: removing unnecessary checks and files Tests: none, trivial changes
1 Year Ago
Update: when enabling PerfFwk ensure we have 64bit arch selected Somehow I had 32bit arch targetted locally, and it looks like this is a local-only setting, so it's possible others will also run into this - this should avoid issues (like previous problem with Rust.Harmony). Tests: while on WIndows32 target enabled the framework - confirmed it switched to 64bit arch
1 Year Ago
Update: don't trample on existing defines when changing mode switches Saves a bit of time when working with Performance Framework Tests: confirmed RUST_PERF_FWK stays when switching to none, client, client+server
1 Year Ago
Buildfix: Harmony loader is conditionally built via asmdef settings - Originally there was a mix of code macro checks and asmdef constraints - now it's just asmdef constraints and no code defines - Enabled it for all platforms except editor, instead of just 3 explicit ones(Unity's TestFramework currently builds Win32 players instead of Win64). Tests: with PerfFwk enabled and editor in different(Client, Server, both) modes, ran Pool perf tests in Player/standalone mode. Everything built and succeeded.
1 Year Ago
Update: Exclude unnecesary scenes when PerfFwk is enabled - We have disabled scenes in the list that UnityTestFramework ignores and tries to build, leading to issues - It also saves iteration time, since we only build scenes we'll use for perf testing Tests: same as before
1 Year Ago
Update: Moving perf tests to PerfFwk plugin - Added additional references to PerfFwk Original idea of mixing perf test code into main assembly didn't work out, so for now going the path of contianing them in an isolated assembly Tests: tested with other changes to run pooling tests in CLIENT+SERVER standalone mode
1 Year Ago
Undo: auto-reference of PerformanceTesting lib Trying out a different approach Tests: none
1 Year Ago
Merge: from main Tests: none