6,153 Commits over 1,614 Days - 0.16cph!
merge from fix_packet_capture_rustrelay -> main
Fix packet capture writing packets sent to rust relay
- intended to only capture player-facing traffic
- can use convar `packet_capture_rust_relay` to enable capturing rust relay if you really want
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
merge from ugc_censor_option -> main
Set timeout for uploads of signs to 10s
Fixes from API changes
- max amount of uploads queued to 1k
- include server ip & port in JSON body instead of headers
- update endpoint
merge from batch_all_packets -> main
merge from batch_all_packets -> main
Match network to main (since it will be increased during staging wipe)
merge from main -> ugc_censor_option
merge from main -> batch_all_packets
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
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)