As a Roblox developer, it is impossible to guarantee that players will be teleported into new servers that have the latest version of a game when teleporting them into it. This makes things like game-contextual update migration impossible to do, as any attempts to make such a system results in players being put into old servers, potentially being teleported around 5+ times over the course of a minute, before being able to get back into gameplay. We need some sort of a method to guarantee that players will land in a new public server when calling TeleportService:TeleportAsync()
and others.
Use case : While features such as the “migrate to latest update” button on the website do exist, they do not fit all use-cases that developers may have. For example:
Let’s say a player is currently participating in a rather competitive round in a round-based game. They’re neck and neck with the opposing team, and it’s overall a really fun match so far. The developers of the game push their weekly update to the game while the round is occurring. Instead of simply booting players from the game, the developers have implemented a game-specific update migration system.
When the game is updated, the following happens:
- The server sees that the game has been updated via a marketplaceservice call to get the place’s update timestamp
- The server waits for the current round to end. This prevents friction with players, since they are able to finish their current matches, get their rewards, etc.
- Once the round ends, players see a loading screen stating “the game is updating, please wait…”
- From here, all players in the server should be teleported into a new server
This reduces friction with players, and makes updating not as impactful to player counts - it keeps players in the game organically while allowing updates to be migrated to all servers, while phasing out older servers.
Currently, the only way to get close to matching this behavior is to teleport all players in a server into a reserved server, which guarantees that the players will end up in a new server instance. The problem with this is, reserved servers are not public facing - you cannot join reserved servers by clicking the play button on the website, or clicking the “Join” button from the server list. This also causes the reserved servers to die out, since new players cannot join them.
Making an all-encompassing feature such as “migrate to latest update” does not work - different games have different needs and uses, and should be able to determine when/how players enter new servers.