Alexnewtron’s game, ROBOT BLOX, and TheCoderBunny’s new game, Bunny Island, are two games that use universes and teleportation extensively. And a game I am developing with my team will also use this extensively, but it will be done more akin to Alexnewtron’s game - for matchmaking.
Custom match-making is great. It allows us to send players to servers where they won’t have to wait for a round to end in a round-based game. It allows us to put players with similar skill levels and upgrades into the same servers to drive competition. But there is a huge problem that occurs with latency. ROBLOX can put players into servers that they have a better connection to. So a player in California can play with other west coast players, and a player in Britain can play with other UK players. With custom match-making systems, which can be essential to improving gameplay experience for games such as ROBOT BLOX because players can dramatically improve their weapons and destroy newer players effortlessly, we cannot ensure that players are connecting to servers near them, which leads to latency issues.
If we had a simple API that gave us perhaps the name of the current place instance’s server location in some way, such as maybe Enum.ServerLocation.UK or Enum.ServerLocation.California, and an API that gave us a player’s nearest server location, we could improve match making systems to improve latency. Example calls could be like this:
local ServerLocationService = game:GetService("ServerLocationService")
local currentLocation = ServerLocationService:GetGameInstanceServerLocation() --Could return Enum.ServerLocation.California
game.Players.PlayerAdded:connect(function(plr)
local plrLocation = ServerLocationService:GetNearestServerLocationToPlayer(plr) --Could return Enum.ServerLocation.Illinois
end)