Migration should allow game developers to specify a duration over which to migrate servers to newest version

As a Roblox developer, it is currently too hard to update a game with the lack of useful tools to manage the way a server is restarted and over what interval. Currently I either choose to slam them all offline simultaneously (which is very rarely a good option) or have them restart over 6 minutes if the version is not the latest (best available option). There should be a way to specify over what time duration I want the servers to be pushed to the newest version.

If Roblox is able to address this issue, it would improve my development experience because I would be able to slowly roll out non-critical patches and updates to a large experience without disrupting 100% of the player population within a 6 minute window.

8 Likes

Hello! I’ve worked on game updates

For minor bugfixes that you want to slowly roll out I recommend publishing the update and then waiting. All newly created servers always use the latest published version. Over time as old servers empty out and close everyone will be on the latest version. Usually after 24 hours most servers will be on the newest version (since servers typically become empty in the middle of the night across the world). At that point you could run Restart Servers for Update (aka Migrate to Latest Update) to get any last remaining servers migrated over

Let me know if this works for your use case

or have them restart over 6 minutes

Please note that we recently made some improvements to speed this up. Most updates should take under a minute now. More info here - Improvements to Updating Experiences

This does not work when we have 40k+ servers online. It takes more than 3-4 days for these type of updates to roll out. After 24 hours you’re looking at maybe a reduction of 5-10k servers from the original 40. Players keep these servers alive by staying on overnight to farm/ect

Additionally, Please note that we recently made some improvements to speed this up. Most updates should take under a minute now. this is actually the opposite of what I’m requesting. Having all the servers abruptly shutdown within a short window is very resource intensive and leads to service failures on datastores and our own external APIs when there is data from hundreds of thousands of players being saved.

2 Likes

After 24 hours you’re looking at maybe a reduction of 5-10k servers from the original 40

I checked the data for your experience and I see most servers shutting down within 24 hours of when they’re created (even outside of forced restarts). One thing we could definitely do a better job of here is showing you how many users / servers will be impacted before starting an update so that you can decide if the impact is too large and it’s better to wait

this is actually the opposite of what I’m requesting

Right - I was just pointing out that the “6 minute” number is out of date in case you were doing any math based on it

leads to service failures on datastores

Do you have a bug report for this? It shouldn’t be a developer burden to figure out the right length of time to stretch an update over to not get datastore failures

1 Like

One important note on datastore throttling: throttles are per server. Whether we shut down all servers in one second or one hour should not have any impact on throttling

1 Like

What about the throughput limit? That would be enforced at the experience level, correct? As a result, restarting all servers at once may cause issues for global configuration systems.

Is there any update on y’all adding a built-in soft shutdown system? I believe it was you who mentioned it being the next step, so I’m just wondering if y’all have a more solid timeline for that now (possible 2024 roadmap addition??).

@Abcreator the throughput limit is at the key level. If someone is using the same key across all servers in their experience they may run into issues (even outside game updates). Your existing feature request covers this shortcoming well - DataStore throughput limit makes non player-specific data un-scaleable

@AsyncFunctions thread for that is over here - Improvements to Updating Experiences. The timeline hasn’t changed: early 2024