1,881 Commits over 457 Days - 0.17cph!
Add: new Projectile vs world base entity tests
Tests: ran the unit tests
Merge: from autoturret_optim
- Fix to auto turret not responding to shots outside of firing arc
- Fix to turret not reacting to shots if it got depowered then powered up again
- Fix to turret snapping to hostiles outside of it's default firing arc when powering up
Tests: shot it, ran around and powered it up and down using infiniteiopower in various combinations
Bugfix: prevent turret snapping to a hostile outside of the default firing arc when powering up
Tests: while hostile, depowered turret, got behind it and powered it up - it didn't snap on me until I shot it again
Bugfix: reset turret's cached visibility when unsetting the target
This could cause the turret to think it doesn't have a target, yet has a visible target(unpowering the turret would cause this, for example). It prevents damage reaction.
Tests: while the turret was aiming at me, disabled io power cheat. re-enabled - now responds to shots. Spotted another bug though
Bugfix: turret will respond to sneak attacks
- takes 3 seconds to drop aggro that forces aiming
Spotted another bug - target and targetVisible can desync
Tests: spawned a turret, snuck behind, powered up, shot at it - it rotated
Update: expand projectile test
- Validates hits and misses, auth and replicated
- renamed TestProjectileBaseline to TestProjectilePlayer (as I'll be adding more test types)
Tests: ran all resulting unit tests
Update: working TestProjectileBaseline baseline test
Was more complicated than expected, but we got there.
Tests: ran the unit test
Update: move PlayerWalkMovement awake to init
Editor unit tests don't invoke lifecycle events (awake/onenable), this change makes it easier to use the class with unit tests.
Tests: in C+S editor on craggy - spawned and ran around. Also spawned a fake player - no errors
Update: started work on projectile unit tests
Incomplete, will continue tomorrow.
Tests: none, it's too derpy
Merge: from autoturret_optim
- Speeds up AutoTurret::ServerTick by not updating nested transform hierarchy (gun_yaw and gun_pitch)
Tests: deauthed gun turret shooting me from different positions/angles
Optim: avoid requiring position from a transform in AutoTurret.ServerTick
Minor change, but should be helpful either way
Tests: none, trivial change
Merge: from main
Tests: editor builds
Clean: remove unused Transform param on AutoTurret.FireAttachedGun
Tests: editor builds
Bugfix: AutoTurret now shoots in all directions
Tests: gun turret with deauth
Clean: simplify code
Tests: gun turret being deauthed
Bugfix: AutoTurret now correctly detects player in front of it
Still need to fix shooting code.
Tests: gun turret on craggy being deauthed
Update: AutoTurret - rewrite rotations via matrices instead of TRS
- Delete all TRS related stuff (turns out you can't do non-uniform scaling with it :/)
- Incorporate transform hierarchy up to gun_yaw
This should be slower, but different PC - will re-bench once home
Tests: spaend a turret and caused it to rotate different ways
Optim: AutoTurret - virtualize part of transform hierarchy on server
- Breaks dependent logic - will update next
This saves 75% of time in synth test of updating aiming of 1k turrets (1.29ms -> 0.32ms)
Tests: perf test + debug rendering
Tests: PerfTest for AutoTurret.UpdateAiming
Hacking AutoTurret's code, it suggest we can shrink this by 85%
Tests: ran the perf test
Merge: from growablegenes_allocs
- clean of 1 line
Tests: none, trivial change
Clean: remove unused static
Tests: none, trivial change
Merge: from growablegenes_alloc
- reduces(removes?) junk allocs from growables
Tests: editor builds + alloc unit test
Clean: unused usings
Tests: none, trivial change
Merge: from main
Tests: editor builds
Clean: remove Sort from BufferList
Not used anywhere
Tests: editor builds
Optim: don't sort slotWeights to avoid internal allocs
Array.Sort(T[], IComparer<T>) in this version of mono always allocates a Comparison<T> internally. Lucky for us, we can just simplify the code and avoid this alloc.
Tests: alloc unit test passes
Optim: avoid allocating compoarison delegate in GrowableGenes.PickWeightedGeneType
Tests: unit test
Test: GrowableGenes test to track allocations
- only tests GrowableGenes.GenerateRandom, but that was enough of a head-ache
Found one opportunity to get rid of garbage alloc, but also found out Array.Sort(T[], int, int, ICompare<T>) always allocates
Tests: ran the unit test
Merge: from benchmarking_update
- Added Biome benchmark
- Re-enabled other benchmark scenes
- Deleted Terrain and FoliageGrid benchmarks, demo benchmark
Tests: benchmark in editor and standalone client
Merge: from item_pooling
- Fixes bugs with pooling use - List<Item> leak and use-after-free Item use
- Added tests
Tests: unit tests + confirmed container corpses no longer leak List<Item> from pool
Merge: from main
Tests: none, no conflicts
Clean: remove FoliageGridBenchmark and associated script
Superseded by BiomeBenchmark
Tests: benchmark in editor
Update: BiomeBenchmark - expose camera flight speed
- Set default camera speed to 16, similar to what it was when lerping
Tests: benchmark in editor
Update: BiomeBenchmark - split timings per topology
Certain topologies generate a lot of visual clutter, so have a noticeable impact. Previously the effect would be lost when averaging the timings.
Tests: benchmark in editor
Update: BiomeBenchmark - add it to standalone build
Will replace FoliageGridBenchmark today
Tests: autobench in client
Update: BiomeBenchmark - rewrite heightfield gen to generate a lower coastline
- Also slowed down the camera speed by half
Tests: benchmark in editor
Update: BiomeBenchmark - introduce a delay when starting and teleporting the camera to islands
Helps with asset pop-in.
Tests: benchmark in editor
Update: BiomeBenchmark - snap camera to player height above ground
Tests: benchmark in editor
Bugfix: BiomeBenchmark - put procedurally created terrain on Terrain layer
This caused foliage/clutter to not spawn as much as it could, leaving islands barren.
Tests: benchmark in editor
Update: BiomeBenchmark - switch to custom topology generation
- Added extra info about under-camera topology to help investigate things further
Still not getting the effect I want
Tests: benchmark in editor
Update: BiomeBenchmark - debug mode
- Freezes camera on a specified island at specified flight pos
Tests: benchmark in editor
Update: BiomeBenchmark - control the size of biome islands isntead of entire map
Makes this easier to control the benchmark
Tests: benchmark in editor
Update: BiomeBenchmark - add clutter spawning
- Runs a copy fo server-side hacked-together logic
I can see various trees spawning on islands, but the rocks block too much of area - going to try to reduce that next.
Tests: benchmark in editor
Update: BiomeBenchmark - allow filtering which biomes to test
- also slowed down the camera flight to help with pop-in
Tests:benchmark in editor
Buildfix: wrap new test in server if-def
Tests: editor build check
Bugfix: TakeFractionOfItems no longer leaks List<Item>
Tests: destoyed a box with `dropCorpseOnDeath 1`, pool stats no longer had an active List<Item>
Bugfix: TakeFractionOfItems no longer drops items that didn't fit destination container
Tests: unit test - previously failed, now passes