Allow developers to add different settings to the CoreGui settings menu

Having custom-made in-game settings for things such as graphics and audio doesn’t feel good as a user. One would ask themselves why there are two sets of settings; one in-game, and one in the CoreGui menu. It’s quite a safe assumption to make that this destroys the continuity of the experience, and tends to make it significantly more complicated for the user.

For example, many experiences offer a “low-detail”, “medium-detail”, and “high-detail” mode. These options allow the user to pick which one suits them best. Unfortunately, developers are forced to create a totally separate settings menu or are required to create bulky popups every single time the user joins their experience. And as described above, this is sub-optimal. The current system puts more work for the developers to make their own settings, and more work for the end user to figure out what to do.

Here is the current state of the settings menu:

There are many different types of settings such as sliders, toggles, and dropdowns.

I’m proposing some sort of feature that allows developers to create their own options that are located in the options panel. Here is an example of implementation:

local CoreGui = game:GetService("CoreGui")

local Slider = CoreGui:CreateSettingSlider(name, ticks, default) --> create a setting slider
Slider:Set(3) --> forcing a value on the slider
Slider:Get() --> getting the value of the slider
Slider.OnUpdate:Connect(function() end) --> listening for updates

local Options = CoreGui:CreateSettingOptions(name, arrayOptions, default)
local Dropdown = CoreGui:CreateSettingDropdown(name, arrayOptions, default)
local Toggle = CoreGui:CreateSettingToggle(name, default)

-->> settings will be displayed in the order they're created in

Letting developers create settings of their own directly where all the other settings create a consistent, predictable experience for all users.

13 Likes

Definitely 100% agree and support this. This would be useful in many ways.

4 Likes

CoreGui is a restricted service, so therefore it’s a big question on whether would it even be possible to add exceptions only for those methods/events. Additionally, this would bring security risks as Roblox specifically does not want people to modify CoreGui in any form or shape.
It may result in ways to crash CoreGui and/or make it invisible (forces mobile users to restart the app instead of just being able to leave), so it’s very unlikely for that to be ever added.

3 Likes

Not really.

We are merely extending the usage by exposing already existing APIs. Functionality will stay the same as you’re using the same code used internally. Developers will not be able to tinker with any setting they have not made. There should be no security issues.

4 Likes

It would’ve been better if it uses StarterGui:SetCore() since you can’t access CoreGui in normal scripts (unless it’s for plugins which doesn’t run in live servers), so why CoreGui?

3 Likes

I swear I have seen something like this somewhere. You would add some instance to some new service to add new settings. Maybe in one of the hack weeks? I will try to find it.

Full support though. The default settings are already super basic, so at least SOME control over them would be nice.

3 Likes

I belive we should be able to modify the Help tab aswell. In a lot of games, it’s either useless or downright wrong due to custom controls.

7 Likes