When a Simple Menu Isn’t So Simple: Building an Options Menu in Unreal


For this sprint, I wanted to work on something that would make our game Iron Reclamation feel more polished — an Options Menu. I thought it’d be a nice break from coding gameplay systems. How hard could a few buttons and sliders be, right?
Yeah… turns out, much harder than I expected.

What I thought would be a quick drag-and-drop task became one of the most structured and patience-testing parts of the project so far. I learned fast that Unreal’s widget system isn’t just “make a box, add a button.” It’s more like: carefully plan every row, column, anchor, and panel — or watch your layout explode.

Wrangling the Widget Chaos

The first challenge was layout organization.
I started with everything thrown onto the canvas — it looked fine until I tried resizing the window and half the elements shifted or overlapped. That’s when I realized I needed to learn how Unreal’s Vertical Boxes, Horizontal Boxes, and Grid Panels actually work.



Once I figured out the grid logic, things started to click (literally). It became less about design and more about structure which at first felt tedious, but ended up teaching me how much precision goes into UI work.

The Real Challenge: Making It All Actually Work

Building the menu layout was one thing. Getting the settings to actually change anything in-game? Whole different story.

I set up three tabs for different settings categories:

  • Visual Settings: Brightness and fullscreen toggles currently work; I couldn’t get resolution switching to function properly yet, but I plan to revisit it next sprint.

  • Audio Settings: I got the master volume slider working along with a mute toggle. Seeing the sound fade when sliding the bar was really satisfying.

  • Gameplay Settings: This one’s simple for now an Invert Y-axis toggle that flips camera controls.

Out of all three, Visual Settings gave me the most trouble. I underestimated how sensitive Unreal is when it comes to changing resolutions — the game doesn’t just refresh like you’d expect. It involves calling UGameUserSettings, applying and confirming resolution, and saving configs properly without restarting the editor. That’s still my white whale for the next update.


Behind the Scenes: What’s Actually Powering It

Once I had the structure down, I set up a small C++ subsystem to apply and save the settings behind the scenes.
Each button and slider sends its value to the system, which handles things like brightness and fullscreen toggling instantly, while saving preferences to the player profile.

Here’s the breakdown:

  • WBP_OptionsMenu – The widget containing all tabs and buttons.

  • C++ Options System – Applies video, audio, and gameplay settings in real time.

  • Close Let players confirm or revert changes after exiting.

It’s still pretty barebones, but I’m proud of the structure — it’s expandable, organized, and easy to add onto later.

https://www.veed.io/view/23f8c45e-aedf-4ea5-95b1-261308a58b64?panel=share

Lessons Learned in Pain and Patience

This task humbled me a bit.
I went in thinking UI was the “easy” part, but it’s actually one of the most demanding areas of game development. Everything you see on screen needs intentional structure and precision.

Here’s what stuck with me:

  • Organization is everything. Widgets are only “drag and drop” when you understand their hierarchy.

  • One working setting feels like a win. Even getting brightness or volume sliders to respond was a huge boost of confidence.

  • Visual bugs can be trickier than logic bugs. Nothing’s worse than a perfectly coded button that’s just… misaligned by 3 pixels.

  • Iteration pays off. I rebuilt the menu more times than I care to admit, but each pass got cleaner and easier to manage.

Looking Ahead

Next, I want to:

  • Get the resolution options fully working so the player can change between display modes smoothly.

  • Add sound previews when adjusting volume (little click or tone).

  • Implement a mouse sensitivity slider for gameplay and maybe accessibility features like colorblind filters later on.

The foundation is there — it just needs more depth and polish.

Final Thoughts

This sprint taught me that something as “simple” as a settings menu takes real thought and structure.
I spent hours lining up sliders and buttons — but that’s part of what makes game development so rewarding. You build the things that make the experience feel complete, even if they don’t always get noticed.

Now that the basics are in place, I can finally say we have an Options Menu that actually feels like part of the game — and not just a placeholder screen.

Get Iron Reclamation

Leave a comment

Log in with itch.io to leave a comment.