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.