branchrust_reboot/main/base_occlusioncancel
117 Commits over 92 Days - 0.05cph!
merge from base_occlusion/prison_gate -> base_occlusion
Fix allocations from anchoring of faces -> network groups
Fixed deployables checking all changes to building blocks nearby instead of only the most recent ones
Fix placing / destroying doors refreshing all doors on the server instead of only the door that was modified
merge from main -> base_occlusion
merge from main -> base_occlusion
Optimize the player room detection code
- only invalidate a deployable & player's cached room when the rooms near it are rebuilt
Add way to simulate player load (subscriptions, room detection)
Run full voxel based flooding of every single base to get a good source of truth of what every base's visibility should be, so we can then sus out faces of building blocks that have missing sockets & incorrect connections
Fix full height walls sometimes having the bottom face connecting to the top face of a neighboring wall
Update individual room test data for base occlusion
- this is a random selection of bases from the full map data that was also have, will explore a better way to store it in future but for now it's fine
merge from main -> base_occlusion
Update the eu_15 test data zip
Fix angled walls sometimes picking the incorrect adjacent half height wall
Fix edge links which have identical distances flipping based on what was placed first
- make the tiebreak use the lower network ID so tests don't have to wonder about this small inconsistency
Optimize refreshing links after block is spawned & killed
- refreshing neighbors was causing faces to be queued multiple times, will now only queue each face at most once after changes
Switch the tests with doors from unit tests -> automated tests
- was throwing errors after the navmesh was changed, figured may as well make automated
Cache "is outside" score per set of connected rooms, only recalculate the rooms that were changed
- makes it cheaper to destroy / add blocks to buildings
Optimize empty room search after blocks are destroyed
- track rooms when they have all faces removed and mark as destroyed instead of checking to see if any rooms need to be cleaned up
Optimize time taken when room occlusion is turned on at runtime (18s -> 4s)
- only visit every face once instead of refreshing nearby faces and calculating multiple times
Optimize network group assignment after a room is recalculated
Switch the full server export for base occlusion export JSON -> protobuf
- although it was zipped it was taking 30s to deserialize, yikes
- still supports JSON exports for the smaller pastes
Optimize speed for base occlusion tests when ran across a full server
- only load the map once per set of tests
merge from base_occlusion/foundation_offset_fix -> base_occlusion
merge from base_occlusion/vending_door_fix -> base_occlusion
Set "occlusion_door_immediate" to false by default (was supposed to be since we show everything within 32m)
Optimize doors when recalculating series of connected rooms when doors are opened & closed
merge from main -> base_occlusion
Add ability for room occlusion to take one of the newer saves with cached entity links and export that directly to a full server state of the world (instead of only splitting it into multiple copy paste files)
- allows loading an entire server to benchmark performance
- can now zip base occlusion test fixtures because JSON files don't scale well to 400MB (who would have expected)
Fixed building blocks being destroyed causing doors to be recalculated when they didn't need to be
merge from main -> base_occlusion
Make search after wall is destroyed stop once both sides reach eachother
Fix rooms being regenerated when changes were made instead of only regenerating the modified parts
Switch to IList to prevent boxing
Check the 2d spatial index for rooms first before using Vis.Entities() to find a player's nearby room
merge from main -> base_occlusion
Fix medieval doors not counting as closed for base occlusion (they were prefab variants not straight skins)
merge from main -> base_occlusion
Fix IO entities not being reassigned after the convar for "should IO entities be occluded" is changed
- fixes the failing test properly
- not planning on supporting IO entities for a while as it's complex to handle the occlusion of wires, but keeping the convar to make testing easier
merge from main -> base_occlusion
merge from main -> base_occlusion
merge from main -> base_occlusion
Fix individual edits causing more faces to be marked dirty than needed