For years now, we’ve been doing things the same way.
Despite Roblox giving us the tools to make it happen, our stubbornness and comfort in the norm have prevented us from making any progress. It has become normal for me to join a game and have to mute it due to the overwhelming music or ear piercing engine sounds. This REALLY shouldn’t be the case. We can fix this, but why haven’t we? Have we forgotten how much Audio adds to the player experience?
Games have had Sound Options for DECADES!
When a PC game releases, we expect to be able to configure the sound options for it. We expect to have control. Doom(1993) had sound options, almost 30 years have passed since then, and it’s STILL common on Roblox to have no sound configuration options. Why is it not the norm on Roblox? We need to start holding Roblox games to the same standards. If a game from 1993 can do it, so can we! Players should not have to mute your games, or mess around with external volume mixers just to preserve their hearing!
Allow me to introduce to you my latest “Ugly But Useful” (UBU) plugin, UBU: Sound Settings!
UBU:Sound Settings uses SoundGroups parented to SoundService to control volume in games!
Setup is easy, and by default it is designed to work with Roblox’s topbar thanks to ForeverHD’s Topbar+ module. This allows the menu to seamlessly blend with Roblox’s own UI when it’s not open.
Volume Control is also very easy for players to use, as it uses Sliders created with EgoMoose’s GuiLib which means that volume adjustments are simple, and intuitive.
Now let’s get into the set-up!
For demonstration purposes, I’ll walk through setting up the “Music” slider in the Demo place.
Step 1) Set up your SoundGroups!
Create a SoundGroup using Roblox’s insert object menu and make sure it is parented to “SoundService”, give it a unique but useful name. In this scenario, I’m calling mine “Music”
Step 2) Set the SoundGroup property on your Music/Sounds!
Next, we will select any audio we want to be controlled by this SoundGroup, and then set its “SoundGroup” property to the desired group.
This can also be done with a script if you’re inserting the sounds with an in-game script. Though, I won’t get into that in this tutorial.
Step 3) Open the plugin!
You’ll be greeted with the following window;
In this window, we can do a few things, such as change the default volume percent and change which side of the topbar the button to open the menu will go on. Percents can be entered as whole numbers (Integers) and the Topbar side can be changed by left clicking on its respective button.
NOTE: Sounds groups you have in “SoundService” will be displayed in a checkbox list in the middle of the UI, it will NOT display duplicate names. The resulting in-game menu created by this plugin will control ALL SoundGroups that share a name.
Step 4) Select the SoundGroups and create the menu!
Next we will select the SoundGroups we want to create volume controls for by clicking on its respective box.
Then we click “Create/Update Menu”
And just like that, we’re done! Is it pretty? Well, if it was I’d have to re-brand! But, it works, we can now control the volume of the music in the demo game with a slider UI! If for any reason, you want to remove the menu and its dependents, just open the plugin and click “Uninstall Menu”!
You can use it as is, edit it to make it look nicer, or make your own volume menu from the ground up! I just want to make it easier for developers to introduce sound menus into their games, it’s a practice we should ALL be using. I hope this at least encourages some people to start implementing systems like this.
In the live Demo place, I also have it set up so you can control Character Audio as well, but felt it fell outside the scope of this post. Feel free to dissect it to see how it works!