Potential security loophole. Someone executes arbitrary clientside Lua code (not uncommon) to tell the server it’s not what it actually is. Unlikely, but if left alone it will eventually get exploited, especially if this kind of detection becomes common.
P.S. If anyone thinks this kind of security loophole is a joke, note that ROBLOX has now had at least two instances of animations (which are seemingly harmless) being exploited and game-specific exploits (e.g. Apoc) that target the game’s networking. Also, where I work in Application Security, half of our problems come from obscure loopholes like this that you’d never expect would be abused. People will use whatever they can to break stuff.
I think it’s unlikely that we’ll add this API given that our goal is for all players to be able to play together regardless of platform. If you have more specific use cases that would be helpful.
Can you provide more details about why you need a specific tutorial for Xbox than other platforms? If your instructions vary by input type (mouse vs gamepad) you may want to check out UserInputService:GetLastInputType() and UserInputService.InputTypeChanged. That way you will be able to support plugging a gamepad into your PC. See Documentation - Roblox Creator Hub.
The desire is for even XBox players to play together with other platforms? Out of curiosity then, why are they on a separate platform to begin with? Technical issues?
For server restrictions, XBox servers are like a completely different game since they don’t share a playerbase with other platforms, so anything I might do in another game (e.g. tweak game to accommodate lower player count across playable servers, tailor servers to suit different average play times (do I need to add resource respawns if XBox servers are open 10x as long?), etc). If XBox servers are merged with other platforms though (hopefully soon), this becomes an obsolete issue.
This isn’t concerning server restrictions, but I enumerated a number of use cases for querying user platform clientside because input type was insufficient, which garnered quite a bit of support.
A tutorial system may have not been the best example of a use case. In my implementation, the tutorial text is stored on the server. TouchedEnabled is retrieved from the client for the tutorial, I can do the same for :IsTenFootInterface(). Doesn’t matter if it can be exploited. However I would like release Pizza place to Xbox with pets disabled temporarily and would need a secure way to determine if the current server is an Xbox exclusive server.
You can presuppose that if someone is an Xbox owner then they will not know how to properly take care of a pet. (I’m speaking from personal experience.)
It does exactly what this thread is looking for, it’s already implemented requiring very little work to unlock, and … well, it has actual use cases. Some examples I can quickly list are:
rewarding players for using a specific platform
ensuring the User Experience is correctly adjusted to the platform type, regardless of being “cross-platform” (cause lets face it, even you build a “common core” like Microsoft did with Windows 10 and made the API more UWP-like, there’s still going to be times where knowing exactly what platform you’re on will allow developers to correctly adjust their games for the best experience)
another random idea i had but forgot, so ill edit it in later if i remember (whoops)
Engineers are trying to force proper design. They’re afraid users will use it to determine input type instead of using the appropriate methods. There have been a number of threads providing good reasoning for determining user platform (e.g. the one I linked earlier), so now it’s just a matter of resources and whether the client team values preventing one of the very, very many ways the API can be misused over the use cases presented on these threads.
GetPlatform doesn’t do what this thread is looking for. If it was unlocked, it would always return Windows on game servers because that’s what they run on. You can already make your own GetPlatform by hacking at the RNG.
We want to be able to tell if the server specifically hosts Xbox users as a stopgap measure until Roblox unifies Xbox and PC servers.
I wrote a entire module to return the device being used based on input and it follows with a Keybind name like:
If player input for BIND_NAME has DEVICE then does input equal DEVICE_BIND_VALUE.
Or in other words I have a folder (Bind Name), and it contains 2 strings (Keyboard, Gamepad) and each has a string based on the bind desired (Keyboard is ‘E’, Gamepad is ‘Y’ value). If input:Match(“Aim”) → device gets interpeted, looks at folder, compares, validates.
But I would still like to have access to “Is Keyboard” enabled and a InputObject data type for what the input device was.