2,528 Commits over 639 Days - 0.16cph!
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
Clean: ProjectileWeaponMod.Mult - use 1 as hardcoded default value
They've been manually specified as 1 everywhere, seems a bit redundant
Tests: compiles
Optim: cache all selectors that are used in mod value aggregations
Tests: got shot by a scientist. killed them with a fully modded ak
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
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
▉▉▋▄▋▅▌ ▉█▊█ ▌▊▆█▅▋▍▇▇▉▌▌▆▅▄▋▅▋▋▌▅▆▌▇▉▍▋▉▍▇ ▊▇█▄▆█ ▅▌▄ ▉▋▄▉ █▋▋█ ▍▋█▊▋▊ ▌▇▊▌▌▌▅▄█ ▇▍ ▍█▇▅▌▉▉▇ ▊▅▄ ▅▋▇▊▌█▌▌█▋▌▊▊▋▊▊▇▍▌▉▇▊▉▉▇▇▆ ▄▆▍▆▄▉▋▅▌█▆▄▋▅▉ ▌▆▅▋▋█ ▅▌ ▅█▌▉▊▉ ▅▌▆▉ ▆▋▊▉█▋ ▅▌▊▌▅▅▍▅▇ ▋▋▆▇▉▉▌▍
▄▆▄▌▇▆█▄ ▆▆▋▄▍▊▋ █▇▇▆▍█▉▋▍▄▇▌▉█▍█▍▌▌▄▉▄▄█▇▊▇ ▋▇▉█▅ ▅▋▌ █▇▆▇ ▆ █ ▉▄▌▍ █▌▉ ▇▌▌ ▆▅▊ ▆▇▆▍ ▍▇▅▋▇▇▊▆▊▌▉█▅▊▉▉▉▍▍▆█▍▋▋█▉▋ ▅▍▉▉█▅ ▇▇ ▍▅▋▆▋▅ ▋▋▍▄▍▊▅▋▊ ▅▆▇▄█▍▉ ▇▇▋▊ █▆▅▇▄▆ ▋▆▉▇▌▊▆▄▋ ▅▋ ▋▉▌▉█▇▇▆▅▅▌ ▇▇▌▇█▄▋█▊▊▍ ▊▍▍▅▆▆▉▅▍▋▌▌▉▌▍▅▍▍▋▅▍▄▍▍▆▉█ ▆▅▆▇ ▉ ▅▌▌▍▊▇▄▄▊▍ ▆▅▉▉ ▆▉ ▉▍▌▉▌▉ ▄▉▍▍ ▍▊▌▇▍▊▇▆▊▋▍▍▉▉▌▊█▍▌ ▋▇▊▆▍▊ ▆█▋ ▊▉▌ ▇▍▊█▇▆ ▇▄ ▉▋▆▌▉▉ ▉█▆▊ ▆▄▄▋▆▊ ▆█▍▊▋▅▉▊▄ ▍▊▄▌▅█▇▅▍ ▆▄▅▋▋▇▅ ▋▅▅ █▉▋▊ ▋▄ ▅▍▇▊▇▇▅ ▊▌▊ ▍▉▉▅ ▆
Clean(tests): add messages to new checks to know which permutation and player diverged
Tests: ran the modified test
▌ ▋▋▊▆▍█ █▊▉▇█▄▊ █▇▅▇▉▋▉█▌▋▅▋▍▉█▉▋▆ ▅▄▍▆▄▆█ ▍▇ ▆▅▄▆ ▌▆ ▋▌▄▄▆▅█ ██▍▍██ ▄▌▄▅▌ ▅▆▍▋ ▅▆ ▌▍ ▊█ ▇▆▋▉▇█▅▋▇██▄▋▊█▆▅▌▍▌▉▆ ▄▆▅▊▇ ▄▋▋▆▆▉▄ ▅▆▆█▅▄
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
Bugfix(tests): make AntiHack tests spawn players with colliders
Tests: ran all AH tests, all pass except for 1 already known
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
Update: set UsePlayerUpdateJobs 2 as default
- codegen
Tests: none, trivial change
Clean(tests): fix formatting inside Test.AntiHack.cs broken by auto conflict resolution
Tests: compiles
Clean: simplify sync from flying cache back to players
Tests: none, trivial change
Clean: annotate AreFlying jobs with context comments
- got rid of ref and added ReadOnly in a couple places
Tests: compiles
Merge: from reorganize_unit_tests
- Buildfix
Tests: switched through all modes
Buildfix(tests): add a missing SERVER macro guard
Tests: clicked through all modes - all compile
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.
Bugfix(tests): patch up ServerOcclusionTests
- replace out-of-date occlusion cache with a new one based on Craggy
- update CanSee and CantSee chunk pairs
- add missing initialization
Tests: ran ServerOcclusion unit tests - they pass
Bugfix(tests): CompanionServerTests - switch to persistent ClanManager
- ClanManagedDB now also lives in a temp folder for tests
- some tests now drain any backlogged traffic on the test socket
Tests: all CompanionServerTests unit tests pass consistently (finally)
Bugfix(tests): CompanionServerTests - use persistent RelationshipManager
- house RelationshipManagerDB in a temp folder
Tests: ran CompanionServerTests unit tests, 1 sporadically fails
Bugfix(tests): CompanionServerTests - setup player lookup map
Broke since one of our optims way back.
Tests: ran CompanionServerTests - now 2 failing
Bugfix(tests): CompanionServerTests - use unique persistence database per test run
If a test goes wrong, the cleanup doesn't happen, which borks all the subsequent tests in a run
Tests: ran CompanionServerTests - 16 pass, 3 fail
Bugfix(tests): rewrite GrowableGenesTests no allocs tests to use ServerProfiler new api
Think my old hacky solution finally broke
Tests: ran GrowableGenesTests test - it passes
Bugfix(tests): workaround "don't add editor components" safety check when running editor unit tests
Tests: ran GameTraceTests unit tests - they now all pass
Bugfix(tests): fix missing InvokeHandler in GamePhysicsTests
Tests: ran GamePhysicsTests unit tests, now all pass
Bugfix(tests): ProjectileTests now pass
- Skip god mode overlay setting for local player in tests
- explicitly enable main shield collider after spawning
Tests: ran ProjectileTests unit tests
Bugfix(tests): fixup ServerProfiler tests that are sensitive to type hierarchies
- release binaries from a496e80e
Tests: ran ServerProfilerTests
Buildfix(tests): all modes compile
Tests: clicked through all modes
Clean(tests): rest of Assembly-CSharp-Editor.dll tests restructure
Just gotta make sure all platforms build and check if unit tests pass
Tests: none
Merge: from useplayerupdatejobs3
- Bugfixes for dynamically enabling Jobs 3 mode
Tests: unit tests + switched Jobs 2 -> 3 on Craggy in editor
Bugfix: ensure AntiHack states are properly expanded when going from Jobs 2 to Jobs 3
Tests: sanity test on craggy in editor, switched Jobs 2 to 3
Clean: one more unnecessary playerCache passing
Tests: compiles
Bugfix: ensure SpeedhackStates and FlyhackStates have sufficient storage
- remove playerCache propagation where we already pass a ReadOnlySpan
Tests: ran unit tests
Clean(tests): 30% restructure of Assembly-CSharp-Editor.dll tests
Tests: none, will rerun once all moved
Clean(tests): restructure Facepunch.System.Tests.dll tests
- removed FPTask and associated tests (was experimental code)
Tests: ran unit tests
Clean: restructure Rust.Global.Tests.dll tests
Tests: ran unit tests. some OBBTests sporadically fail, but pass on 2nd run - think same as before
Clean(tests): rename DummyServer -> TestServer
Tests: compiles
Clean(tests): consolidate various test entities/systems
Tests: none, going to happen later
Clean(tests): Move test utilities to Tests and Tests.Perf namespaces
- replaced manual measurement loops with Test.Perf.MeasureAndPrint
Tests: none, leaving till later
Merge: from dynamic_object_work_queue_shrinking
- Optim: ObjectWorkQueues now shrink to larger capacities overtime
Tests: procgen map, ensured outpost turrets still tracked and fired at me
Update: debug.printqueues now also prints queue capacity
Tests: printed queues while being blasted by turrets
Optim: ObjectWorkQueue now shrinks to dynamically adjusted minimal capacity instead of 0
- explicitly calling Clear resets the state back to inital 256 capacity
Grows capacity by 10% every minute if 60 overcapacity events have been recorded. This should eliminate allocations for bursty workloads in long term.
Tests: visited outpost, got blasted by turrets
Merge: from fix_invoke_flood
- Optim: prevent repeating invokes flooding work after stalls
Tests: observed animals moving normally
Optim: change scheduled time for repeating invokes
Previously, we would schedule repeating invokes from current time, meaning overtime they would drift towards one frame, causing work spikes. Now we maintain interval in respect to original time, which should preserve original scattering
Tests: ran around with a lit torch on procgen, some wildlife moving