Adding onto this, the functionality of a ReservedAccessCode creating a duplicate server should be outright removed, and should send a ‘Unable to teleport to crossplay server’.
Then developers can deal with the error message.
I understand Roblox has a roadmap system, so a quick temporary fix is to disable duplicate server and throw us devs a ‘no cross compatibility’ error.
For developers:
It could be theoretically possible to work around this issue (but very hacky). Instead of relying on jobid to identify a unique server, you instead check the player list.
On server creation (via ReservedAccessCode), you keep track of all the players currently in the server and store it in memory service.
Then on new player joins, the server script checks that it’s player list matches what is stored in memory service. If not a single player matches what is stored in the memory service player list, then DING DING DING, Duplicate server detected.
On the other side (such as a no cross play player creates the server), if high number of teleport errors is detected by non-console players, then ASSUME it’s either a broken server, or no cross play only server. On that assumption, remove it from server list for non-console players.
This behavior is preventing a lot of games which have an active server join system in their lobbies implementing console support. Games: Medieval RTS, Mini Empires RTS, The Conquerors 3 and much more.
this is a huge discrepancy and needs to be addressed as soon as possible by Roblox, we need a way to check if a player on console has crossplay disabled.
checking if a player has crossplay enabled would allow developers to separate their lobby servers with other player’s servers, but then those players would never find a match to play in.
If those players chose to disable crossplay then why are you concerned with trying to bypass it? If there are a lack of players in the game on Xbox, and they chose to disable crossplay, that’s not on the developer. The bigger issue on what actually happens without the ability for devs to check if crossplay is enabled per player was already discussed in the replies of this thread
A solution would likely need to work better than just having developers do the work of checking if a player has crossplay enabled or not. If a PS5 player and an Xbox One player both have crossplay off, I don’t believe they go into the same servers. If they do, it’s still possible a future supported platform won’t work like this. That means there’s potential for two users to have crossplay off and also still be ineligible for the same servers.
We need a solution that scales better and is future proof. A solution which after we work with it, our code should work for any future platforms Roblox is supported on.
I’m not sure what your point is here. Roblox has no choice but to place console players (i.e. Xbox) into separate servers if crossplay is disabled. There is no other possible solution I can think of that can scale well. Otherwise, having the ability to check if players have crossplay disabled is absolutely the best way for devs to handle these cases for custom matchmaking implementations.
Below is one example of the problem explained by someone else so you don’t have to take my word for it.
The best solution I’ve seen proposed so far (which I know I’m repeating) has been to add some kind of CrossplayId, which a developer can include within their matchmaking algorithm. In my case, it would allow me to append the id to a string that I use to search for open servers. It seems the most simple and straight forward.
But anything would be better than the current situation; a user with cross-play disabled has the potential to essentially brick a game that uses a custom matchmaking system.
If the game doesn’t have thousands of players, then console players who have crossplay disabled will never find a match to join and will not understand why, I think the option should be developer controlled unless it’s an XBOX guideline to have an option like this.
It is most likely Xbox guideline. Roblox didn’t make the current annoying functionality just for fun or something. So, the question is how can we have a middle ground that keeps Roblox in compliance with this guideline and make it acceptable for the developer. There are no perfect world solutions, i’d refer to the responses above such as from joesmaller.
Hi, I’m from the Consoles team. We need to do some investigation with Microsoft and Sony technical requirements to see if the cross-play setting is something we can share with developers, as it’s usually only available for a user. I’ll also follow up with Matchmaking to ask about what solutions they thought of and whether sharing the cross-play setting would be okay. The cross-play setting is something we already have set up in the backend, so I feel like most of the concern on our side will be whether it’s something we can provide.
Why would we not be able to access that information? Personal info concerns? I ask because from our PoV, this seems like a necessary piece of information to develop a game cross-platform, just like knowing what the user’s current input device is.
Probably same reason chat got disabled on Xbox a few years ago. Consoles are subject to a lot more regulation both from organizations like ESRB or PEGI, as well as self-imposed regulation by the likes of Microsoft of Sony than PCs or mobile phones ever will be. All these issues are a nightmare to get through and I don’t entirely fault Roblox for not being able to come to an agreement with Microsoft and Sony about this.
If it is not possible to provide this to developers, please at least look into implementing a toggle that completely blocks cross-play disabled players from joining reserved servers (kick them with a message like “please enable cross-play in settings”?). I know this seems like a nuclear option, but the current unchangeable behavior is worse and simply unacceptable for certain types of games.
Hi all, currently we’re looking at a solution where we add a field to the Player object that’s based on a user’s matchmaking context. This field has three options:
Default (PC, Mobile, crossplay-enabled)
Xbox Only
PlayStation Only
I believe this is better than providing a cross-play setting because it properly distinguishes between Xbox and PlayStation players as well.
Really good change! Only nitpick is: Why have it on the player instead of on game / DataModel? If Player1 is Xbox only, that means so is Player2 and Player3, it’s the server that we care about being crossplay.
If I’m running code when the server shuts down on game:BindToClose, I don’t necessarily even have a Player object, or general server code that’s making changes without waiting on PlayerAdded. Workarounds are obvious but a field on Player is slightly more awkward for no apparent gain.
I don’t quite follow – how can a server be considered cross-play disabled? If a player with cross-play disabled joins a server, then leaves, can’t a player who has cross-play enabled join the same server?
My assumption was that a given game.JobId is either crossplay-enabled or crossplay disabled, and that even if all players left an Xbox-only crossplay disabled game.JobId, and we teleported crossplay-enabled players to the server’s access code, they’d join a crossplay-enabled game.JobId of that server access code.
If that were true, I was saying I would prefer a property on game for the type of crossplay of the game.JobId.
Either I’m totally wrong about that, or I was being very unclear that I was referring to a server instance (game.JobId) and not a server (server access code, which multiple server instances can exist for either over time or at the same time for crossplay restrictions).
If I’m wrong, it would be useful to know for sure so I can handle that case.