Add `game.CrossplayId` to solve 2 servers starting with the same PrivateServerId

When using TeleportService to create and send players to reserved servers, Xbox One users may arrive in a separate server with the same PrivateServerId.

Cross-Platform Play - Players on Xbox One with cross-platform play disabled will arrive in a different server with players with cross-platform play enabled. This can cause multiple game servers with the same PrivateServerId to exist.”

I appreciate that the behavior is documented, but it’s still a big headache for developers trying to create large networked experiences. This completely breaks reserved server population management because there’s no reliable way to know what server the user will end up in. TeleportService code is already a burden to test, and this just makes it worse.

The current documented behavior is only acceptable if we are provided with an API that identifies the crossplay group the current server is part of. I think the best solution would be a property that achieves this, preferably an integer or very short string. I suggest game.CrossplayId because it’s similar to game.JobId / game.PrivateServerId / game.PrivateServerOwnerId. Developers could simply add this id to relevant MessagingService topics and OrderedDataStore keys so that these server groups can be managed independently. This would prevent unexpected problems caused by TeleportService sending users to different servers that are globally managed because crossplay is disabled.

It might be ideal for crossplay to always be enabled, but it’s impossible to predict how governments and hardware companies will regulate crossplay. This would enable us to respect crossplay restrictions while giving players the best experience. In the meantime I may need to disable Xbox support for my experience.


Here’s a related post from a few years ago that describes the problem and includes a repro.

33 Likes

Since Roblox is releasing onto PlayStation platforms soon, I think this feature is very important to add. As far as I’m aware, the issue with Xbox reserved servers still exists, and I imagine it will be a similar situation for PlayStation.

Because my experience relies on a custom matchmaking solution, I would have to disable consoles from being able to play (something I don’t want to do), simply because if a user with cross-play disabled joined, I would have no way to know which kind of server I should send them to, and they could have the potential to unintentionally prevent other players from joining.

Having a dedicated CrossplayId enum/property would be fantastic in distinguishing between Xbox/PlayStation players with cross-play disabled and everyone else, thus allowing me to let more people play my experience.

6 Likes

Bumping this , I need to know if a player has cross play disabled or not for my matchmaking…

It’s been years and I still have Xbox disabled for my experience. It’s kind of sad how many old players report that they can’t join on their Xbox like they used to.

3 Likes

I have a similar use case to most here, I would imagine. I want to allow Xbox and PlayStation players to play my game, it’s a survival game where player’s items and state is stored in a datastore by the server’s assigned ID. However, if Crossplay is not enabled then a single player can completely lock down an entire server which just does not work, forcing me to also disable Console access to my experience.

It would be ideal to simply give non-crossplay players access to servers specifically assigned to that console type or to require them to simply play in a private server so they don’t completely lock down a server and prevent other players from joining a server where all of their progress and loot is.

The other side of the issue here is that when a server already has a few players in and a non-crossplay console player joins that server it spins a duplicate, which has to be dealt with. Unfortunately, that means that I have to determine which server is non-crossplay (take the case where there’s only one player in each server and you have nothing to go on) and invalidate any data changes which might affect the state of the game world, like base building for example.

This is an extreme handicap for developers who want to support all platforms for their games and have custom managed servers. It makes it impossible to provide services to console players without finding complex ways to deal with bad duplicate server state that are finicky at best.

Would really like to see some kind of solution to this problem. Until then, I don’t think console can be supported outside of being a separate game.

4 Likes

Wanted to bump this thread again. We still don’t have any way to identify if a server is CrossPlay disabled, and now that we have Xbox and PlayStation this problem is only worse than before.

4 Likes