3,309 Commits over 945 Days - 0.15cph!
Try catch all parts of demo thread (incase of error on startup)
Try to create demo directory in multiple places (incase it gets deleted or changed by users)
(this will also kick off a new build)
Don't record raknet packets used to establish a connection
Change default flush interval from 1 min -> 5 min
Store session start timestamp (when demo recording started) in header
Use connection Guid instead of dictionary in player lookup (to avoid players reconnecting causing issues)
- change DemoPlayerInfo.SteamId -> Guid (ulong technically)
Change path to `server-demos/{serverid}/sessions/{sessionid}/{chunkid}.sdem` (to make it easier to navigate in azure)
Fix compressedSize in demo header being incorrect (FileStream.Length > FileStream.Position)
Switch from `demo_server_id` -> `server_id` convar
- save across restarts
- set server_id on startup if not set
Remove `upload_token` convar, rely on putting SAS token in upload endpoint for now (can polish later once we figure out how we want to refresh tokens)
Fix hardcoded "test" container and use the container from the SAS url
Merge from main -> full_server_demos
Refactor into multiple .cs files as the code has grown
Delete demos off disk past a certain quota to avoid consuming entire disk during upload failure
Add `server_demo_disk_space_gb` (default 30GB)
Allow server demos to be turned on and off at runtime
Only disable frustum culling if one of the mirrors cameras is enabled (to avoid an inactive/disabled camera turning off frustum culling)
Mark new building meshes as readable = true so they work with multidraw
Add `print_instanced_draw_calls` to print draw calls (including how many are batched by multidraw)
Allows us to spot materials that have the wrong settings to help reduce draw calls needing to be submitted by the CPU
Merge from gnb_shadow_material_improvements -> gnb_support_new_building_skins
Enable instancing on building skin materials
Re-run converter on building block prefabs to convert all new building skins to instanced rendering
merge from test_gnb_memory_leak -> main
(fix GNB memory leak)
Fix the shadow materials of a bunch of building block renderers
Add additional funcitonality to `List Shadow Materials` to fix the materials (convert all ShadowOnly materials to use "shadow" material)
Fix GNB memory leak (submitting draw calls to disabled cameras will leak memory)
Add `instantiate_test` command to test new InstantiateAsync() method
Update CurrentVersion.cs to 2022.3
12k .meta files after it reimported a bunch of textures
ProjectVersion 2021.3.35f1 -> 2022.3.20f1
Manually commenting out audio import deprecation so it compiles
Unity auto-upgrading C# from 2021->2022
Cache ItemModCookable and ItemModBurnable inside ItemDefinition
Regenerate protobuf and move some code to partial class
Reimplement PostSave() but rename to `PostSaveToDIsk()` to make it clearer
Implement bool `isAuthed` on client to fix pooling of SimplePrivilege
Serialize Protobuf.Entity on the outbound network thread on the server
Deserialize Protobuf.Entity in the inbound decryption thread on the client
Change _NetworkCache from MemoryStream -> ProtoBuf.Entity
RefCount ProtoBuf.Entity so we can keep it on the main thread as a cache as well as serialize it on network thread
Initialize ProtocolParser.staticBuffer on each network thread (can do it automatically later)
Remove `netcachesize` convar on the server since we aren't pooling memory streams
InvalidateNetworkCache() will now invalidate the Protobuf.Entity
ToStreamForNetwork() will Save() then put the ProtoBuf.Entity into the NetWrite
ToStream() (normal saving for disk) stays the same
Remove PostSave() (easier to remove than reimplement on network thread)
Fixed the colors in UI when assigning a player to a bag or turrets to match the color scheme for rest of game
Green = Teammate online
Dark green = Teammate offline
Blue = Friend online
Dark blue = friend offline
White = Player on server online
Dark white = Player on server offline
▊▉▄ ▇▄▆▌▆█▊▋▋▌ ▍▇▄█▌▌▆▋▍▆ ▍▌ ▅▋▇▅▄▇ ▊▅▍▌▉▉▄
▅▊█▉▆▍ ▄▌▊▌█▅▇▄▅▆▌▊ ▇▄ █▍▉ ▉▄█ ▆▅▉▍▅▋█▇▋▅ ▌▆▋▆▍ ▄▉▌▌ ▄▋▇ █▍▄▆▆█▊
Add analytics for all modified convars
Fix pipe tool not resuming the entire industrial pipe when switching active item / reconnecting (only was reconnecting the first 1-2 part)
Fix wire tool & pipe tool not saving color when disconnecting wire
Fix orange pipe looking blue when holding pipe tool out
▉▆▉ ▍▌█ ▊▊▇▇▇▆▊ & ▍▌█▍▇▅▉█▌▄ ▆█▅▆▌▆▍ (▅▄▅▇▅█▌▄▌▉▆ ▉▍▅▌▌▅▉ ▄▌█▋▍▅, ▌▊▆▇▉ ▋▅▌█ █▆▇▅▇▌▇ ▉▌█ ▊▇▌▌▌▇▉▍)
Serialize `Protobuf.BaseNetworkable` before the protobuf entity
Few fixes, disable "play" button when seeking over gaps in demos
Clamp the seek bar to the timeline
Can drag red seek line to change the start point of the demo
Show start timestamp under the seek bar
Show "blue" where the player was active & "yellow" where the player was idle
merge packet_ordering -> full_server_demos
Fix cloud demo items not highlighting when hovering or selected
Cleanup upload code a bit
Denmo UI doesn't want to catch mouse pointer events
First implementation of client browser for cloud demos
Store chunkId in header file
Merge from main -> full_server_demos
▋▋▅ ▄▍ ▌▋▋▊▋▇▌█▋▅ ▍▋ ▅▉▋ ▄▍▉▄ ▌▇▋▋▊▊▇▄▅▆ ▍▇▄▉▋▍▉
Ignore EntityPosition & DisconnectReason when incrementing inbound count as those packets are unordered
Change `write.PacketId()` -> `Net.sv.StartWrite( packetId )` so we can prefix the packet Id before the packet ordering VarInt
Include VarInt at the beginning of each outbound client packet to improve accuracy of demos
Replace prediction inside ceiling light