userDaniel Pcancel

2,334 Commits over 580 Days - 0.17cph!

3 Hours Ago
Merge: from optim_jobs2_builddepchains - Optim: UsePlayerUpdateJobs2 - BuildDependencyChains is now 40%+ faster and scales better Tests: unit tests, loaded into Craggy, loaded into 2.5k procgen
3 Hours Ago
Merge: from main
4 Hours Ago
Update(tests): adding Perf_BuildSnapshotDependencyChains Basic test churning throuhg 1 snapshot queue of 1k entities. Mostly shallow hierarchies are fast (20% parented -> 0.15ms), but dense hierarchies are slower(200% parented -> 0.6ms). Tests: ran perf test
4 Hours Ago
Update(tests): add BuildSnapshotDependencyChains unit tests - DummyServer now automatically cleans up spawned entities in CleanTestState Tests: ran unit tests
5 Hours Ago
Clean: refactor some of unit tests - take out DummyServer and move bot, player creation logic into it - move out Measuring utils to it's own file Tests: ran occlusiongroup tests, all pass
Today
Optim: Jobs 2 - rewrite BuildSnapshotDependencyChains - fix a bug that caused more snapshots to be sent than necessary (causing massive inflation) - add a couple fast paths, rewrote it to be a single-pass algo - reduced number of pooled lists usage Need to write unit tests for this Tests: with useplayerupdatejobs 2 set from start, loaded craggy and 2.5k procgen world in editor, visited ferry terminal - didn't see anything missing, npcs had weapons and were shooting
Today
Merge: from serverprofiler_disable_memstates - Update: added extra safety try-finally Tests: none, trivial change
Today
Update: missed an extra try-finally in perfsnapshot_stream Tests: none, trivial change
Today
Merge: from main
Today
Merge: from serverprofiler_disable_memstates - Bugfix for running multiple capture commands without waiting for completion of initial - Bugfix for memstats parsing exception (disabled memstats recording) Tests: couple 128mb perfsnapshot_stream in editor
Today
Bugfix: perfsnapshot/_stream - set exportDone to false when starting recording - wrapped inner task logic into a try-finally to ensure exportDone latch is released Well this is a derp up, the safety latch was in place for a year but never worked because I never engaged it. Whoops. Tests: done perfsnapshot_stream 128mb as another one is exporting - no crash, got message
Today
Update: ServerProfiler.Core - disable system memory tracking - release binaries built from 25d14ef0 Its too unstable and overengineered, will rework later Tests: perfsnapshot_stream 128mb of data - no system memory tracks in json
Today
Merge: from tracespheres_optim - Bugfix for exceptions when shooting Tests: shot the ak on Craggy in editor
Today
Bugfix: VerifyRays/Spheres - early out if passed empty command set Fixes exceptions when shooting Tests: shot ak on Craggy in editor
Today
Merge: from main
Yesterday
Merge: from fix_sortdeferred_race - Bugfix for sorting of hits potentially running in a race with previously scheduled jobs Tests: unit tests
Yesterday
Optim: merge count and sort jobs into one Tests: unit tests
Yesterday
Bugfix: GamePhysics.SortDeferred - respect dependsOn handle param Tests: ran unit tests - all pass
Yesterday
Merge: from spectate_stay_after_dc - Update: when spectating a player that disconnects, the client starts orbiting their last position. Third-Person is the only valid camera mode in that situation Tests: spectated a player that disconnected - was able to look around.
Yesterday
Merge: from main
Yesterday
Update: client now hovers last spectated player's position in third-person mode when spectated player disconnects/gets nuked Tests: spectated player that disconnected - started orbiting. spectated as only player on server - orbiting original position (as before)
Yesterday
Update: when spectated player disconnects, stay spectating above their player Don't like how the logic is tied to the player/sleeper, need to improve on the clientside Tests: spectated player, then that player disconnected - stayed in an area
2 Days Ago
Merge: from tracespheres_optim - Optim: GamePhysics.TraceSpheres and TraceSpheresUnordered are now faster at 32 or more spherecasts (previously started scaling at slightly more than 128) Tests: unit tests
2 Days Ago
Merge: from tracespheres_optim - Optim: GamePhysics.TraceSpheres and TraceSpheresUnordered are now faster at 32 or more spherecasts (previously started scaling at slightly more than 128) Tests: unit tests
2 Days Ago
Clean: remove hacky testing code Tests: none, trivial change
2 Days Ago
Merge: from main
2 Days Ago
Optim: GamePhysics.Trace - replace sort with a serial scan - added unit tests and perf tests In existing perf tests scene complexity is not enough, but expecting to be a minor improvement in real world. Tests: unit tests
2 Days Ago
Merge: from main
3 Days Ago
Optim: replicate TraceRays optims to TraceSpheres/-Unordered TraceSpheres now scales better and earlier than it's serial counterpart: * TraceSphereUnordered vs TraceSpheresUnordered: 128 - 0.57ms vs 0.3ms; 1024 - 5.1ms vs 1.38ms; 8196 - 43ms vs 9.9ms * TraceSphere vs TraceSpheres: 128 - 0.64ms vs 0.44ms; 1024 - 5.6ms vs 2.2ms; 2048 - 11ms vs 4ms Tests: unit tests
3 Days Ago
Bugfix: veeeeery rare out of bounds access when Unity returns invalid hit Tests: none, don't have a unit test for that
3 Days Ago
Update: GamePhysics.TraceSpheres - add ignore entity support Tests: ran unit tests
3 Days Ago
Update(tests): add TraceSpheres and TraceSpheresUnordered unit tests - get rid of old TestSpheres test, didn't spawn base entities Tests: ran new unit tests, some are failing as expected
3 Days Ago
Update: expanded GamePhysics.Perf tests with spheres (batched and serial) - Fixed a perf bug of TestTraceRay causing it to do too much sorting - Further refactored & generalized code At 128 spheres, batched and serial seem to cost the same - going to continue moving ray optims across after I add unit tests Tests: ran perf tests, numbers within expectation
3 Days Ago
Clean: more refactoring of unit tests in Test.GamePhysics Tests: ran perf tests
3 Days Ago
Clean: take out perf test measuring code into helper Utils class Tests: ran unit tests
3 Days Ago
Merge: from main
3 Days Ago
Merge: from remove_old_occlusion_group_logic - Clean: more code removal in unit tests to silence Rider Tests: ran unit tests
3 Days Ago
Clean: remove more dead code/checks Missed some leftover if(true) style code Tests: ran unit tests
3 Days Ago
Merge: from main
3 Days Ago
Merge: from main
3 Days Ago
Merge: from main (yeah, weird one - redo of CL 143929) When I did a server merge from extend_perf_telem, plastic warned me that another change made it to main, but commit bot reported mine merged. In reality it wasn't fully merged, just "attached". This should fix it. Tests: compiler simulator in editor
7 Days Ago
Clean: leave a note why we're not running water traces and raycs concurrently Tests: none, trivial change
7 Days Ago
Update: remove TestLineOfSightBatched unit test as we never implemented the batched version (I think?) Tests: ran all GamePhysics.UnitTests - now they all green
7 Days Ago
Merge: from expand_perf_telem - Update: object work queues now send their budget time + an aggregate record - Update: frame_profiling now contains extra fields about invokes and a pre_lateupdate timing record Needs a bit of backend work to fully finish this. Tests: uploaded to backend, inspected what arrived
7 Days Ago
Update: couple analytics fixes: - new TimeSpanExt.FromMicroseconds utility to get sub ms timespans - changed CSV data pushing to object_work_queue_2 and frame_profiling_2 - moved BudgetTime to be last field in the CSV blob for object_work_queue_2 Tests: inspected csvs on backend
7 Days Ago
Merge: from main
7 Days Ago
Merge: from remove_old_occlusion_group_logic - Clean: ServerOcclusion now uses new occlusion group logic by default, old logic ripped out Tests: ran unit tests
7 Days Ago
Clean: remove old occlusion group code - removed -enable-new-server-occlusion-groups command line - cleaned tests Tests: ran occlusion group unit tests, all 144 pass
7 Days Ago
Merge: from delete_obsolete_pool_api Tests: compiler simulator in editor
7 Days Ago
Clean: remove deprecated Pool api - they've stayed 1 year longer than supposed to - replaced internal usages * Pool.GetList<T> -> use Pool.Get<List<T>> instead * Pool.FreeList<T> -> Pool.FreeUnmanaged * Pool.FreeListAndItems<T> -> Pool.Free(ref obj, true) * Pool.ClearList<T> -> write your own * Pool.FreeMemoryStream -> Pool.FreeUnmanaged Tests: compile simulator in editor