userDaniel Pcancel

2,384 Commits over 608 Days - 0.16cph!

5 Hours Ago
Optim: save on action alloc when setting up tasks for UpdateSubs_AsyncState Tests: none, trivial change
5 Hours Ago
Merge: from main
5 Hours Ago
Merge: from updatesubs_optim - Optim: player subscriptions can be updated in parallel (Jobs 3 feature, currently disabled) - New: unit & perf tests for net group updating Tests: unit tests
5 Hours Ago
Update: disable parallel sub updates in Jobs 3 mode - ripped out test code for network grid preallocing Going to enable it once dependent work is done. Tests: unit tests fail (as expected)
Today
Optim: schedule tasks for batches of networkables, instead of individual ones Helps reduce alloc pressure at high counts(2x more than core count), but it's a very rare occasion (when everyone rushes to connect to a fresh server) Tests: unit tests
Today
Update: skip calling UpdateSubscriptions with 0 networkables Tests: none, trivial change
Today
Optim: main thread integrates results from subs gathering tasks while waiting for them to complete Tests: unit tests
Today
Optim: allow main thread to steal one of tasks update subscription tasks Makes single-player path alloc free. Tests: unit tests
Today
Optim: use persistent added/removed lists instead of pooled ones Tests: ran unit tests
Today
Merge: from sv_occlgroups_fix_reinit - Bugfix for ServerOcclusionGroups NRE for players with custom init flow - Unit tests Tests: ran unit tests
Today
Merge: from serverprofiler_linux_fix - Bugfix for server profiler recoirding empty streams or infinitely recording on Linux Tests: perfsnapshot on Ubuntu
Today
Bugfix: ServerProfiler - fix profiler failing to record due to uninitialized variable - release bins built from fe80de3c Tests: ran perfsnapshot on a server on ubuntu 20.04 in wsl
Yesterday
Update: replicate hardcoded network grid logic into data setup of NetworkVisibilityGrid - added PositionToGridInd, but not used/tested Going to add grids visualization next Tests: none
5 Days Ago
Update(tests): add 8 players perf test to UpdateSubscriptions - add some TimeWarnings to parallel UpdateSubscriptions - got rid of caching all Visible sets, just reuse 1 per task from pool Tests: ran tests
5 Days Ago
Update(tests): Pump up those rookie network streaming range numbers in unit tests (1,2 -> 4,8) to match real servers - rewrote spawning logic in UpdateSubscriptions unit tests to ensure we spawn within main layer 128 player perf test is now showing much better results: Serial - 10.3ms, Parallel - 1.7ms Tests: ran unit tests
5 Days Ago
Optim: run gather network groups in parallel - changed dimensions of net grid in DummyServer, now it's using a 512 grid with 64 cells 128 players: 0.54ms vs 1.15ms of serial. Relies on a prealloc hack, need to support it properly Tests: ran unit tests
5 Days Ago
Bugfix: ServerOcclusionGroups - handle null net group when player goes through custom flow - renamed branch to *_reinit (as limit networking turned out not to be related at all) Tests: ran all unit tests, they pass
5 Days Ago
Update(tests): ServerOcclusionGroups - add a net-group reinit test Not a flow we have on servers for now, but it could change in the future Tests: new tests fail (as expected)
5 Days Ago
Merge: Cherrypick of 145087 from /main/useplayerupdatejobs3/updatesubs_optim - Bugfix for DummyServer not being able to spawn players/bots in unit tests Tests: ran occlusion group tests, now pass
6 Days Ago
Optim: UpdateSubscriptions - parallelize network group comparison Gives us ~15% improvement over serial. Hoping to parallelize gather - that's the biggest perf sink Tests: ran unit tests
6 Days Ago
Bugfix(tests): fix perf tests doing nothing in warmup Tests: ran perf tests
6 Days Ago
Update(tests): add perf tests for serial and parallel UpdateSubscriptions Tests: ran it
6 Days Ago
Update(tests): added consistency test for BasePlayer.UpdateSubscriptions - fixed a bug with stepping players who's timestamp is not due yet - Refactored serial code slightly to keep the structure consistent Tests: ran unit test
6 Days Ago
Bugfix(tests): when setting up a dummy server, ensure heighmap is also initialized Needed to accomodate recent changes with tunnel net groups Tests: perf test for snapshot deps now runs
7 Days Ago
Update: rewrite BasePlayer.UpdateSubscriptions into batch form Doesn't actually do anything different, just prep for adding managed tasks to it. Need to add unit tests and perf tests first Tests: booted into Craggy with jobs 3 - was able to see entities in the world
7 Days Ago
Bugfix: PartialCompare - don't miss last object in b listhashset Could lead to a duplicate pushed to removed list Tests: ran unit tests
7 Days Ago
New: ListHashSet.PartialCompare - early outs upon reaching addedLimit and removedLimit - added unit and perf test It still has linear complexity, but does seem to scale better Tests: unit tests
8 Days Ago
Clean: refactored NoClip perf tests to use Utils.MeasureAndPrint Tests: ran noclip perf tests
8 Days Ago
Clean: fix stream of warnings from running AntiHackTests Tests: ran noclip tests
8 Days Ago
Update(tests): added perf tests for IsSpeeding and AreSpeeding AreSpeeding is slower at 50 players, but faster at 200 players (probably transient allocs). Tests: ran unit tests
8 Days Ago
Clean: simplify TestNoClipConsistency unit test Tests: ran updated unit test
8 Days Ago
Merge: from spectate_stay_after_dc - Bugfix for disconnecting players staying standing with UsePlayerUpdateJobs 2 Tests: spectated disconnecting server
8 Days Ago
Bugfix: ServerOcclusionParallel(Jobs 2) - when spectator is hovering in a net group cell, use that cell's occlusion group As the spectated player disconnected, we would stop populating the occlusion results cache, thus leaving spectator in a frozen-world state Tests: on craggy with Jobs 2 - spectated a player that disconnected, was able to see them sleep. Did same from outside network range.
8 Days Ago
Merge: from main
8 Days Ago
Bugfix: uncomment tickState caching Left it commented because I thought it would help with unit test validation, but it's completelly unrelated to my unit tests. Tests: on Craggy tried to sprint with UsePlayerUpdateJobs 0
9 Days Ago
Update(tests): cover all speedhack_protection levels in tests Tests: ran unit tests
9 Days Ago
Update: expand isspeeding test coverage by generating index permutations Revealed a bunch of false-positive access violations, fixed by sprinkling NativeDisableParallelForRestriction (hate it) Tests: ran unit tests
9 Days Ago
Update: add a couple more test positions for unit tests Tests: tests pass
9 Days Ago
Update: move normal calculation logic to HeightMapQueryStructure - Give couple methods a rename Tests: ran unit tests
9 Days Ago
Bugfix: basic arespeeding unit tests now pass - use the right interpolators for IsSpeeding - add overloads to TerrainHeightMap.GetNormalsIndirect and antihack specific jobs to accept deferred arrays - make IsSpeeding work on CachedState Tests: ran unit tests
9 Days Ago
Update: add basic consistency unit tests for AntiHack.IsSpeeding and AreSpeeding Currently fail, as I forgot to adjust the IsSpeeding logic after state cache changes. Tests: ran unit tests
12 Days Ago
Update: shifting job dependency downstream Tests: none, trivial change
12 Days Ago
Update: added AntiHack.AreSpeeding - (almost) fully jobbified version of IsSpeeding Only active with UsePlayerUpdateJobs 3. Needs unit tests, will do that later. Tests: booted on craggy with UsePlayerUpdateJobs 3 and ran around.
12 Days Ago
Buildfix: type missmatch Tests: editor compiles
12 Days Ago
Update: add BasePlayerJobs.CalcPlayerSpeedJob Tests: none
12 Days Ago
Update: add ScatterValueToJob utility job Tests: none
12 Days Ago
Update: add TerrainHeightMap.GetNormalsIndirect Tests: none
12 Days Ago
Buildfix: fix up missed renames Tests: unity compiles
12 Days Ago
Update: AntiHack now track it's own persistent cache of player states - base player internals redirect to the cache when jobs 3 is set Gets synced when player enters and leaves player cache (even if they're disconnecting). This allows us to change jobs level without mesing up player state. Tests: none, WIP
12 Days Ago
Update: Gather more player state for Jobs3 work - rewrite how we add to/remove from PlayerCache to add custom handling for specific systems (needed for AntiHack) Tests: none