branchrust_reboot/main/projectile_jobscancel
96 Commits over 30 Days - 0.13cph!
Hack: workaround for the BurstClothManager NRE - clean the run in Update
Will fix the burst cloth related prefabs in a separate branch.
Tests: ran the benchmark - no more NREs
Update: forgot to save BaseRaidBenchmark scene with the changes
Tests: none, trivial change
Update: BaseRaidBench - add support for spawning a random base from a list
Tests: ran the scene
Update: DemoBuildingsViewer - add ability to export as a merged base
Tests: exported 3 bases from staging demo as 1
Update: DemoBuildingsViewer - can load multiple bases in a scene
Exports them separately, for now.
Tests: loaded top 20 bases from staging demo
Bugfix: DemoBuildingsViewer - spawn TOD prefab to allow digital clock to work
Otherwise it NREed
Tests: loaded base 3839 from staging demo
Bugfix: DemoBuildingsViewer - prevent attribute accumulation that leads to skin duplication
Tests: loaded up the largest base from staging demo
Bugfix: DemoBuildingViewer - fix building block skin spawning in the wrong location
Discovered that there's a new bug with duplicating skins on succesful scene opens
Tests: spawned the largest base from staging
Bugfix: BaseRaidBench - ensure weapons fire right projectiles
- Also reset cooldowns between runs
Tests: ran the scene
Update: BaseRaidBench - add support for multiple run configurations
- Also remote players now have id in their game object names for easier debug
- Fixed a bug with accumulating frame counter (:ops: #2)
- Updated subtitle display to see what's running
There's a burst-related NRE that gets picked up, but it's not directly related to benchmark.
Tests: ran the scene
Update: BaseRaidBench - record run name in results
Next up to setup variable-player runs.
Tests: ran the scene
Update: BaseRaidBench - output avg projectiles per frame
Helps us track changes to timers(bases made the benchmark faster as there's less projectiles on average)
Tests: ran the scene
Update: BaseRaidBench - support skins for spawned bases
Tests: ran the scene in editor
Bugfix: BaseRaidBenchmark - walls now appear on spawned bases
- Export the model bitmask for building blocks
- Updated the base json
Tests: ran the scene
Bugfix: unblock use of DemoBuildingsViewer after running benchmark/playing in editor
- Done via temporarily shutting down steam connection
Tests: opened the scen from the demo after running the benchmark
Update: move building hierarchy sorting to export
- also fixed the bug with using Append instead of Enqueue
Tests: ran BaseRaidBench scene
Update: BaseRaidBench - spawn bases around the firing circle
- added the largest base from my demo
Walls are borked, same issue as editor, gonna fix next.
Tests: ran the scene
Update: export parent IDs for entities in buildings
Tests: exported largest base from demo - confirmed expected entity had ID
Update: Move Building to it's own file
Makes it accessible for benchmarking
Tests: compiles in editor
Update: DemoBuildingsViewer - export base as a json file
Going to see if it's enough to rebuild the base for the benchmark
Tests: exported largest base from my demo
Bugfix: conditionally start bootstrap timer since it can be null
Tests: none, trivial change
Buildfix: remove dead burst code and move job to namespace
Avoids name mangling shenanigans
Tests: build client locally
Update: enable batched projectiles and water checks by default in the BaseRaidBenchmark scene
Tests: ran the scene
Update: add benchmark timer to SoundManager
- replace magic values for timers with named consts
It's chonky, so tracking it as well.
Tests: ran the scene
Update: add benchmark timers to Projectile.Update and BatchUpdate
Tests: ran the scene in editor, saw output
Update: Rewrite BenchmarkTimer to allow for accumulating time
- Renamed API to make it clearer
Tests: measured against a stopwatch in bootstrap loading
Update: BaseRaidBenchmark - lay down basic benchmark timer collection logic
Will contribute to benchmark results, but right now don't have any relevant timers + need to rework how they are implemented.
Tests: ran the scene in editor
Bugfix: DemoBuildingsViewer - fix missing walls
- Manually pre-process prefabs to get around editor skipping preprocessing
- Add an editor-only override for Facepunch.Instantiate to not treat gameobjects as prefabs
- Gather building entities from all keyframes
Tests: loaded biggest base from my cleint demo - matches how demo renders it
New: DemoBuildingsViewer(Tools/Demo Buildings Viewer) - utility to extract buildings from a demo and create a scene of them
- Fixed VisualFoodSetting.PreProcess to nominate for deletion, instead of destroying directly
Currently only looks at keyframe 0 to detect building entities, which doesn't seem like enough
Tests: used a client demo from a release server to spawn a bunch of building scenes
Hack: BaseRaidBench - avoid flooding audio manager
During benchmark, we create too many audio sources and don't clean them up with default budgets - so we up them abit.
Tests: ran the benchmark - no longer grinds at 3fps
Bugfix: BaseRaidBench - audio no longer missing
This aligns it with running from game menu, so standalone editor runs now also struggle under AudioManager lag.
Tests: ran scene + ran `benchmark BaseRaidBenchmark` from game menu
Update: editor benchmarking runs now consistently set benchmarking flag
Tests: ran RaidBenchScene in isolation and all bench scenes in series - no exceptions
Update: add BaseRaidBench to the benchmark scene list
Tests: ran the benchmark command - it did execute my scene, but also started lagging as heck
Update: BaseRaidBench - set batched mode as default for scene
Update: BaseRaidBench - restore global state at the end of the benchmark
Tests: ran the scen
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