Roblox VR - UI Update

I see oculus controllers :eyes: :eyes: :eyes: :eyes: :eyes:

4 Likes

This is a terrible idea. You can turn off VR from your Options menu, thus allowing you to connect a headset and play flatscreen games without wearing your headset. (1)

Except now you launch VR games in flatscreen mode… Meaning you’ll get kicked from a VR game because VR wasn’t enabled. Oops.

(1) Although if you’re using SteamVR, this doesn’t work as advertised, because SteamVR launches whether or not Roblox connects to your headset. Devs fix plz!?

5 Likes

I love to see VR Updates! I was getting worried it was going to be dropped! I’ve found some cool VR games on roblox so far and I’m excited to check out the new UI! Please keep them coming! :white_heart:

1 Like

That side bar isn’t part of the VR UI, it’s the game’s UI lol

2 Likes

People will always be able to bypass platform checks.

2 Likes

GREAT update! I have a Quest 2 and as a new user to VR I had no clue how to mute people in VR since I couldn’t find the roblox menu! Having the UI more accessible to players is a huge quality of life improvement for VR, especially for all the new people coming into Roblox VR.

1 Like

Ah, sorry 'bout that. :sweat_smile:

Now30Characters

2 Likes

Yeah I figured it out a long time ago, I was just making a point that the old UI wasn’t very accessible. :slight_smile:

2 Likes

From what I remember of when I last visited Royale High and Koala Cafe in VR, you’re right about how it’s down far enough that I have to look down to see it, which is good.

However, I do think it would be cool if there was a way to hide the whole bar, like holding the menu button for a second (since just pressing it shows/hides the ScreenGui). That way, it could hide all ScreenGui and CoreGui, giving a completely clear view of experiences’ worlds until it’s pressed again or something.

It’s something that I liked about the old VR UI; The only Gui that was always visible was a random controller icon in the upper-right corner; If an experience hid its Gui (like mine) in VR, it basically “opened the window” to the virtual world without anything floating in front of me. (On the other hand, the new ScreenGui interaction is a big improvement over the old “press menu then click on things” method.)

2 Likes

There are 3 types of menu access that players might want to bring up, the headset menu (e.g. Oculus Menu), the Roblox System Menu, and access to the game’s UI. Some controllers don’t have multiple menu buttons.

Will take your feedback into consideration, always looking to improve the experience.

2 Likes

Appreciate the details - we’ll look into the issues and if we have difficult reproducing these, will gather more info from you.

3 Likes

This is a Nexus VR bug, and has since been fixed. However, some games may still have this issue (see Looping SetCoreGuiEnabled Tanks VR Framerate)

4 Likes

Good Update! I have a few suggestions and issues though.

Suggestions

  • VR Keyboard for TextBoxes/Chat
  • Chat, Leaderboard, Emotes and Backpack GUIs intergrated with bottombar
  • Support for changing speed of smooth rotation and snap turning
  • Support for Adorneeing and resizing the VR 2D gui to a Part
  • Support gamepad navigation on menus if pointing is not possible
  • Voice chat buttons on bottombar (unmute, mute all players etc)

Issues

  • Gamepad controls are shown when selecting on controls, and it clips out of its frame too
  • ClipsDescendants still appears to be on for the VR 2D gui frame. Maybe a toggle in VRService?
  • When using SteamVR with an Oculus Quest headset, Roblox uses Vive binds instead of Touch binds. This makes it impossible to play some games (No ABXY)
  • Emotes menu button should be hidden in R6 only games as they do not support Emotes, or when the emotes menu is disabled by a localscript
  • BubbleChat only chat frame does not appear
  • No home screen support (The universal app is forced out now, this should be a no-brainer at this point)
6 Likes

Yes finally a update to the VR UI! :ok_hand:

1 Like

When using SteamVR with an Oculus Quest headset, Roblox uses Vive binds instead of Touch binds. This makes it impossible to play some games (No ABXY)

Same thing with the Valve Index controllers. It’s almost impossible to play any VR game because most of the buttons don’t work.

2 Likes

Can you, or someone with the Knuckles controllers, run this snippet in a LocalScript and tell me what the response is when they press the buttons on the Knuckles controllers?

while true do
wait()
game:GetService("UserInputService").InputBegan:connect(function(inputobject) print(inputobject.KeyCode.Name, inputobject.UserInputType.Name) end)
end
1 Like

Left A, B is X, Y and right A, B is X and A. Left trigger is LTrigger2, right trigger is invalid. Grip L is LTrigger1 and Grip R is RTrigger2.

The output logs fill with 5000 results after clicking the button so its hard to get the full picture because it immediately clears after clicking another button. Honestly it just took 20 min trying to get the VR to work with Studio and it caused all but the viewport and output log to blank and turn black and become incredibly laggy.

1 Like

Here’s a different version that responds by putting the result into a parent GUI object instead:

wait(2) -- necessary to prevent a waitForChild disconnection

while true do
wait(.1) -- small edit to give VR more frametime
game:GetService("UserInputService").InputBegan:connect(function(inputobject) script.Parent.Text = "." .. inputobject.KeyCode.Name .. ", "  .. inputobject.UserInputType.Name .. ".") end)
end

Both A buttons are X now? That seems wacky. Also seems weird that RTrigger does nothing because that used to be the button to activate the dedicated UI Cursor, except I’d assume Roblox aren’t straight up turning VR controllers into regular controllers.

1 Like

Honestly, take what I said earlier with a grain of salt, I had a lot of issues getting the VR to work in studio, and the logs didn’t work as expected so I might have messed things up.

I’ll get back to you with a more accurate analysis using your new script when I get the chance.

1 Like

You’re constantly creating numerous event connections every ~0.1 seconds for the input to be listened to, which is very inefficient and something to definitely avoid.

I unfortunately don’t own VR myself, but I’m trying to provide better practice here.
One connection is enough to receive an output each time an input is made.

game:GetService("UserInputService").InputBegan:Connect(function(input: InputObject, gameProcessedEvent: boolean)
     print(input.KeyCode.Name, input.UserInputType.Name)
end)
2 Likes