Way to get System Settings

As a Roblox developer, it’s currently too hard to get a user’s system settings.

At the moment, there’s no way to have Settings without asking the player to enter them.

This could completely solve that.

How it could work with an example:


local SSS = game:GetService("SystemSettingsService")

local success, result = pcall(function()
    sss.GetThemeInfoForPlayerAsync(game.Player.LocalPlayer)
end)
local success2, result2 = pcall(function()
    sss.GetSettingsForPlayerAsync(game.Player.LocalPlayer)
end)

if success and success2 then
    print("The user's theme setting is "..result.ColorTheme..".") --The user's theme setting is Dark, in my case
    print("The user's TransparencyEffects setting is "..result2.Personalization.UseTransparencyEffects..".") --The user's TransparencyEffects setting is true in my case
    print("The user's accent color setting is "..result.AccentColor --[[Or, result2.Theme.Personalization.AccentColor]]..".") --The user's Accent color is Color3.fromRGB(123,123,123) in my case
    print("The user's Cursor size setting is "..result2.Accessability.CursorSize..".") --The user's Cursor size is 2 in my case
end

That’s just an example though, but it could end up working out that way.

Use cases:

  • Remove the need for default settings
  • Get accessibility settings directly without user input, such as Cursor size.
  • If games have the support for it, you dont need to configure and UI settings, game settings, etc because they would all load in.

More ideas for it:

  • If the setting is not supported on the platform (etc mobile), to avoid errors it would return as “N/A”, because nil would cause an error.

If Roblox were to address this issue, it would solve a ton of confusion and save a lot of time regarding coding a large setting system, unless you want an override.

8 Likes

What do you mean by this?

This is a good point, however this would probably be better off as a built-in feature and not something the game needs to implement themselves unless they’re using their own cursor.

I also don’t understand what you’re trying to say here.

If the setting is not supported on the platform, it should raise an error. “N/A” is meaningless and arbitrary.

4 Likes

This also means that developers would have to code around specific platforms which is something Roblox is actively against (they don’t expose platform type). I believe what OP meant by

was to not have to fall back to values for settings, but if these values return nil/error, you would need to fall back to something else anyway.

2 Likes

Exactly, it would be incredibly annoying to have to check for all platforms, or have it error on say mobile, where there isn’t a “CursorSize” setting.

Returning the string "N/A" does not help with that at all.

1 Like

And somehow returning "N/A" helps with this? Now you need to code expecting this function to randomly return a string instead of its appropriate value, like an int or a Vector2. That’s so pointless. You still need to code for that case- it’s unavoidable.

1 Like

Doing something like this;


if Accessibility.MouseCursorSize == "N/A" then
    print("Mobile or console, or setting not supported on this device.")
end

is much better than checking for all devices individually


if not UIS.IsTouchEnabled and not[[console]] and not [[controller/VR]] (and possibly more) then
--set cursor size 
end

And even then, you aren’t checking for Android or iOS, which have different settings depending on what version of Android you’re using. It would be much, much harder to integrate this if it returns nil instead of “N/A” or 0.

No, it would not. Replace if … = "N/A" in your code with if not … and the same thing works.

1 Like

I get what you’re saying now