Improvements to Updating Experiences

Could we have an updating method where it doesn’t kick anyone, but instead locks outdated servers?

With this, joining players would only join new and updated servers, where as the old server can continue until every player has eventually left. This works especially great in experiences that use multiple places.

Alternatively, could we get API that allows us to lock a server with a script and prevent joining? I would actually like this API regardless of the previous question.

TL;DR: Server Locking

6 Likes

Hello i have a question but I think it’s very related to that update.
Will we have a API to reserve a server in a specific region (EU,NA,…) ?

2 Likes

This can technically be implemented with MessagingService APIs. You would need to have every server listen to an update message. When you update the game, just send the update message to all servers. When a server relieves the message, you can then just connect an event to auto-kick any new players attempting to join.

1 Like

Yes, but that’s not ideal. Also, you’d want to use MemoryStoreService as MessagingService is extremely limited (due to having experience wide limits, which appears to be the only service that has such a limitation). The issue with that though is that players can still attempt to connect to a server that’s meant to be closing or locked, and this is especially true if it’s a player trying to join their friend or a specific server.

I’m fully aware that it’s possible to create a custom system, and an even better one using ReservedServers, however I am looking for an official built-in system. This is something I know Roblox would consider as they’re already implementing an official built-in banning system, despite there already being custom ways of doing that.

1 Like

I think this implementation of prewarming is awesome; Players being able to rejoin the same server with the same people is really cool. Although I do think it would be good to warn players with a coregui that their server is about to be closed.

2 Likes

Thank goodness! I never saw a reason to have both “shut down all servers” and the ability to private your game at the same time. Looks like I don’t have to use a system like SoftShutdown anymore and use the migrate to new update button instead.

1 Like

@heedicalking Your ideal method sounds like exactly what Migrate (renamed to Restart Servers for Updates) does. Can you read the newly updated docs and let me know what’s different from your ideal method?

@Mimi_Dev You have up to 30 seconds for your BindToClose callbacks to complete before we shut down the server - are there cases where that’s not enough time to save some datastore values before teleporting players or letting them auto-reconnect? For the teleport data - you’d have to do your own teleport to pass it along rather than relying on auto-reconnect. Doing a regular matchmade teleport will be enough to keep players together post-update - we’re keeping them together behind the scenes

@BillB1ox the documentation has already been updated! Take a look and let us know if the difference is still not clear

@KadenBloxYT Privating a game kicks all players. However, can you clarify why you want to do that? It will severely harm your player count on your game compared to just kicking players that are on the old version

@Waccars You don’t need to shutdown servers individually. That’s what Migrate to Latest Update / Restart Servers for Update is for

@fouroul94 There’s a feature request over here you can vote for

@BrawlBattle Glad to hear it! I recommend you keep using your SoftShutdown script until we launch auto-reconnect early next year

1 Like

@heedicalking @KepIar @Redridge @MightyDantheman
Thanks for all the feedback! Looks like the ability to stop allowing joins to an existing server is the most requested improvement. We chatted within the team and added this to our roadmap for 2024!

9 Likes

“Restart servers for updates” doesn’t seem to account for the fact that each server in my game is running a match that may last anywhere from 10-30 minutes. If players are currently fighting, I don’t want to eject them all mid-round. They don’t get end-of-round bonuses or the satisfaction of winning. I don’t want to mass end every server at once, I only want to end/update them once they’re ready. Nothing is more frustrating for a player than getting kicked in the middle of having fun.

How my current system works is that the server ‘shut downs’ only after the match ends. (it doesnt actually shut down just kicks everyone and autokicks new joiners because there is no actual shutdown API). They are then teleported to a ‘waiting zone’ place and then teleported back at the mercy of teleportservice.
Both issues would be easily resolved with being able to shutdown/disable joins (through an API) and reserve a new public server

1 Like

Oh I meant in the area where you migrate to the new version.
image
Maybe adding a “more info” button which directs the user to the link you sent?

And yeah, the documentation makes it more clear.

3 Likes

We aren’t worried about BindToClose not being complete when the server shuts down. The main issue is that when the new server starts up, if we fetch the player’s datastore and it isn’t done being saved (large datastores can take several minutes), we’ll fetch out of date information and then overwrite the datastore with it. We had this issue when teleporting players between servers in our game. We actually had to prevent them from leaving the server until their data was done being saved.

3 Likes

I would love to see an additional option where we can prevent the joining of old servers and have players join the new servers when they press the play button WITHOUT shutting down the servers. This could be useful for bug fixes and small improvements.

6 Likes

It seems like there may be a potential bug with the migration feature? I just launched an update in my multi-place game and used the “Restart servers for updates” button to migrate the whole experience. Upon starting up again, some servers were on the latest version but appeared to be stuck in a “shutting down” state. These servers’ ages all aligned with the time I pressed “Restart servers for updates”.

My best guess is that game:BindToClose() functions may have been run on the brand new servers, but these new servers stayed alive. I have a BindToClose function which marks the server as shutting down and prevents any more new rounds from starting. There were absolutely no errors, so that’s the only explanation I can think of.

When I instead did “Shut Down All Servers” shortly after that, all the servers were back in working order, and the game’s metrics recovered.

image
Concurrent players for one of the game’s sub-places - after the update launched and I restarted servers for updates, concurrents went way down for an extended time because rounds weren’t starting on these servers, and I was trying to figure out the root cause. After I fully shut down all servers again ~30 minutes later, you can see the player count immediately recover.


Normally there is an intermission timer for the next round, but the server has just ceased to run any more rounds, leading me to believe it’s in the “shutting down” state.

Sorry I don’t have a smaller-scale repro, since this happened just now and I was of course rushing to just get the servers working again.

One question I have is whether or not Experience-wide “Migrate to Latest Update” teleports players back to the places in which they were playing or back to the start place. There are genuine use cases where the former would be undesirable or even game breaking, and would still leave a purpose for the “Shut Down all Servers” option to force people back to the start place.

There is no built-in teleport today. Are you asking about the future Auto-Reconnect feature? If so, it will teleport back to the start place

1 Like

With auto-reconnect will it auto reconnect you if you’re afk for 20minutes or will that remain disconnecting you?

Again with auto-reconnect, when the server gets shutdown will the player be auto reconnected or will they have to rejoin?

Auto-reconnect is just when a server is shutting down for an update. There’s no change to the 20 minute AFK timer.

I too would find this option extremely useful. Sometimes an update is between minor (let servers naturally shut down) and major (migrate players to latest update), in which case this option would be perfect.

1 Like

Just wondering if Auto-Reconnect is still being worked on, its far past early 2024 which is when this post said it would be availible.

1 Like

Yeah, it’s been out for a while now. If you have any questions/comments please add in that thread

1 Like