branchrust_reboot/main/useplayerupdatejobs3cancel
30 Commits over 28 Days - 0.04cph!
Clean(tests): replace more handrolled index set generation with AntiHackTests.GenerateIndexPermutations
Tests: ran all afected tests
Bugfix(tests): use 1^-5 epsilon for water level consistency in TestWaterLevelsConsistency
Tests: ran unit test
Merge: from useplayerupdatejobs3/free_tasks
- New: fork of Cysharp/UniTask with less allocs
- Optim: reduce allocs around tasks in Jobs 3 mode
Tests: jobs3 on craggy with 2 players, built client and booted
Merge: from defer_tick_analytics
- Optim: start analytics tasks earlier to avoid blocking main thread
Tests: Jobs3 on craggy in editor
Optim: save on action alloc when setting up tasks for UpdateSubs_AsyncState
Tests: none, trivial change
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
Clean: refactored NoClip perf tests to use Utils.MeasureAndPrint
Tests: ran noclip perf tests
Clean: fix stream of warnings from running AntiHackTests
Tests: ran noclip tests
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
Clean: simplify TestNoClipConsistency unit test
Tests: ran updated unit test
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
Update(tests): cover all speedhack_protection levels in tests
Tests: ran unit tests
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
Update: add a couple more test positions for unit tests
Tests: tests pass
Update: move normal calculation logic to HeightMapQueryStructure
- Give couple methods a rename
Tests: ran unit tests
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
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
Update: shifting job dependency downstream
Tests: none, trivial change
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.
Buildfix: type missmatch
Tests: editor compiles
Update: add BasePlayerJobs.CalcPlayerSpeedJob
Tests: none
Update: add ScatterValueToJob utility job
Tests: none
Update: add TerrainHeightMap.GetNormalsIndirect
Tests: none
Buildfix: fix up missed renames
Tests: unity compiles
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
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