userDaniel Pcancel

2,507 Commits over 639 Days - 0.16cph!

1 Hour Ago
Bugfix: when exporting a snapshot from recorder scopes skip fast-forward logic to 0 callstack depth Tests: recorded coroutine, was able to see all 3 log calls (before yield, after 1st yield and before yield break). But something's corrupting memory for subsequent perfsnapshots
1 Hour Ago
Merge: from serverprofiler_recordscope_pause Need it for experiments with profiling coroutines
3 Hours Ago
Bugfix: prevent taking perfsnapshots if a recorder scope is currently active and vice versa - also fix recorder triggering NREs because it tries to run perfsnapshot code Tests: ran profiler scope spanning multiple frames. Checked output, it's not making sense, investigating deeper
4 Hours Ago
Merge: from main
Today
Bugfix: don't overwrite callstack depths for frame 0 with values for other frames when multiple frames are found Tests: ran Export2FramesTorn - it passes and looks correct-ish (same wrong offset as in Export2Frames)
Today
Bugfix(tests): fix invalid test logic in ExportExtraEnd2Frames - renamed ExportExtraEnd2Frames to Export2FramesTorn - added Export2Frames (shows invalid frame start - this is new) Tests: ran unit tests, failures where expected
Yesterday
Merge: from networkgrid_iterationspeed_changes - Optim: lazy allocate internals of NetworkGroup to save memory (adam.k's findings) Tests: flew around on craggy, opened deep sea and entered-left, printed entity counts of deep sea, shot scientists in the distance
Yesterday
Update(tests): add ExportExtraEnd2Frames Test passes but looks incorrect Tests: ran unit tests
Yesterday
Bugfix: potentially support exporting profile of Recorder started inside a method and finished outside Need to write more tests to validate it works across frames - not confident about it. Tests: ran ExportExtraEnd - passes. ran all others - still valid
Yesterday
Update(tests): emit valid timestamps when running profile exporter tests Tests: confirmed seconds-scale ranges in perfetto
Yesterday
Bugfix: handle cases where main thread doesn't have any profiling marks Veeeeeeery unlikely event to happen, but should be supported Tests: ran ExportEmptyMainThread test - it now passes
Yesterday
New(tests): ProfileExporter unit tests Synthesizes basic profile streams and sees if it sucesfully exports them, without checking contents. Tests: ran tests, 2 fail. inspected some outputs of passing ones
Yesterday
Bugfix: protect network group networkables access since it's lazy initted now Tests: opened deepsea on craggy, ran `deepsea.printentitycount`, flew around craggy and open waters, entered and left deep sea, killed scientists from far away
Yesterday
Undo of 147532 - Subtract 147512, 147798, 147486, 147475 (networkgrid_iterationspeed_changes)
Yesterday
Merge: from main Will need to subtract some stuffs
Yesterday
Merge: from networkgrid_iterationspeed_changes - Bugfix: handle more cases of lazy-initted net group subscribers instead of NREing Tests: none, trivial changes
Yesterday
Bugfix: more null checks around lazy created subscribers - utilities in BaseNetworkable - BaseEntity.SignalBroadcast (in case npc shoots outside of players range) - TreeManager.OnTreeSpawned (in case they spawn on an empty server) Tests: none, trivial changes
Yesterday
Merge: from networkgrid_iterationspeed_changes - Bugfix: avoid NREs from accessing uninitialized subscribers for net groups Tests: booted into craggy with server occlusion and jobs 0, 1, 2, 3 modes
Yesterday
Bugfix: avoid NREs by skipping not yet initialized subscribers for the network group Tests: booted into craggy with server occlusion and jobs 0, 1, 2, 3 modes
Yesterday
Merge: from main
Yesterday
Merge: from serverprofiler_filters_april2026 - Update: remove a couple assemblies and utils from being recorded in snapshots to reduce overhead Tests: exported snapshot in Jobs 3 mode and inspected
Yesterday
Update: april batch of ServerProfile filters - Release binaries built from 8643e0d9 Excludes: websocket-sharp and UniTask assemblies, Facepunch.System's Deque and TimeSpanExt classes Tests: inspected snapshot from editor in jobs 3 mode
2 Days Ago
Merge: from connections_pool_leak_fix - Bugfix for leaking List<Connections> Tests: ran around on craggy and checked print_memory showed low max value
2 Days Ago
Bugfix: return List<Connection> to pool in SendNetworkUpdate_Position Submit on behalf of cipeaX, it's his find Tests: ran around on craggy, checked pool.print_memory - max stayed low
7 Days Ago
Merge: from projectileweaponmod_allocs - Optim: get rid of missed alloc in ProjectileWeaponMod aggregation calls Tests: inspected snapshot taken while shooting
7 Days Ago
Optim: avoid IEnumerable Enumerator allocation Not as generic, but saves an alloc Tests: took a snapshot while shooting
7 Days Ago
Merge: from buildingprivlidge_invoke_allocs - Optim: BuildingPrivlidge.AddDelayedUpdate caches it's invoke Tests: none, trivial change
7 Days Ago
Optim: cache invoking callback in BuildingPrivlidge.AddDelayedUpdate Tests: none, trivial change
7 Days Ago
Remerge of 147094 - Merge: from projectileweaponmod_allocs
7 Days Ago
Merge: from projectileweaponmod_allocs - Optim: removed allocations related to ProjectileWeaponMod.Sum/Mult/Min/Max/Avg and their callers Tests: used a modded AK to kill a scientist
7 Days Ago
Clean: ProjectileWeaponMod.Mult - use 1 as hardcoded default value They've been manually specified as 1 everywhere, seems a bit redundant Tests: compiles
7 Days Ago
Optim: cache all selectors that are used in mod value aggregations Tests: got shot by a scientist. killed them with a fully modded ak
7 Days Ago
Optim: reimplement projectile mod aggregators to be alloc free - added outstanding Avg, Min and Max helpers - all helpers are now generic, to support the 2 overloads we have - ripped out GetMods to avoid accidental reintroduction of allocs Still need to fix remaining dynamic callback creation Tests: got shot by a scientist
7 Days Ago
Clean: simplify ProjectileWeaponMod code - get rid of 0 as default arg - mini bugfix: hook up bypassModToggles in one of Sum overloads - added non-GC mul and sum, but not plugged in yet Tests: compiles
8 Days Ago
▉▉▋▄▋▅▌ ▉█▊█ ▌▊▆█▅▋▍▇▇▉▌▌▆▅▄▋▅▋▋▌▅▆▌▇▉▍▋▉▍▇ ▊▇█▄▆█ ▅▌▄ ▉▋▄▉ █▋▋█ ▍▋█▊▋▊ ▌▇▊▌▌▌▅▄█ ▇▍ ▍█▇▅▌▉▉▇ ▊▅▄ ▅▋▇▊▌█▌▌█▋▌▊▊▋▊▊▇▍▌▉▇▊▉▉▇▇▆ ▄▆▍▆▄▉▋▅▌█▆▄▋▅▉ ▌▆▅▋▋█ ▅▌ ▅█▌▉▊▉ ▅▌▆▉ ▆▋▊▉█▋ ▅▌▊▌▅▅▍▅▇ ▋▋▆▇▉▉▌▍
8 Days Ago
▄▆▄▌▇▆█▄ ▆▆▋▄▍▊▋ █▇▇▆▍█▉▋▍▄▇▌▉█▍█▍▌▌▄▉▄▄█▇▊▇ ▋▇▉█▅ ▅▋▌ █▇▆▇ ▆ █ ▉▄▌▍ █▌▉ ▇▌▌ ▆▅▊ ▆▇▆▍ ▍▇▅▋▇▇▊▆▊▌▉█▅▊▉▉▉▍▍▆█▍▋▋█▉▋ ▅▍▉▉█▅ ▇▇ ▍▅▋▆▋▅ ▋▋▍▄▍▊▅▋▊ ▅▆▇▄█▍▉ ▇▇▋▊ █▆▅▇▄▆ ▋▆▉▇▌▊▆▄▋ ▅▋ ▋▉▌▉█▇▇▆▅▅▌ ▇▇▌▇█▄▋█▊▊▍ ▊▍▍▅▆▆▉▅▍▋▌▌▉▌▍▅▍▍▋▅▍▄▍▍▆▉█ ▆▅▆▇ ▉ ▅▌▌▍▊▇▄▄▊▍ ▆▅▉▉ ▆▉ ▉▍▌▉▌▉ ▄▉▍▍ ▍▊▌▇▍▊▇▆▊▋▍▍▉▉▌▊█▍▌ ▋▇▊▆▍▊ ▆█▋ ▊▉▌ ▇▍▊█▇▆ ▇▄ ▉▋▆▌▉▉ ▉█▆▊ ▆▄▄▋▆▊ ▆█▍▊▋▅▉▊▄ ▍▊▄▌▅█▇▅▍ ▆▄▅▋▋▇▅ ▋▅▅ █▉▋▊ ▋▄ ▅▍▇▊▇▇▅ ▊▌▊ ▍▉▉▅ ▆
8 Days Ago
▉ ▍▇▊▌█▍ ▉▅▌▍ ▆▇▅▄
8 Days Ago
Clean(tests): add messages to new checks to know which permutation and player diverged Tests: ran the modified test
8 Days Ago
▌ ▋▋▊▆▍█ █▊▉▇█▄▊ █▇▅▇▉▋▉█▌▋▅▋▍▉█▉▋▆ ▅▄▍▆▄▆█ ▍▇ ▆▅▄▆ ▌▆ ▋▌▄▄▆▅█ ██▍▍██ ▄▌▄▅▌ ▅▆▍▋ ▅▆ ▌▍ ▊█ ▇▆▋▉▇█▅▋▇██▄▋▊█▆▅▌▍▌▉▆ ▄▆▅▊▇ ▄▋▋▆▆▉▄ ▅▆▆█▅▄
8 Days Ago
Update(tests): TestIsFlyingConsistency now also compares computed flying states - Reset flying state between test runs Tests: ran tests, level 1 passes but level 3 now fails
8 Days Ago
Bugfix(tests): make AntiHack tests spawn players with colliders Tests: ran all AH tests, all pass except for 1 already known
8 Days Ago
Update(tests): rewrite TestIsFlyingConsistency to better mix various players Need to figure out why playerr-on-player test doesn't detect player, will do next Tests: ran unit test, detects an issue on level 1
8 Days Ago
Update: set UsePlayerUpdateJobs 2 as default - codegen Tests: none, trivial change
8 Days Ago
Clean(tests): fix formatting inside Test.AntiHack.cs broken by auto conflict resolution Tests: compiles
8 Days Ago
Merge: from main
9 Days Ago
Clean: simplify sync from flying cache back to players Tests: none, trivial change
9 Days Ago
Clean: annotate AreFlying jobs with context comments - got rid of ref and added ReadOnly in a couple places Tests: compiles
9 Days Ago
Merge: from reorganize_unit_tests - Buildfix Tests: switched through all modes
9 Days Ago
Buildfix(tests): add a missing SERVER macro guard Tests: clicked through all modes - all compile
9 Days Ago
Merge: from reorganize_unit_tests - Clean(tests): reorganize unit test structure - all test classes are either in Tests.Unit or Tests.Perf or both namespaces - Bugfix(tests): patch up a bunch of test classes so that they work properly Tests: ran all unit tests. some spurriously fail as part of big batch, but individual test classes pass.