1,273 Commits over 335 Days - 0.16cph!
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
Test: unit test for DroppedItemContainer::TakeFractionOfItems
Don't think we can reproduce the pooling bug with vanilla items, so adding a unit test instead. Currently fails.
Tests: ran the new unit test
Merge: from main
Missed backout CL
Hack: BiomeBenchmark - try generating clutter without incomplete server
Didn't work, since they spawn server side, but there's no server to send this info to client. Will try to migrate the clutter to client side next.
Tests: benchmark in editor
Update: BiomeBenchmark - add basic avg frame time tracking
Tests: ran scene in editor
Update: BiomeBenchmark - generate fly-through camera track
Tests: BiomeBenchmark in editor
Update: BiomeBenchmark - re-enable a bunch of procgen scatter
- Brings in vine trees, rocks
Tests: BiomeBenchmark in editor
Update: BiomeBenchmarks
- Fixed biome generation on row-islands
- Benchmark map size works with NPOT sizes
Now to figure out why forests are not coming through
Tests: BiomeBenchmark in editor
Update: BiomeBEnchmark - minor progress
- Fix invalid biome assignation per island
- Submerge the terrain
- Get rid of terrain setup in scene
- Fixed terrain heightfield to generate non-ocean topology, but the scale of the resulting terrain is too big.
Still investigating how to make topo better without inflating terrain too much.
Tests: BiomeBenchmark in editor
Update: BiomeBenchmark - disable rock scattering to speed up iteration
Will re-enable later
Tests: BiomeBenchmark in editor