Allow Spacial Voice UI to be Hidden/Configured

As a Roblox developer, it is currently too hard to gracefully implement spatial voice into an existing game

Right now, the spacial voice UI is super intrusive, because there is currently no way to modify or hide the spatial voice UI. This means that you have to design your UI around spatial voice, a feature that only a small subsection of roblox’s audience can even use.

A simple solution would be to add SpatialVoice to the CoreGuiType enum, and let spatial voice be enabled/disabled via:

StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.SpatialVoice, false)

Alternatively, it would be nice for there to be configurable properties/interfaces with the VoiceChatService object. This could include things like the distance at which you are able to hear other players (something that’s a major problem in my large-scale game).

If this issue is addressed, it would improve my development experience because users with voice chat enabled will be able to use our game’s photo mode without any intrusiveness

Subtle, but still breaks the immersion of the photo:

Right now, if you have voice chat enabled on your count there is no possible way to stop the intrusive voice chat widget from covering existing game UI. This is terrible for the end user, in addition to game developers themselves. In order for the end user to disable this voice chat UI, they have to go into their account settings, disable voice chat entirely, and re-join the experience.

The photo mode in my game is designed for content creators; voice chat conflicting with the photo mode means that I have to choose between marginalizing the content creators who would want to make voice chat related content, and marginalizing the content creators who make cinematic/story-based content.

179 Likes

I second this. For games such as first person shooters, the spacial bubble breaks the immersion and style of the game. A white rounded bubble simply isn’t a cohesive solution for everybody.

31 Likes

As someone who also plays games on their downtime I highly agree. There were times where I have accidentally clicked on the unmute button when I didn’t need to or want to use the feature which makes me worried about being moderated on accident. Being able to not have a button for something like voice chat in the middle of the screen would be nice.

16 Likes

I support this, however, instead of giving the power to the developer to toggle Spatial Voice UI through APIs, it should be a setting in the escape menu so that the client can decide if they want this UI intruding their screen space.

A better way to solve this intrusive UI would be to move the button from an annoying, always active chat bubble, to its own button in the top bar, or possibly even allow keybinds and/or support for push-to-talk

46 Likes

Looks like, after finally digging through the completely undocumented CoreGui code, there’s an (undocumented) API for removing the indicator:

game.Chat:SetBubbleChatSettings({
	Voice = {
		ShowIndicator = false,
	},
})

Unfortunately, this seems to just completely disable voice chat, rather than only hiding indicator. Can there be a way for this to be set to false without disabling voice chat from the main settings menu?

Edit: Looks like there’s a race condition that prevents voice chat from being enabled completely until you keep the indicator visible for a small amount of time? The indicator just doesn’t seem to respond to SetBubbleChatSettings calls very responsively. If I disable the indicator alone, nothing will happen. However, if I type something in chat so that the indicator bunches with the chat text, then set the MaxDistance of the bubble chat settings to 0, it will permantently remove the indicator until I set the MaxDistance to a higher number again and say something in chat.

This is based on a rodux store; shouldn’t it be able to respond instantly to the bubble chat settings state? Seems like poor state management.

19 Likes

A lot of people have been aware of this feature for a bit especially if you look at the vc hangouts hosted by Roblox. It’s not a public thing yet and it probably won’t be for a while too.

I think the default needs to be better. Devs shouldn’t have to muck around to get a reasonable default.

  1. Don’t show me a microphone bubble if I am not using voice chat. Or, if you must, make it disappear after 3 seconds.
  2. Make it more contextual. For instance, maybe only show it for 3 seconds over the heads of characters near me when I voice chat, so as a user I understand they can’t respond to me.

Maybe there’s an even better solution along these lines.

43 Likes

Yes please. These things bomb screenshots and I resort to photoshopping them out every time. I’m sometimes tempted to turn it off altogether just to clean up the screen.

25 Likes

Quite late to the party, however, surprised this still hasn’t been changed.
Seeing the UI while you’re playing really destroys immersiveness and ruins screenshots/pictures for updates, where I have to either zoom out very akwardly or photoshop the icon out.

9 Likes

Yeah, I’ve tried that with BackgroundColor3 too. The BackgroundColor3 applies, but the Voice thing is still there.

At that point I am not quite sure which Indicator it is supposed to be. But it’s not working.

It’s been almost two years, where is this?

It’s extremely annoying to constantly have to disable voice chat within my privacy settings just to get rid of the annoying icons.

1 Like

With Studio Beta for Experience Controls Available Now all the social controls (camera, microphone) get moved up into a unibar in the top right corner.

When that’s released, that will probably solve the indicator problems.

3 Likes

The voice chat bubble is still one of the worst UX sins I’ve ever seen and I can’t believe it hasn’t been changed

4 Likes

If I’m not wrong they are removing this once the new menu is rolled out.

they should just make sort of keyboard command to unmute and mute for pc

i heard the same thing, any idea on a date for that update?

2 Likes

No certain date, it’s slowly being rolled out to all.

1 Like

To add to this post, from a performance perspective I don’t find that the built-in UI is acceptable for my game. In a full server (50 players) the ToggleMic script eats up roughly 0.5-1ms/frame and executes somewhere in the neighborhood of 200 times/frame. I actually want to completely turn this off, because my game is a survival shooter game, and the voice chat bubble is literally a billboard for other players to see you if you have proximity chat enabled.

We really want to use proximity chat, but the fact that we’re very much forced into the parts of this feature that make it unusable for us, and our players (most players don’t even bother because it gets them killed).

Even with the hacky ways to turn this feature “off” I don’t think I’ll be able to recover the 0.5-1ms/frame that this is eating up. It doesn’t sound like much, but my game has a huge map with thousands of zombies and hundreds of buildings and thousands of trees to render. I literally have to squeeze out as many “micro optimizations” as I can to make this game run well on low-end hardware, where 1ms is incredibly valuable.

Ideally, we’d be able to disable proximity chat indicators entirely. I’m sure this is also used for the escape menu, and if so, I humbly request that it only be updated while the user has this menu open, and only for users who actually have it enabled, otherwise this could be completely static and just wait for the user to activate their microphone.

Developers shouldn’t be impacted negatively by built in features. As it stands, this feature is currently taking more time to process than the entirety of the SceneUpdater::UpdatePrepare job in rendering, which is really discouraging since we have like 270k base parts in our map.

32 Likes