1,688 Commits over 427 Days - 0.16cph!
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
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
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: AutoTurret.ProcessInterferenceQueue - remove last float time calc
Think all server-side logic has been ammended
Tests: builds in editor C+S
Update: AutoTurret.nextAmmoCheckTime -> double
Tests: builds in editor C+S
Update: AutoTurret.nextForcedAimTime -> double
Tests: builds in editor C+S
Update: TestLineOfSightBatched
A lil cheeky 44k raycasts test. Missing the actual batched query impl.
Tests: ran the test - failing as expected
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
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
Merge: from autoturret_optim
- switch timing variables from float to double
Tests: editor builds C+S + confirmed deployed turret scans & detects, shoots, reacts to flank shots
Update: AutoTurret.nextShotTime -> double
Tests: editor builds C+S
Update: AutoTurret.nextIdleAimTime -> double
Tests: editor builds C+S
Clean: delete AutoTurret.lastShotTime
Was never set, and the code that depended on it had to do extra calcs, only to discard results.
Tests: editor builds C+S
Update: AutoTurret.nextVisCheck -> double
Tests: editor builds C+S
Update: AutoTurret.lastDamageEventTime -> double
Tests: editor builds C+S
Update: AutoTurret.lastTargetSeenTime -> double
Tests: editor builds C+S
Update: AutoTurret.lastScanTime -> double
Tests: builds in editor C+S
Merge: from pooledlist_fixes
- Bugfix for invalid pooling of PooledList-subclassed types (like Eqs.PooledScoreList)
Tests: unit tests + print_memory PooledList tracking in editor with Wolf2
Bugix: Reimplement PooledList(and others) via BasePooledList
- Fixes incorrect pooling of inherited-from PoolingList types
Tests: spawned wolf2 on craggy, enabled Ai, print_memory reports correct numbers of Eqs.PooledScoreList and no negative PooledList cases
Update: locking in unbox.any version
- Updated comment explaining why unbox.any instead of Unsafe.As (tl;dr - a smidge faster, but no runtime type checks)
- added a unit test that validates runtime checking
Tests: unit tests
Update: add BasePooledList template
- Updated test to use it
Boilerplate for various PooledList<T> implementations
Tests: test now passes
Update: add unit test that showcases invalid PooledList<T> pooling
Tests: ran the test - fail as expected
Update: projectile perf test
Tests: ran the perf test
Buildfix: rename UnitTests.WaterLevel to WaterLevelTests
It was colliding with a non-namespace WaterLevel and causing a headache
Tests: editor build in C+S
Update: refactor TestConsistency and make it cover a larger area
- increased proj velocity, as it was possible for proj to start inside the shield, breaking validation
Tests: ran unit test
Update: TestConsistency now validates repl projectiles as well
Test: ran the unit test
Update: TestConsistency now passes
- validates auth proj hit their players/shields
- added utility that helps revalidate projectile hit and get more info (auth only for now)
Need to expand to re-validate non-auth hits
Tests: ran projectile consistency test
Update: wip fixing the consistency test
- fix invalid tracking of on which frame a hit is expected
- extra validation code to confirm hits to expected players - revealed missmatches
Need to redo how I setup the players to avoid random overlapping
Tests: ran the test
Update(wip): new comprehensive projectile test on craggy
- spawns a bunch of players on craggy and drops projectiles on them
Currently fails as majority of hits miss (but expect 100% hit rate) - likely bad test setup. Will investigate tomorrow
Tests: ran unit tests
Update: projectile tests against players with shields
Test: ran new unit tests
Update: rewrite TestProjectileWater to attempt to hit a player in water
Tests: ran new TestProjectileWater - pass all
Update: extract all miss cases from projectile tests into separate case
It takes the same path internally, so no point in rerunning the same test case
Tests: ran all proj tests - pass
Update: projectile-water test via Craggy
Pretty close to covering all cases
Tests: ran new tests
Update: Projectiles that are managed by unit tests only run 1 substep
Tests: projectile unit tests now pass
Update: Projectile Tests now run inside Craggy
Most tests are failing because now their substepping eventually hits water/terrain - will fix next.
Tests: ran unit tests
Update: TerrainTexturing - defer init in editor, relly on manual init by user
This prevents it from screwing unit tests when loading scenes
Tests: ran part of updates projectile unit tests (to be committed)
Update: adding mounted-player related tests
- Fixed names of tests as turns out if they share a name, then all of them get executed when trying to run only one
- Fixed not cleaning up palyer's physics objects at the end of tests (caused tests to fail unexpectedly when ran all together)
- test projectile now has thickness (relevant to test with players in same vehicle)
Tests: ran all unit tests