3,110 Commits over 915 Days - 0.14cph!
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
Fix RPC that were passing null in the function name
Move the prediction check from all RPCs into `SignalBroadcast`
Regex + manual tweaks to remove sourceConnection from all RPC methods as it's only used in a single RPC but takes 8 bytes each packet
Enqueue packets for demo from network threads instead of main thread
Change header class from fields -> properties (for System.Text.Json)
Merge upload -> full_server_demos
Add convar to zip demos as we save them to disk (default true)
Set Content-Type & Content-Encoding for demo & header as well as if the content is zipped or not
Delete demo chunks after they are uploaded to Azure
Implement code to upload demo to azure
Recompiled Facepunch.Nexus to target System.Runtime.CompilerServices.Unsafe 6.0.0 (was 4.0.4.0)
Add azure blob storage SDK manually from nuget
Expose variables for server demos as convar
`full_server_demo` convar will only be applied on startup but can be changed at runtime to apply next restart
Moving from stash to branch*
When `ServerDemo` convar is enabled on startup, the server will recordall network traffic on the server as one big demo file
Packets sent to multiple players are only recorded once (store list of players sent to)
Inbound & outbound data is stored in the order it was processed on the server
The demo is written to disk on a separate thread to make performance impact minimal
Demo is split into 1 minute chunks for testing (will be 5 minutes later)
Each demo chunk is given a unique filename with the .sdem extension (represents .serverdemo)
A json "header file" is written with each demo chunk wiht information on how the demo should be loaded (list of players, number of packets, time span, etc)
Changed pooling of NetRead & NetWrite to use reference counting to account for another thread needing to finish processing before they are pooled
Heat spreads through walls to other rooms (slowly) from hot rooms
Change vitals to always show "too hot" or "too cold" so I can see what temperature the player is at
Assign temperature value to each room, active heat sources slowly increase the heat of the room
Try to do the shoelace formula manually
Using incorrect version of shoelace algorithm to correct volume of each room: it at least gives higher volume for larger rooms which will be good enough to show bigger rooms taking longer to heat up
Copy faces from normal walls & floors to low wall, half wall, wall + floor frames & doorsways
Assign deployables to room(s) based on the floors they are on
Command to hide everything inside walls so esp cheats don't work
Fixed triangle center position being incorrect
Fix -180 degrees not being handled when discarding invalid faces
Triangles & squares both work when splitting into rooms
Remove foundation faces that are on top of eachother (think of two foundations beside eachother, you don't see inner sides)
Fix triangle foundation wall facing inwards instead of outwards
More debug visualization commands
Rooms now correctly connect
Add bunch of debug commands
Rooms connect but closest face isn't working correctly
Add faces to square foundation and triangle floor