Game Settings System

https://open.codecks.io/unity-open-project-1/decks/15/card/15e-settings-system
Hi was wondering if I could make the settings scene i am pretty good at making menus and this is something I would really love to do. if I could how would I submit the UI
And what would you like me to add
Some ideas are:

Music volume:

Sound FX
Main menu music
In game music

Colorblind settings
Captions
I could also show the controls
Brightness
Language

Could you see if people can make UI design for the Slider, Text Font, Button, and Drop Down? If not I can make something but I would rather have someone else do it that is helping with design so it can fit better.
thanks for your time

Hey, great project and idea to make this a community effort!

I would like to work on the Settings System. Are there any special plans on how it should work? Persistency over several sessions etc.
I can build a prototype UI to test the code. As for the persistency we could stick to PlayerPrefs for now or if you want we could use JSON serialization of a ScriptableObbject maybe.

1 Like

I can help you out! I really want to work on the settings as well.

Does anyone have ideas for settings options or does anyone know how to make UI if u do just put it in the comments:):smile:;):stuck_out_tongue:

I have a script ready would u like me to me to share it @cirocontinisio

There is already a thread about it! Please, make sure to use the existing threads!

@phazer34 here’s the settings thread!

I created this first and waiting for approval because you can’t submit it until it is approved

I want to contribute can u just focus on one thing at a time instead of doing everything give other people stuff to do

My two cents is that this should actually be a separate GitHub project that is included via the Package Manager. That way anyone in the Unity community can easily use it.

Additionally, it would be smart to coordinate with the Saving / Loading system, especially if we were to use an external serialization solution such as Odin Serialization.

I want to see your architecture can you send me the forked repository to view the progress?

I think if the saving/loading system is using a generic JSON serializer that can serialize all classes we don’t need to think about saving/loading data in this settings system, you are right. It just would be to call the save/load methods from within the settings system.

As for the package manager idea, I think we should not make this too complex. If every feature would be a package it would be too hard to synch all systems together in my opinion.

Also, this settings system is nothing too complicated. It’s just a class that enables you to change the settings like resolution etc. (mentioned in the settings system card).

If this is going to be assigned to me, I’ll talk to the Saving/Loading system guy to make the save system a bit generic or I could tackle both in one go.

I didn’t start development yet as nothing is assigned, but my forked project is this: https://github.com/Acimaz/open-project-1.git

Hi there I’m interested is this too i have worked with some of these settings in the past.

This is the official thread to discuss the Game Settings System (roadmap card).

Please start with simple implementations that generally stick to what the card on the roadmap is saying. There will be time to expand the functionality.

2 Likes

Hello, I want to join you and I have an idea to implement the architecture that “stivenUnity” referred to.
for example, a parent class that helps you to implement any settings later. I can commit diagrams if you start the Settings project.

Alright, folks. Here’s a list of what needs to be done taking what the roadmap card says:

  • Resolution (Drop down menu with a list of 16:9 aspect ratio resolutions)

  • Fullscreen toggle.

  • Shadow Quality

  • Anti-aliasing

  • Graphic settings preset (Drop down menu with Low, Mid, High)

  • Audio Volume (SFX and Music)

  • Language (We can have the placeholder and work on this later since it’s not priority right now.

  • Control Remapping Scheme (This is a whole new section that is related to this other roadmap card)

  • Save and Load Settings

In my opinion we could use player prefs to save the settings using JSON serialization to save the monobehaviour class. The control remapping scheme can be managed separately in its corresponding thread.

Are any of you working on doing something already? I think it would be better if we choose something small and start building from it, rather than try to do it all to prevent working double.

I’ve worked on this already and have implemented a working UI which can change the following:

  • General - Language
  • Graphics - Graphics Presets, Resolution (all supported resolutions on users device), fullscreen mode,
  • Advanced Graphics - Anisotropic filtering, Anti-Aliasing, Shadow Distance, Shadow Quality
  • Audio - Music Volume, Sfx Volume

The only thing which blocks me from making a pull request atm is that unitys “SetQualityLevel” actually sets the quality level selected from the presets, but completely ignores all advanced graphics. This is nonsense as it has all presets configured inside the “Quality” project setting already.

Also calling QualitySettings.SetQualityLevel(index, true) with the second parameter set to true, which is used to apply expensive changes like anti-aliasing values, does not change said settings. It defaults them to 0, which seems to be a unity bug at this point.

I think I still will make a pull request and work on this later on to fix it. Maybe someone has an idea why it does not work as intended.

1 Like

Care to share your PR? Maybe I can take a look at it and we can work on it together! But great progress! :smile:

1 Like