4,902 Commits over 1,433 Days - 0.14cph!
Log a warning instead of throwing an exception when trying to send an RPC without being connected to a network session - it's harmless anyway and could happen with async tasks even after disconnecting
Groundwork for active lobby info and get / set metadata for lobbies. Dedicated server, tcp and p2p support
CreateLobby async returns active lobby
Fixes
Protocol++
Track object messages and RPC stats and display the top 10 in the top left when net_debug is enabled
Keep everything nicely contained in NetworkDebugSystem
Show top 10 object messages by total calls then by total bytes received in top left when net_debug is true ( https://files.facepunch.com/conna/1b1911b1/sbox_OEOfBa3MKH.png )
Start by storing incoming RPCs by name, increment total calls, total size, and build an average message size
Track other messages too like spawn and destroy messages and their frequency. Add a temporary command to log the top 10
Connection.GetUserData will now work for any client - not just the host. ConVars marked with ConVarFlags.UserInfo will update for all clients when changed. Updated ConnectionInfo string table to store values individually so when one changes it doesn't send the whole lot again.
We can now include ping in the string table so that Connection.Ping should be correct even if you aren't the host
Track other messages too like spawn and destroy messages and their frequency. Add a temporary command to log the top 10
Start by storing incoming RPCs by name, increment total calls, total size, and build an average message size
Show progress (#/#) when downloading files in loading screen
Shut down properly before reconnecting - ensure we've destroyed the scene etc
CreateLobby async returns active lobby
Groundwork for active lobby info and get / set metadata for lobbies. Dedicated server, tcp and p2p support
Groundwork for active lobby info and get / set metadata for lobbies. Dedicated server, tcp and p2p support
Lower snapshot cluster size and use smaller types for their ids
Smaller cluster snapshot id types + reduce cluster size to below MTU size it wasnt before oops
Improve delta snapshot system by dynamically increasing and reducing stored sent snapshot cluster size to ensure we give ample time for an ack - these could get lost of we send a lot of clusters per second. Another improvement is to predict last receive snapshot data and assume they will go through, optimizing by not sending the same value 50 times a second - if not ACK'd in time, we'll clear the prediction and send again. I'm seeing good results on TTT where the host goes from sending 1mb/s to ~18-30kb/s with one connected client in some cases.
Add SteamEnums.RecvMaxMessageSize and SteamEnums.RecvBufferMessages. Set these values in bootstrap to higher values.
Network options on a GameObject where the GameObject is a prefab instance will only be serialized if the values differ from the prefabs. When loading a prefab instance as a GameObject from a Hammer scene, find the correct network mode. This fixes an issue where if a prefab is added via Hammer, but later the prefab's network mode or something changes, the new default wouldn't be used when loading the map. It'll still use the one the map was serialized with.
Make use of the return type of Scene.Load and return false if SceneLoadOptions has no valid scene set
Fixed issue with calling RPCs from within RPCs when using HostOnly / permissions and Caller not being set correctly. Fixes Facepunch/sbox-issues#7452
Fixed previous Show Hitbox Debug displaying BBox hitboxes in the wrong place
Added Show Hitbox Debug option in Debugging Menu in the editor. debug_hitbox ConVar. Can debug hitboxes in the editor or in-game similar to Show Interpolation Debug. Fixes Facepunch/sbox-issues#7505
Fixed Show Interpolation Debug not being able to be toggled in the UI. If a ConVar value is a boolean, use its integer form. Fixes Facepunch/sbox-issues#7503
Added Object property to WrappedMethod<T> (Fixes Facepunch/sbox-issues#7497)
Fixed bug where HornetProjectile was incorrectly setting TimeSinceCreated - meaning hornet projectile could insta-explode on the person shooting it
Optimization branch - for testing over parsec
Shotgun item model child was set to Never Network, so it was invisible for other clients. Fixes Facepunch/sbox-deathmatch#97
Updated ammo prefabs to use Network Object mode and Clear Owner orphaned mode - still need updating in the Hammer map
Fixed network info being incorrect / unset in OnNetworkSpawn callbacks because _net is not set yet. Fixes (Facepunch/sbox-issues#6447)
SyncFlags.Interpolate (#1789)
Only use interpolated var if we don't control that property
SyncFlags.Interpolate, support for float, Vector3, Angles, Rotation, Transform (with internal interface right now)
Only find this attribute if we need it
Remove these debug logs
Interpolate value on query instead of every frame based on last update time
Add Update method
Revert changes to InterpolationSystem as we're no longer interpolating Sync Vars every frame
Remove unused IInterpolated
Some cleanup
Double max string table snapshot entry size from 4mb to 8mb (Fixes Facepunch/sbox-issues#7250)
Fixed an issue where performing a network refresh might not synchronize the tags with the owner's version of the object. Fixes Facepunch/sbox-issues#7301
Fixed an instance where an editor lobby could be public even when it's set to private in the editor. This could have happened if CreateLobby was called with Privacy = LobbyPrivacy.Public - now the editor option will dictate the privacy of all editor lobbies.
Remove unused IInterpolated
Revert changes to InterpolationSystem as we're no longer interpolating Sync Vars every frame
Interpolate value on query instead of every frame based on last update time
SyncFlags.Interpolate, support for float, Vector3, Angles, Rotation, Transform (with internal interface right now)
Only find this attribute if we need it
Remove these debug logs
Only find this attribute if we need it
SyncFlags.Interpolate, support for float, Vector3, Angles, Rotation, Transform (with internal interface right now)
Add Simulate Packet Loss alongside Simulate Lag in editor network options - it's working for simulating outgoing lost packets from the host right now
Some tidy up - data table ReadFilter instead of other method, reset delta snapshot cache on owner change and after network refresh is received