1,298 Commits over 1,371 Days - 0.04cph!
Fixed reconnect command
Set _ownerid before lobby owner transfer as well and pre-empt owner data change
Make sure go.Network returns network root network accessor like it did before (Fixes Facepunch/sbox-issues#7044)
Just return out if we're headless when shutting down user cursors instead of assert - fixes dedicated server not starting
Better handling for root network accessor
Fix network scene load race condition. Fix spamming Join Game trying to connect to a lobby after we're already in a game
Squashed commit of the following:
commit 8b28be7427ce545fc522cc32ba26825de66ec7db
Author: kurozael <kurozael@gmail.com>
Date: Mon Nov 25 11:51:06 2024 +0000
Make it easier for those who don't know the command line options to spawn their local instances in windowed mode ( https://files.facepunch.com/conna/1b2511b1/sbox-dev_sxEprjThtS.png )
commit 9429d94c3816fea2e354a24d33e89d632ff933cd
Author: kurozael <kurozael@gmail.com>
Date: Sun Nov 24 22:12:15 2024 +0000
Some exceptions to help diagnose issue
commit 7622f5f50e31b05c03bbaad55d0f5c8dac446c3d
Author: kurozael <kurozael@gmail.com>
Date: Wed Nov 20 15:26:19 2024 +0000
More cleanup, early out if disbaned or toxic
commit 0b484581c951969daed0cde3e51775ed0a0a4517
Author: kurozael <kurozael@gmail.com>
Date: Wed Nov 20 15:19:43 2024 +0000
Some cleanup
commit b76f3fa7dfa6b973d31424e79ca777652cd2e207
Author: kurozael <kurozael@gmail.com>
Date: Wed Nov 20 15:00:34 2024 +0000
More fixes
commit ff4ad7dfc4ec25125a1753aaf6a3470a3c0ce043
Author: kurozael <kurozael@gmail.com>
Date: Wed Nov 20 14:02:58 2024 +0000
Unique handshake id tests - if we restart a handshake its possible two could be running in parallel, this'll stop that
commit 8d7a08cff2c9641a3c96f5a777f89dbea5c1ba1f
Author: kurozael <kurozael@gmail.com>
Date: Wed Nov 20 13:32:08 2024 +0000
Testing with handshake process fixes if host changes during handshakes...
commit 301685cf930858a1074d3b3add085c52379f4664
Author: kurozael <kurozael@gmail.com>
Date: Wed Nov 20 12:49:27 2024 +0000
First fix map override task when using launcharguments.map
Make it easier for those who don't know the command line options to spawn their local instances in windowed mode ( https://files.facepunch.com/conna/1b2511b1/sbox-dev_sxEprjThtS.png )
Some exceptions to help diagnose issue
First fix map override task when using launcharguments.map
Testing with handshake process fixes if host changes during handshakes...
Unique handshake id tests - if we restart a handshake its possible two could be running in parallel, this'll stop that
More fixes
Some cleanup
More cleanup, early out if disbaned or toxic
Fixed .config files not being added to appropriate string table for clients to receive changes
More cleanup, early out if disbaned or toxic
Unique handshake id tests - if we restart a handshake its possible two could be running in parallel, this'll stop that
Testing with handshake process fixes if host changes during handshakes...
First fix map override task when using launcharguments.map
Simplify networking options in header bar in editor - drop down options in Network for Simulate Lag, Lobby Privacy
Auto Switch to Best Host Candidate (#1705)
Previously anyone could be assigned as a host when the host leaves. Now we'll score lobby members by their average ping and average connection quality to all other peers and use that score to determine who to give the host to.
When a host leaves, we'll try to find a good candidate and set the owner immediately first, but if that fails, it'll happen the next time someone is automatically assigned to be the host.
Previously, a connecting client could be assigned the host, but this is no longer the case as clients must be fully connected to be considered as a candidate.
In addition, we'll periodically attempt to find and change to the best host candidate. This particular behavior can be disabled per project or per lobby.
Add server tags as LobbyInformation.Data
Some tidy up, improvements to algo
Multiplayer/networking project settings. Add option to change Destroy Lobby When Host Leaves and Auto Switch To Best Host. Defaults can be set in Project Settings but can be overriden via Lobby Config.
Some cleanup - store current peer score
Fix sequence contains no elements
Periodically check if we're the best host candidate based on score - change owner if needed. When we are made the host, but we're still connecting, try to find another host candidate instead - if we can't find one then we can mark the lobby as toxic.
Don't include self when trying to find best candidate in some situations. When SteamLobbySocket is disposed (we left or disconnected), try to find another candidate then also.
Remove debug stuff and improve host candidate scoring based on average ping and connection quality to other peers
Set same tags for dedicated servers as lobbies for consistency. Fixed case when connection doesn't close properly.
Instead of the host crashing and disconnecting when a connecting user tries to send handshake messages with the wrong state, log it to console and kick them with a debug reason
Try to create lobby socket - if it errors and returns null, back out of creating the lobby
Make sure we clear removed and changed lists when resetting a string table
Make sure we disconnect properly if failing to create a Steam Lobby
AcceptConnection and Kick Support (#1698)
* Added INetworkListener.AcceptConnection( Connection, ref string reason ) and Connection.Kick( string reason )
* Added the kick command (can only be used by the host.)
Added the kick command (can only be used by the host.)
Added INetworkListener.AcceptConnection( Connection, ref string reason ) and Connection.Kick( string reason )
Lobby Config / Friends Only Lobbies (#1696)
* Can optionally pass LobbyConfig to CreateLobby. Right now only contains LobbyPrivacy. Add LobbyPrivacy.FriendsOnly.
* Separate overload as not to mess with any existing game packages
* Make old CreateLobby method obsolete. Add LobbyConfig.MaxPlayers (defaults to package config.) Add LobbyConfig.Name (defaults to hostname for Dedicated Servers, or the owner's Steam Name for P2P)
* Fix lobby config max players
On Dedicated Server you can pass a path to a .sbproj with +game to load a local project. Hotloading works as usual for connected clients.
Fix lobby config max players
Can optionally pass LobbyConfig to CreateLobby. Right now only contains LobbyPrivacy. Add LobbyPrivacy.FriendsOnly.
Separate overload as not to mess with any existing game packages
Make old CreateLobby method obsolete. Add LobbyConfig.MaxPlayers (defaults to package config.) Add LobbyConfig.Name (defaults to hostname for Dedicated Servers, or the owner's Steam Name for P2P)
Keep the accumulator. Fix the issue properly.
Revert to old fixed update logic. It appears the root issue was synchronized server time causing more fixed updates than it should due to Time.Now changing. This resolves the issue I was trying to solve initially, and also fixes Facepunch/sbox-issues#6906
Make old CreateLobby method obsolete. Add LobbyConfig.MaxPlayers (defaults to package config.) Add LobbyConfig.Name (defaults to hostname for Dedicated Servers, or the owner's Steam Name for P2P)
Separate overload as not to mess with any existing game packages
Can optionally pass LobbyConfig to CreateLobby. Right now only contains LobbyPrivacy. Add LobbyPrivacy.FriendsOnly.
Resolve Fixed Update Issues
Resolves issue where Fixed Update would be called more times than it should be. Fixes issues such as in Marble Racer where if you had 500fps you'd move much faster than other players.
Add a comment r.e. timedelta and timescaling so we dont get confused later
Use this to avoid confusion
Some docs, clamp accumulator to maxSteps, use time.delta