Posted August 28, 2025 by UnluckyProdigy
#Hypertrack #Game Development #Racing
Hi everyone! I am back with another devlog for our game Hypertrack! For those of you who don't know me, I am Anthony. I am one of the developers working on Hypertrack, sharing my experiences weekly here! I hope you can all relate to some of my experiences and I hope that these devlogs help some people with similar issues.
The Problem!
During this week of production, I ran into an issue with out remappable key system when testing the OptionsMenu inside the MainMenu. While the feature worked perfectly in-game, the MainMenu Version displayed no controls or showed "None" as the action labels.
This was a serious problem because it meant players couldn't adjust their keybinds before entering a race. From a user's perspective, being forced to start the game, enter a match, and then fix their keybinds would be frustrating and counterintuitive. We want configuration to be accessible from the first screen.
The Solution!
After debugging, I forgot that the MainMenu used a different PlayerController (AMenuPlayerController) than the in-game one (ANitroPlayerController). My rebind UI (URebindListWidget) was hard-coded to only talk to the in-game controller. Since the cast failed in the menu, the widget received no action names to build rows from - resulting in empty or "None" labels.
To fix this, I made the widget controller-agnostic, so it can talk to either ANitroPlayerController or AMenuPlayerController. I extended the Menu controller with the same rebind API as the in-game controller (RebindAction, GetEffectiveFor, GetRebinableActionNames), and ensured it loaded/saved user overrides to the same config file. Finally, I moved the label assignment in URebindRowWidget to SynchronizeProperties() so the action name would always display correctly.
With these changes, players can now rebind keys in both the MainMenu and during gameplay. THhis not only improves usability but also creates a consistent user experience. Testers can immediately configure their preferred controls without confusion, making the game feel more polished and player-friendly.