Custom buttons in the new experience controls

As a Roblox developer, its currently difficult to integrate UIs into the existing topbar UI, this was already shown when the topbar was randomly changed from 36px to 44px.

We did get an API to handle this, but it ran under the assumption that the topbar would remain at a consistent 36px height. Personally, I see this as a hack, but thats not what my request is.

Instead, as a future-proof method, I believe we should be able to add our own buttons into the existing unibar. Lets take a simple example, lets assume we have a game that creates our own backpack system instead of the Roblox one. Right now it’s hardcoded that if we disable the Backpack, it will also hide the unibar button.

This is expected behaviour since the button is connected to Roblox’s own UI, and it’s been disabled, so there’s no reason to show this button, but, as a developer, I cant add my own backpack button here to replace it, instead, I have to render it next to the unibar as a whole, which can create non-future proof implementation.

It would also reduce friction to a player, if I can simply add my own Backpack button here to replace Roblox’s one, the player would see the button and have it work as expected, we already somewhat have this with CoreChatConnections, but I wonder why this wasn’t expanded into a fully featured API.

My request here is that there should be a SetCore method for adding my own buttons the unibar. With this request, I can simply add the Backpack button back, or any other feature that may be useful having up here, for other examples, a shop, leaderboard or game menu.

If Roblox are to address this feature request, it would improve my experience as it would

  1. reduce friction to a user since the buttons can be replaced that are otherwise disabled by SetCore
  2. prevent an issue where if the UI is changed again, it creates a more future proof approach as it shifts responsibility to the Topbar manager rather than the developer, with the assumption that Roblox will continue to handle it with changes.
11 Likes

This sounds great, but how would they handle non-core buttons? How will they advise the users that the extra buttons have been added by a third party and shouldn’t be trusted in the same way as the core buttons?
How will button ordering be handled? What about multiple scripts from things like free models that want to add in the same kind of button. Is there just going to be a huge mess of buttons that overflows the topbar?
How do you decide what should be under the hamburger menu and what should be inside the main frame?

I love the idea very much, and it would be a great help for those who want to make a custom chat, backpack, etc. but don’t want to hack in an extra top button themselves.

Why should they? This would introduce another limitation and inconsistency within the hamburger menu. Sure, it might enhance security, but at the cost of adding more complexity to an already complicated situation.

I believe that if a developer wanted to create a malicious game, their first thought wouldn’t necessarily be to add something harmful to the top bar. In any case, what kind of malicious, non-trusted button could be added to the top bar that would compromise the user’s security more than a regular GUI element placed next to the hamburger menu?

In my opinion, the best thing Roblox could do is revert to their old system where everything could be removed except the “Roblox ESC” menu button. My belief is that if Roblox allowed more freedom with the Topbar, creating a future-proof, fully customizable, and hideable version, players would eventually recognize that developers can modify the Topbar and become cautious of any suspicious new elements. Along that benefit, they would also encourage better UI design in games and allow for way more creativity, making individual games more unique.

In my opinion, button management should be entirely the developer’s responsibility. They are accountable for what appears in their game, and they should have full control over managing scripts, models, and other assets that might try to add their own buttons. If their game’s top bar becomes cluttered with buttons, it’s up to them to manage that.

As for the ordering, it could be handled through a LayoutOrder property. If multiple buttons share the same LayoutOrder, they could then be arranged alphabetically.

StarterGui:SetCore("AddExperienceControlsButton", {
  ID = "BackpackCustom",
  Image = " ",
  ActiveImage = " ", 
  Text = "Backpack",
  Click = BindableEvent,
  LayoutOrder = 1;
})
4 Likes

I’d personally just like to have the ability to hide everything except the Roblox menu button in the very top left of the screen! While other button customisations are cool, all I could really ever ask for is just minimalism.

1 Like