branchrust_reboot/main/hackweek_procgen_asynccancel
14 Commits over 0 Days - ∞cph!
Optim: PrefabPreProcess.FindComponents is now using GetComponentsInChildren
With profiler, this ended up 2x faster than old way (lighthouse monument goes from 96ms to 46ms)
Tests: used old code inline to validate outputs of new code
Optim: PrefabPreProcess - replace GetComponent with TryGetComponent
Those are cheaper since they do less allocations and text formatting. Saves ~35s (but new flow is still slower).
Tests: ran procgen with early out
Update: Merge prefab loading and preprocessing to run concurrently
Surprisingly leads to worse timings than them being separate (120s prev CL vs 144s new). Might be overhead from doing a single prefab per frame
Tests: ran procgen with early out
Update: move prefab processing to WorldSetup
Tests: ran procgen with early out
Update: Prefab<T> gains a convenience (Prefab, T) constructor
Tests: compiles
Update: Merging asset loading flows together
- still editor only + debug code to early out
- still slow (there's a number of issues left to resolve)
Discovered that mixing Sync + Async loads causes an integration queue flush(big stall for us). This'll be a tricky problem to address, since SoundDefinition (and I presume others) load assets as part of OnValidate
Tests: procgen in editor
Update: hooking up gameobject spawning to async load logic
- Contains a bunch of testing code used for profiling, will clean up in next update
Needs a bit of rework to ensure both the orignal flow and new flow can work together.
Tests: ran procgen
Bugfix: fix out of bounds access during prefab shuffling
Tests: ran procgen, no exceptions
Update: implement missing logic for both GatherAssets and Process
- GatherAssets now respects all relevant settings and sorts paths
- implemented Process that works on a batch of objects
Tests: only GatherAssets has been checked (confirmed reduction of assets due to config use)
Update: exposing prefab preprocesing from GameManager
Tests: none, simple change
Update: List and Array Shuffle range overloads
Tests: none, trivial code
Optim: replace prefab search logic with editor manifest lookups
- commented out a bunch of code for quicker iteration, wil lrevert later
- doesn't account for monument duplication/probability
Significantly faster because we don't load any assets in the process - goes from 30s+ down to 15ms
Test: tried to procgen default editor map
Update: Sort editor manifest by path
Allows to do faster lookups
Tests: ran in the editor
Update: initial work on parallelizing prefab loading during editor procgen
Loads too quickly(0.2s instead of 90) - I feel like it only loads the root-level gameobject, instead of the entire hierarchy. Will continue later.
Tests: ran it once, got some telemetry, but already certain it's wrong.