Then when you want to update your game you would lock all current servers, publish the update, wait a day and then shutdown all the locked servers ( locked = outdated )
That seems like a lot of unnecessary and extra user overhead. Why manually lock your servers when it can be done automatically? Why shutdown locked servers manually a day later when they’ll already be dead by that point (for it to be up a day later, the existing players would have had to play >= 24 hours straight).
In addition to the extra overhead, developers might not even do it because 1) they don’t know that functionality exists, 2) they forget, or 3) they don’t feel like it.
Server priority is what we need, somebody suggested it ages ago.
Servers have a default priority of 0.5 which can be manually changed to another value between 0 and 1 via a method. A server with priority 0 would never be joined by new players unless they are following friends.
This would also be useful for games that have long rounds, the priority could be set to 0 to stop people joining while a game is in progress.
Would also be nice if there is/are (a) friend(s) in the server, it just adds 0.1 to the 0.5.
If you have a server with 0.85 and 0.80, it would still result in the latter one. (assuming you do something like game:SetServerPriority(1-remainingRoundTime/TotalTime)) (would probably need something like this internally anyway to have friend matchmaking for same priority)
This would make it difficult for old servers to be phased out because players can keep joining when someone follows them. If we go with this method, a choice of 0 should mean it’s impossible to join that server at all.
Having old servers being gradually phased out within a few hours without having to forcibly kick all players from the servers is an essential feature that is missing.
As the OP mentioned getting abruptly kicked from the server is a frustrating experience for the enduser which should only happen in absolute emergencies, equally when joining a new game I expect the server to be up to date to avoid situations where the player keeps encountering an already fixed bug (see egghunt 2017)
This would actually be more interesting to be able to phase out certain verisons of servers.
For example, before I decide to release an update, the current version of the game is 4.0.1.
I heard a small minor issue was going on with the game, so I fix and update and name it as 4.0.2. However, I later find out (in 20 mins) that 4.0.2’s “fixes” actually broke the entire game. I immediately release 4.0.3 which completely fixes all the issues including the broken game.
But now there are a few 4.0.2 servers going around ruining the experience tremendously. I don’t want to close all the games, but I need to get rid of these servers. It would be nice to be able to shutdown a certain server version and keep the good servers up.
I have thousands of people playing my game that I’ve been updating constantly for the past couple of days. YouTubers and players are experiencing and reporting major glitches that I fixed the morning they started playing. I can’t shut down all servers because I can’t guarantee the players on will connect back. This is causing unnecessary stress for me right now. We NEED this feature.
This exists as a temporary solution, however ugly:
(obj this is a relatively old script that should be modified to use the new party teleport system, as well as accommodating your game, as this script assumes all reserved servers are lobbies)
If you’re updating a new game constantly that is getting a lot of attention, perhaps each update change the max player count. As long as your game doesn’t rely on a specific amount for a full game to be played properly, you could note which max players equal what update. And shutdown old ones if you notice a bug in the X max player servers.
Edit: I agree more control over our servers would be good