Duplicate reserved servers created for XBox users with cross platform disabled

Although I can’t do or say anything regarding this issue (and I wish I could), I have corrected the DevHub page to describe this behavior. I’ll watch this thread closely if any information comes up that ought to be in our API docs.

1 Like

Sorry for the necrobump but this same issue persists and it is a big deal for my project. If this behavior cannot be fixed, I ask for a simple way to detect whether an xbox player has cross platform play enabled or disabled. WIthout this ability, I am forced to either prevent xbox players entirely from joining private servers, or always force xbox players to join a separate private server. In both cases, this hurts the (presumable) majority of xbox players who have cross platform play enabled and may want to play with their friends on other platforms.

11 Likes

I’m facing this same problem. I’m trying to put players into servers within the same place where the map is selected upon server startup. It is extremely problematic to have 2 servers created, to the extent where I’m considering disabling Xbox support. It would completely break server population management and add unneeded complexity to an already complex system. Perhaps the server itself could have a short string or number specific to the server group cross play is possible with. I could just add this to MessagingService topics and temporary OrderedDataStore keys when creating servers and have no problems.

9 Likes

Hey there,
I’m making a game that utilizes reserved servers for a server browser and absolutely need to be able to track player numbers within each server, just like you.

Due to this limitation in the Roblox engine, I am going to need to drop Xbox support for my game.

A simple API like player:IsCrossPlayEnabled() should be enough of a fix for the time being.

If Roblox ever adds additional isolated pools of players (such as Playstation players with crossplay off), something more robust will need to be implemented (probably an API that returns an enum for the player pool the player is in)

8 Likes

Just rediscovered this issue today when developing a matchmaking system for my game.

With the new MemoryStoreService, there’s tons of new possibilities for utilizing matchmaking/reserved servers, but it’s disappointing that this particular issue still hasn’t been addressed yet, as it’s a serious problem that opens up lots of avenues for data exploits/incorrect states if two servers with the same ID can exist at the same time. This behavior just doesn’t make any sense - if I’m calling ReserveServer, I’m naturally expecting that there should only be one instance of that server at a given time.

Because of this, and because there’s no API to detect whether a server is crossplay-enabled or not, I’m having to resort to a hacky workaround - if a server contains only Xbox players (determined by calling GuiService:IsTenFootInterface() on each client), then I have to assume it’s a crossplay-disabled server, and block players on that server from entering the matchmaking queue. This is a terrible practice which can result in false positives, and I wish Roblox would finally offer an official solution for this problem, especially if they’ll be expanding onto PlayStation/other consoles.

13 Likes

I’ve created a feature request that will hopefully, at the very least, allow the avoidance of this issue.

6 Likes

I’ve realised this flaw today as well when working on a “party mode” for my game.

Party mode aim is to teleport players into existing reserved servers, but if it is full or “unavailable”, it creates a new reserved server instead.

However each “reserved server” can change it’s state from “available” to “unavailable”.

With the current API for reserved servers, I can’t predict if a player will be teleported to a duplicated xbox server or to the existing crossplay server. It becomes even more messy since both servers can update the same “available”/“unavailable” state.

What makes this even worse is that I can’t use jobId (which is unique to every server) to teleport players to a specific reserved server, since reserved servers can only be teleported to via the reserved access code only.

This is definitely a major restriction that likely causes Xbox players to not be able to play with crossplay players, to the point of both of them needing separate experiences.

4 Likes

Would just like to add that this is still a pressing issue and the fact that this hasn’t even been looked at is hyper frustrating. If Roblox wants to expand their console install base they need to fix bafflingly obvious flaws like these…

6 Likes

A few weeks ago I disabled Xbox support for my experience. Players were having issues periodically where they’d get stuck when being sent to servers, and it appears resolved now that it’s off Xbox. This behavior is a serious oversight.

8 Likes

Access to a method like this would be a very welcome workaround to avoid the many data consistency problems arising from dual reserved servers. In my case, Xbox players will cause catastrophic problems unless I have a method to exclude non-crossplay players from joining. For now, I’ll have to forbid all Xbox players.

5 Likes

This issue has been unresolved for over 4 years now, for what should be an extremely simple fix (give us a simple method to detect if a user has crossplay enabled or not). All games with matchmaking systems that make an effort to support Xbox have been left with no choice but to severely degrade the Xbox experience because of this silly issue.

Sorry for the callout, but we really need this to be fixed.
@goldzun

9 Likes

Im making a matchmaking on my game and have no choice to make my game not playable on Xbox…

1 Like

Roblox has recently added PlayStation support. With that, I assume some code changes have been made on this front. Any of them serve as a workaround to this problem?

2 Likes

Thanks Defaultio for bringing this up at RDC.

We checked in with the product owners and can confirm again that this is a known limitation that they haven’t been able to prioritize yet. We understand the concern here and we discussed briefly about some solutions. Unfortunately it is not yet on the roadmap yet to resolve.

I’ll check in again since @Cindering brought it up recently. The best thing to do at this time is to let other creators know to post their concerns in this thread, it will help with ability to prioritize since there is insignificant work here to resolve on our side.

5 Likes

Adding on to this again since I’m trying to develop another new system that uses Reserved Servers, but because crossplay-disabled players can cause duplicate servers with the same ID to be created, this makes it extremely difficult to account for all the different edge cases that can occur.

Without this being resolved, I will have to resort to even more hacky solutions to try and protect against data corruption. And without any way to determine which players have cross-play disabled, I will just have to restrict all Xbox/PlayStation players from freely joining reserved servers, leading to a worse experience for everyone.


Under normal conditions, only one Reserved Server of a particular ID can exist, and if you try to teleport to a Reserved Server that’s already full, you’ll get an error.

This seems like the natural and expected behavior for reserved servers, so it’s frustrating that crossplay-disabled players introduce an exception to this natural rule.

The fact that players with crossplay disabled can create a duplicate instance of a server introduces a bunch of extremely nasty edge cases that devs are forced to deal with. For example:

  • If you’re doing matchmaking and want to create a reserved server which will host the match and then report the results, this could be screwed up by a crossplay-disabled player joining a duplicate instance of that server, playing their own match with the same ID, and causing invalid results to be reported.
  • If you want players to have a single reserved server where they can build things together and save their progress to that server, their data could be corrupted by someone else creating a duplicate server, causing the original server’s changes to be overwritten by the duplicate server.

It should never be possible under any circumstances to start a duplicate instance of the same Reserved Server. If a player tries to join an existing Reserved Server that isn’t compatible with their cross-play settings, they should simply not be allowed to join, just like the standard behavior would lead you to expect.

Ideally, we should also be able to determine if a player has crossplay enabled or not, so we can appropriately manage which servers those particular players have access to without damaging the whole experience for all console players.

10 Likes

I had no idea this was a thing!! That’s super dangerous.

This was likely responsible for a slow memory leak buildup we had in one of our games with matchmaking.

Not even giving devs the ability to check if a player has Cross-Play enabled is a huge misstep. Your only option as a developer is to accept broken IDs, or disable console support.

8 Likes

I had to remove Xbox support for my game years ago because it completely broke my server joining system for all users.

image

I feel awful about this. This is just the last month. It’s been over 3 years.


If I add Xbox support back, there will be two servers created with the same JobId. It is impossible to differentiate these servers, or know which one players will go to. When these servers try to make themselves accessible via MemoryStores or MessagingService, they overwrite each other. Then when I try to send players to one of them using the access code, it will fail randomly. A single Xbox user can cause my entire joining system to break. There’s no way to test this. Teleports just randomly start failing.

This is not just a small bug or minor questionable design decision. This is serious and broken. It has been like this for far too long.

I made a feature proposal years ago. It’s a decent solution:

12 Likes

The combined amount of player visits from people complaining about this issue is over 2 billion. Is that not enough to warrant a simple API addition after several years of complaints? There is no solution for this right now.

7 Likes

I’d like to also state that two different top experiences I work for, Peroxide and Grand Piece Online, both use a server list and matchmaking system that deals with this problem as well. Peroxide supports console and if users turn off cross-play it creates servers that show up over the original server with a server that is restricted from normal users. We get reports from our user-base that they cannot join a lot of servers off the server list as they’re greeted with a restricted server error message (That we cannot add checks for since there is no way to detect a “XBox” server). So we either support console (Which we decided to do with Peroxide) and ruin it for a lot of players not on console or drop console support (Which Grand Piece Online does) to prevent this issue from happening, both really suck for the experience and the players.

5 Likes

This is currently plaguing Arsenal and will even more so in the near future due to some features we’re releasing based around reserved servers.

With no way to tell whether a server is cross-play enabled or not, we risk cross-play disabled servers being sent to other platforms and vice versa, resulting in poor UX with our server browser.

We also store data based on a reserved server’s id for persistent settings, however with two separate versions this will result in the same key being accessed twice, being overwritten by either server.

Two methods would completely resolve this issue:

  • Player:HasCrossPlayEnabled(), so we can show accurate results in a server browser based on if a user has cross-play enabled.
  • DataModel:IsCrossPlayEnabled(), so we can append a prefix to any datastore keys, or adjust game logic accordingly, if we’re in a cross-play disabled server.

While being able to just have a “No Cross-play Compatibility” setting per universe would be far better, these methods provide the best UX and solutions to most issues.

7 Likes