I am using a static reserved server access code with
TeleportService:TeleportToPrivateServer to teleport players to a private server.
Expected behavior: All players will arrive in the same server. If the player is not able to access the reserved server because it is full or any other reason, the teleport fails. No more than one instance of the server is ever created in any condition.
Actual behavior: Users on xbox one who have cross platform disabled arrive in a different server from cross platform users.
In my game and other games with economies, this is exploitable to duplicate items that are intended to be sourced from singleton locations.
If this behavior is intended:
- I strongly think this is the incorrect product decision. The premise of a reserved server access code is that only one server can be created per code. This is promised in the documentation on the devhub: “No more than one game server instance can exist at any time for each access code”
- 99% of reserved server use cases (for matchmaking) use the access code once for players already in the server and then throw it away. If the server is already platform restricted, there will be no problem.
- For the cases where codes are saved and used continuously, most developers would accept a teleport failure in cases in which players do not have permission to join the server. This is consistent with behavior when teleporting to other invalid locations, and this is consistent with the expectation that only one server will be created with one access code.
- Developers need access to an API to know if a server is restricted so they can handle these cases manually. This current automatic solution does not produce the result the developer intends, and if they had more information about the restrictions of the server they would be able to properly handle these cases.