userDaniel Pcancel

2,524 Commits over 639 Days - 0.16cph!

33 Minutes Ago
Update: turn GamePhysics.DefaultMaxResultsPerQuery into a server var - breaking API changes for GamePhysics.CheckSpheres, CheckCapsules, EnvironmentManager.Get - Ran codegen Tests: none, trivial change
1 Hour Ago
▅▇▍▍█▋▊ ▌▅▍▊ ▇▍█▉█▉▇▄▇█▄▉▄▋▇▅▋▆▅▍▆▌▊▌▊▄▅▊▉▄ ▇▊▆▅▆▅ ▇▌▉ ▇▌▇▅▅▄ ▋▌▅▄▉▍▉▍ ▍▇ █▇▉▍▇▇ ▊█▇▄▇ ▆▍▉▆ ▌▌▋▌▅▍▋ ▉▋▌▅▄▊▄▄▌▋▆▌▋▌▋▌▅▍▆▌▋▄ ▊█▍▊▌▊▄▌▄ ▌▇▋▌▌▅ ▅▇▍█ ▆ ▆▊▄▄▋▇ ▅▄▊▍▍▅▍█▅ ▇▆▇▌█ ▍▍ ▊██▄▄ ▍▋ ▍▉▆ █▉▋▍ █▌ ▍██ ▄▅▅▍ ▆ ▌▇▊▋ ▍▍▅
1 Hour Ago
▉▄▆▋▍▌▆▇ ▍▉▌▉▆▍▌▋▅ ▊▄▍▇▋▇▋ ▊▋▇▅▍▇▊▄ █▉█▉▅▉ ▉▄▆ ▅▄▅▊▇▌▆▋ ▇▅█▊▍▍▋▊█▄▆█▅ ▇▊▍▌▅▊█▆ ▉▊▅▄▋ ▆▋▆▄▆▍▄▇▊▅▆█▉▊▋▍▋█▆▉▅▋█▅▋ ▆▅▌█▋▉▆▉▆▊▄██▋▇█▋▋█▋█▉ ▍▋▇▌▅ ▌▉▉█▆▄▆▄▋▅ ▍▌▊▍▌▇▍▊█▆▊▍▄▇ ▄▍█▇▊▅ ▅▄▍▇ ▇ ▄▊▆▋▇▅ ▋▉▆▌▌▌▋▉▆ ▍▄▌▉█ ▍█ ▆█▆▊▍ ▇▉ ▄▌▍ ▆▊▋▋ ▋▌ ▅▅▍ █▋▉▅ ▅ ▊▋█▅ ▅▆▇
Yesterday
Merge: from hascloseconnections_fix - Bugfix for BaseNetworkable.HasCloseConnections and GetCloseConnections mot seeing outside of small layer Tests: ran unit tests
Yesterday
Bugfix: ensure players are detected on the border of the network cell - expanded unit tests to cover these cases Tests: ran unit tests
Yesterday
Merge: from main
Yesterday
Bugfix: fix HasConnectionsClose & GetCloseConnections missing players in medium and large ranges - also add a unit test to validate Connections overload Tests: ran unit tests
Yesterday
Bugfix(tests): adjust player spawn distance for TestNetworkRange.OutsideRange cases They can land on a boundary, making it more difficult to reason when working across small/medium/large layers Tests: ran the tests, same results
Yesterday
Bugfix(tests): expand TestServer's network grid from 1k to 2k Previously it was too easy to accidentally setup an out-of-bounds scenario, leading to confusing test failures Tests: ran related tests, discovered couple tests are failing (unrelated to this change)
Yesterday
New(tests): tests for BaseNetworkable.HasCloseConnections and GetCloseConnections - named cell sizes for various layers in NetworkVisibilityGrid Tests: ran tests, failing where expected
Yesterday
Merge: from serverprofiler_recordscope_pause - Update: ServerProfiler recorder scopes can be paused/resumed (but needs more work on export side, looks bad) - Bugfixes for recorder scopes corrupting memory and breaking perfsnapshot Tests: unit tests + recorded a multiframe coro with recorder scope + perfsnapshots
Yesterday
Merge: from main
Yesterday
Merge: from main
Yesterday
Update: add Pause/Resume to ScopeRecorder and SlowScopeRecorder Tests: tried them in throw-away code, works but exported result looks wonky and needs more work
Yesterday
Update: ServerProfiler - add ability to pause & resume active recorders - added couple unit tests - release binaries built from 61cba2fc Tests: ran unit tests
Yesterday
Bugfix: Simplify RecordContext memory management in ServerProfiler.Core - release binaries built from 39f0cfa4 Worst bug was that 2 threads sharing one recording buffer Tests: recorded a bunch of test coroutines (2 frames worth each) via RecordScope, then ran a perfsnapshot for 10 frames - no issues.
7 Days Ago
Update: ServerProfiler.Init now resets managed internal state - also added handle cleanup to ScopeRecorder and SlowScopeRecorder dispose, in case double-dispose gets called This reduces test boilerplate slightly (as scope recorders have a timeout) Tests: ran unit tests - they pass. still chasing native storage corruption
7 Days 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
7 Days Ago
Merge: from serverprofiler_recordscope_pause Need it for experiments with profiling coroutines
7 Days 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
7 Days Ago
Merge: from main
8 Days Ago
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)
8 Days Ago
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
8 Days Ago
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
8 Days Ago
Update(tests): add ExportExtraEnd2Frames Test passes but looks incorrect Tests: ran unit tests
8 Days Ago
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
8 Days Ago
Update(tests): emit valid timestamps when running profile exporter tests Tests: confirmed seconds-scale ranges in perfetto
8 Days Ago
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
8 Days Ago
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
8 Days Ago
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
8 Days Ago
Undo of 147532 - Subtract 147512, 147798, 147486, 147475 (networkgrid_iterationspeed_changes)
8 Days Ago
Merge: from main Will need to subtract some stuffs
9 Days Ago
Merge: from networkgrid_iterationspeed_changes - Bugfix: handle more cases of lazy-initted net group subscribers instead of NREing Tests: none, trivial changes
9 Days Ago
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
9 Days Ago
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
9 Days Ago
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
9 Days Ago
Merge: from main
9 Days Ago
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
9 Days Ago
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
9 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
9 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
14 Days Ago
Merge: from projectileweaponmod_allocs - Optim: get rid of missed alloc in ProjectileWeaponMod aggregation calls Tests: inspected snapshot taken while shooting
14 Days Ago
Optim: avoid IEnumerable Enumerator allocation Not as generic, but saves an alloc Tests: took a snapshot while shooting
14 Days Ago
Merge: from buildingprivlidge_invoke_allocs - Optim: BuildingPrivlidge.AddDelayedUpdate caches it's invoke Tests: none, trivial change
14 Days Ago
Optim: cache invoking callback in BuildingPrivlidge.AddDelayedUpdate Tests: none, trivial change
14 Days Ago
Remerge of 147094 - Merge: from projectileweaponmod_allocs
14 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
14 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
14 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
14 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