6,135 Commits over 1,614 Days - 0.16cph!
merge from fix_sail_guide_mismatch -> main
Optimize network thread's batching overhead slightly
- during the end of frame flush only set the last batch sent as "immediate" priority
- avoids paying the extra 0.4us to wake the RakNet thread after every single batch sent, instead only paying it once for the entire batch
Add unordered batch alongside the ordered one so we keep sending position packets unordered while keeping them batched
- my previous commits were incorrect: positions have always been sent unordered
Move packet batch from Dictionary -> Connection field
merge from main -> fix_sail_guide_mismatch
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
update base_occlusion/foundation_offset_fix
merge from base_occlusion/vending_door_fix -> base_occlusion
Add support for doors to be "always closed" but still treated like portals between rooms
- allows vending machines to block visibility between rooms while keeping the same code as doors
Add the "door blocker" component for base occlusion to the vending machine prefab too
Fix entities placed in sockets (vending machines) not linking up with their sockets until stability runs (which doesn't apply for vending machines) or server restart
- part of the reason vending machines didn't block occlusion: they sometimes had no links
Update tests to be aware of the extra faces on foundations now
Fix a foundation surrounded by walls being connected to a foundation outside the base offset half below
- add faces on the sides of foundations & rely on existing face linking behavior to work properly
Reserialize foundation prefabs before adding new faces (for clean diff)
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 analytics_base_occlusion -> main
Add analytics events for rotating and flipping building blocks
merge from main -> base_occlusion
merge from analytics_base_occlusion -> main
Add "isOpen" to the existing door toggled event
Fix NetWrite.SendImmediate() not using the writeLock (pre-existing issue)
Take the idea of batching position packets and instead apply it to all types of packets
- queue up packets per frame
- send them out after invokes finish
- packets are batched on the network thread so no change to the main thread
- new packet type to indicate if it's a batch of small packets
- ConVar to control batching at runtime
- client can handle both batched & unbatched packets
- batches are sent as "immediate" so they bypass raknet's internal buffering since we are now basically doing the buffering RakNet was doing
Fix server collider for sail having both the "lowered" and "raised" colliders active after it was first spawned
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
merge from main -> fix_sail_guide_mismatch
Add automated tests for placing foundations in rocks
merge from main -> ugc_censor_option
merge from main -> fix_foundation_clipping_rocks
merge from optimize_decay_frame_budget -> main
merge from softcore_disable_corpses -> main
Disable deployable corpse system in softcore
Increase max TCs in softcore from 3 -> 6
- fix "changelog" in main menu not reflecting the max TC count when convar is changed
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 fix_tc_upkeep_spacing -> main
Set horizontal spacing to 12px
merge from analytics_apartment_breakin -> main
Send apartment contents every 1hr
- also send when break-ins happen & when players are evicted for not paying rent