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.
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.
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.
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.
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.