Configure Reserved Servers for Specific Jobs: TeleportService:ReserveServer(placeid, Configuration Info)

As a roblox developer, it is currently too hard to configure a server for specific use cases.

My Case


I’m making a racing game that takes place across different servers, one for each track. It reserves a server for each race that takes place there, and when the race is over the server shuts down and it’s used again.

The Problem


The problem I run into is that my game has both a Player VS mode and an Events mode. Both use the same game template, but when players are teleported they carry the Race Type, Total Amount of Racers, player race bets, and some other data with them into the server they join.

Unfortunately the server gets recursive information (Race type and Total amount of racers). This is alright, but not ideal, and if there is a conflict in the two player’s data because one tampered with it during the teleport process, the race server has to choose which to use and which not to use.

How this could be prevented


This could be fixed by adding an API to configure a created server a specific way. For instance,

TeleportService:ReserveServer(placeid, {'Circuit', 10, 'Clockwise'})

This would Reserve a private server with the table stored as ServerInfo in the destination server. Here’s how one could access it:

local ServerInfo = game:GetServerConfigurationInfo()
local NumberOfRacers = ServerInfo[2]

Developers could use this API to securely customize places within a game, and it would cut down on the number of recursive places needed for a multi-server game.

9 Likes

Bumping this because I’m running into the same problem.
I’m working on a racing game that relies on client’s TeleportData to carry data related both to gamemode, players’ selected cars and skins, I’m also making a new feature for the game that needs data to be passed from one server to another.
It’s definitely not a good approach, since relying on client side makes the system vulnerable to exploiting (I’ve made some sanity checks but wouldn’t be better if it was just not needed?), also I’m not totally sure the data is loaded 100% of time.