Developer Customization of the 'Controls' menu

As a Roblox developer, it is currently too hard to give players a summary of controls used in their games. While most popular games do an excellent job at explaining actions bound to buttons in their onboarding / tutorial sections, there is no way to easily list all available input actions in a way that is consistent across all games on the platform.

Additionally, some games choose to disable CoreGui such as the Backpack and Playerlist and do not support the Roblox-allocated keybinds for these. Despite these being either fully replaced by the developer or not available in the game at all, Roblox continues to display the now not-bound input actions in the Controls menu.

With the recent overhaul of the ‘esc’ Menu, Roblox has added an excellent location for players to see an overview of all the available controls and actions they can use through the Escape Menu > Controls… button. This opens a full-screen prompt listing all the available default actions to players.

Developers and players would both benefit greatly from having the ability to customize the controls displayed in the Controls prompt. Developers would receive an easy-to-use and standardized method to display registered input actions to players, and players receive a consistent experience across all games on the platform when it comes to understanding input actions available in games. Both to better understand game-specific actions that the developer has added, as well as input actions that are not available in the specific game such as the default Backpack CoreGui.

The type of new functionality I am requesting is the ability for developers to register keybinds to be displayed on the Controls prompt. This method could be tied to ContextActionService, but should ideally be separated from the existing Action Binding system as not all input actions are defined directly through this service. Additionally, it is important that developers have the ability to provide a LocalizationTable (when using Embedded Localization) or a Key (used to lookup the string in the Cloud Localization System) to have the ability to localize the help string.

Additional functionality would include automatic removal of input actions related to disabled CoreGui. Preferably by having these scripts call their ‘register help prompt keybind’ method within the script itself, so that developers forking CoreGui retain their entries in the Controls prompt.

If Roblox is able to address this issue, it would improve my development experience because it would offer me a way to present input actions and keybinds to players in a way that is visually consistent across all games on the platform. It would improve the User Experience and remove the clutter and inconsistency of displaying keybound actions for features not available in my game.

Previously posted feature requests that request something similar but don’t follow the request template and/or don’t provide any additional information, for reference;
“Edit Escape Menu” & “Ability to redesign / add to the esc menu”

35 Likes

In the new (and old) in-game menu, there is a controls menu that shows what button to press for various actions in-game. But most of these controls are not relevant in my game. For example, I have a custom camera script and I don’t have I or O binded to zoom in or out, and there is no mouse lock. I do not have the stock backpack, player list or chat either so those controls are incorrect too

This menu shows irrelevant information, and for new players it is bad UX showing them wrong controls. Let developers customize the controls menu, or ideally let developers completely remove the default menu and create custom ones that 1. match the game’s UI and 2. show relevant information


14 Likes

This would be lovely to have, although using ContextActionService for the adding/removing input to the tab wouldn’t seem to be as fitting. I suggest a separate service that easily allows you to add/remote key binds with a description of what that key does.

People still use the input service for creating actual input. ContextActionService wouldn’t help as much with that, which you mentioned. It’s better to manually and separately set the ActionKey and ActionDescription for the best possible control over it, that is if it were to be implanted.

I’m overall positive about this idea and got a feeling that people would actually get more engaged during their gaming experience knowing that every control is just right there in the settings.

2 Likes

Post in a similair vein;

If we didn’t have access to the control’s menu, being able to create our own game’s settings would be ideal.

I have to agree with this as well, especially as the ContextActionService can be used to quickly bind/unbind actions with the same key.

In addition to adding our own controls, we should be able to remove some of the default controls. Because I have a custom camera and inventory, many of the controls listed don’t apply to my game. Being able to remove those and add my own would be useful. It would also make player’s experience better, as they wouldn’t have to search the in-game menus or sometimes the game description to find controls.

I highlighted the controls that don’t apply to my game in red:

3 Likes