I have no idea why teleportData is local, it seems completely counter-intuitive for any round-based game. I thought for sure there’d be some way to tell the reserved ID once the server started, but that also seems impossible.
So if I can’t use a global TeleportData, and I can’t tell what the server ID is so I can use DataStores, I see no other way of starting a custom round in my game, and passing the information, other than passing it by the starting player.
And you guys should realize how bad and insecure that is… :-/ Especially since I want to sell some of the settings a server has, and I don’t want it to be exploited.
Only currently viable solution: Log to a datastore, and have the player’s name be the datastore key, and store all the information server-side, then pull it as soon as the player joins based on their name. While this works, it’s obviously bad, prone to glitches, inefficient, and it means I can’t load any of the game scripts or services until a player joins, creating an unpleasant loading experience for them.
We need to be able to tell on the server end if a server is a reserve server. It’s insecure to have to rely on the player to pass this information to the server.
Could you use the teleportData parameter to do this for now? Never mind, that’s for client data.
But anyway, there’s lots of improvements that could be made. What about querying the number of players in a reserved server? That’s also important for round-based games if you want your primary/lobby place to be able to repopulate reserved servers that are losing players.
I was going to just use DataStores for that, and store the reserved server ID as key. But, it would be nice to not have to always keep track of players in the DataStore, as DataStores are slow and unreliable
Everyone can see all public servers on a place. A user can also see all VIP servers. It wouldn’t be that difficult to create an API (and have it available in-game) to get all running servers of a place in the same universe, right? someday… maybe…