As a Roblox developer, it is currently impossible to access a users game settings from a Server or Client Script. (Read Only)
Being able to receive information about a player’s graphics and sound settings - as well as their resolution could be a massive step towards improving the user experience. An example could be an in game prompt, reminding to enable game audio if said player has their’s disabled when participating in an audio inversive game. Many games also make use of “performance modes” - allowing the user to reduce rendered objects via the use of an in-game setting, all of this could be automated and improved - to guarantee the best possible experience, and minimise lag related issues.
Furthermore, smaller details such as adjusting Guis specifically based on a player’s resolution or camera mode would allow far better integration with users who make use of differing playing styles too. As well as providing the ability to physically move a gui element around the screen - rather than simple scaling, all of which would make a notable difference to the Roblox experience.
Eg. local Quality = Player.GameSettings.GraphicsQuality.Value
I don’t know how many people would agree with this, but it’d be interesting to see what other uses this sort of integration would achieve.
That being said, it is not recommended to make changes in your game depending on the quality level, because Roblox does not describe, nor guarantee, which tasks are performed for each specific quality level and which tasks are not. They may decide to reduce or increase the limits at which certain graphics tasks are performed at any time, or add or remove rendering tasks depending on the device, without any prior notice.
Secondly, you cannot find out the quality level if the user set it to “Automatic”. So another reason why changing things depending on quality level is not going to work out well.
As for sound volume, you can get it like this:
local volume = UserSettings().GameSettings.MasterVolume
Value between 0-1, it’s a float. Check if volume == 0 to see if the user has sound turned off.
This seems like a bunch of small feature requests at once, it’s a little vague what exactly you want and what your problems are. Perhaps split these off in a different thread because they don’t really seem related to player settings (resolution is often static, and dragging UI is not a “player setting” in the escape menu).
By making a UI element Active (set its Active property to true), it can be dragged around using the mouse. Furthermore, to get the device resolution, you can use this API:
local resolution = UserSettings().RenderSettings.Resolution
I believe the problem here is that these features, while they already do exist, aren’t properly documented. I had to run some code to figure out how could I read the camera sensitivity, because it was not documented in a fairly acessible place.
If you have specific requests for documentation please post them under Studio Features with the “wiki” tag, for example if you think documentation should be added or improved for certain services / properties / methods.