branchrust_reboot/main/projectile_jobscancel
124 Commits over 30 Days - 0.17cph!
Update: BaseRaidBench - emulate timed explosive fuse
Not really important for now, but later once rockets fly upwards and have a chance to miss, this should make it match reality closer
Tests: ran the scene
Update: BaseRaidBenchmark - expose batching mode via component
Tests: none, trivial change
Update: BaseRaidBench - disable camera shake and hurt effects
Tests: ran the scene
Update: Add BaseRaidBench to build scene list and mark it for maps bundle
- Also removed the nuked Foliage scene - forgot to clean it up
Tests: none
Update: BaseRaidBench - unblock pooling
Takes the edge off halfway through the benchmark, but initial 5 seconds are still rough.
Tests: ran the scene
Update: BaseRaidBench - reposition camera to above the circle
Tests: ran scene
Bugfix: BaseRaidBench - fix NREs by loading game manifest on start
Tests: ran scene
Update: BaseRaidBench - players now animate and produce muzzle flashes
Tests: ran the scene
Bugfix: BaseRaidBench - track weapon cooldown properly
- also account for animation delay for weapons that have it
The benchmark is now much more tame.
Tests: ran the scene
Update: BaseRaidBench - stagger initial weapon cooldowns
More realistic, and avoids spiking specific frames
Tests: ran scene
Update: BaseRaid - emulate rockets and grenade movement
Tests: ran scene, player is blasted to high heaven
Update: BaseRaidBench - use projectile specific velocity
Tests: ran scene
Update: BaseRaidBench - weapons now use their respective projectiles instead of rifle bullets
- EffectLibrary can return GameObjects now
Tests: ran the scene. Server-side projectiles need further massaging (as there's no server)
Update: BaseRaidBench - implement firing cooldown
At least now frame time stabilizes around 150ms.
Tests: ran the scene.
Update: BaseRaidBEnch - wip shooting
Since there's no firing cooldown, 100 players shooting every frame lags a ton
Tests: ran scene
fixed potential break in TraceWaterRays/TraceWaterSpheres logic that would cause casts to miss water traces if an earlier one had hit the max number of colliders
sharing more data between batched projectile effect processing - only accessing transform pos/rot once per projectile and only checking retrieving local player entity data once per batch
Bugfix: BaseRaidBench - this is no longer nude beach
Tests: built C+S and C-only, ran the scene
Update: BaseRaidBench - simulate client flow
- use a fake client backend and a dummy connection
Fixes players not facing the target, but breaks player clothing for what-ever reason.
Tests: ran scene
Update: BaseRaidBench - wip weapon aiming
- Weapon debug graphics confirm aiming direction
- Player model doesn't face the right way (need to run client updates, that's next)
- added benchmark-related safety checks in local client logic
This also hijacks main camera, I'll have to fix that later
Tests: ran the scene
Bugfix: BaseRaidBench - make sure weapon flags are synced with held state
Tests: ran the scene
added Projectile.UseBatched ClientVar to switch between serial and batched tick for projectiles
Update: BaseRaidBench - give players projectile weapons on spawn
For what-ever reason, doesn't appear in hands(instead on back), despite being reported as "held". Still investigating
Tests: ran the bench scene
Jobified trace-testing in HitboxSystem, also replacing local NativeArray helper function with existing Expand static extension
corrected InitializeVelocity on projectile to keep Projectile performance test consistent between runs (increased run-count)
Optim: reduced unnecessary Transform reads in batched position/rotation update, also added AddRange(BufferList<>) function to BufferList to change to that for marginally faster loop speed
Test: consistency tests passing with serial using old method still
Update: BaseRaidBenchmark - adjust the camera positioning to get the full circle in view
Tests: ran the scene
Update: BaseRaidBenchmark - players are visible and dressed
Tests: ran the scene
New: BaseRaidBenchmark - stress test client via a raid scenario
- Doesn't do much, just ground framework
Tests: ran the scene - saw players spawn (but not their visuals)
Update: World Setup Benchmark -> BiomeBenchmark World Setup rename
- replaced default params on BiomeBEnchmark with placeholder to indicate they don't do anything
Tests: none, trivial changes
Clean: Refactor free-slot searching logic
Hope is to make it harder to mess up index calculation when writing more code of this style
Tests: GamePhys unit tests + projectile consistency unit test
Added extra sanity checks to projectile consistency testing
Tests: GamePhysics.TraceRrays and TraceSpheres coverage
Wasn't covered previously which led a bug slip in. But has already been fixed.
Tests: ran it with bugfix revwerted - failed(as expected). Reapplied fix - passed
added missing effects update on batched projectiles and retiring into the prefab pool
clear static test field in pet-test teardown
Clean: simplify previous bugfix
Tests: ran the unit test
Update: Projectile.TestConsistency now checks for number of phys commands issued
Tests: unit test passes
Bugfix: Projectile.TestConsistency - when substepping movement, use the right trace result
Tests: consistency unit test now passes
Bugfix: TestProjectileEntity now works in C+S
Tests: ran the previously failing unit test
Bugfix: Projectile.Batch - don't over-simulate prjectile when reacting to a hit/ricochet
Also noticed serial test vs entity is failing - will fix next
Tests: single-projectile-batch test passes, but the whole batch fails
Update: ProjectileTests.TestConsistency - debug code to isolate projectile
Still fails on 520, but now with different results(proj moves, but different height).
Tests: ran unit test - fails (expected)
Update: ProjectileTests.TestConsistency - rewrote logic to run both serial and batched in one test
- Removed old serial validation logic
- Renamed PerfSerial test to Performance (since it also runs batched variation)
Detects an issue currently, investigating.
Tests: ran the new test - fails (kind of expected, but still suspicious)
Update: TestLineOfSightBatched
A lil cheeky 44k raycasts test. Missing the actual batched query impl.
Tests: ran the test - failing as expected
cached native allocations, batched projectiles now save between 30% - 50% of the runtime compared to serialized in performance tests (gains increase with projectile count)
Update: GamePhysics tests - move box grid creation to individual tests
Avoids polluting the world for other tests(problem for LineOfSightBatched)
Tests: ran the updated unit tests
Update: GamePhysics tests - spawn ignore volumes per tests
Tests: ran the 3 affected tests - they pass
multiple significant fixes to GameTrace, new Projectile and GameTrace tests are passing but seeing a slight differences in projectile counts with performance test that's indicating some untested edgecases
Update: TestTraceAll - don't spawn Terrain boxes
We already have terrain at the bottom of the ocean
Tests: ran TestTraceAll
Tests: new GamePhysics tests - TestLineOfSight
- Also making craggy loading in unit test stable by applying same fixes from Test.Projectile
No batched variant as we haven't implemented it yet
Tests: ran the new unit tests
Tests: new GameTrace tests - TestsTraceAll and TestsTraceAllBatched
TestTraceAllBatched is currently failing, as it's wip
Tests: ran new unit tests