Roblox VR System Update

Hi Developers!

We are releasing the first of many updates to provide renewed Virtual Reality support for Roblox. Our initial goal is to make Roblox VR immersive and accessible for everybody, with VR working properly in all games with default scripts.

Our first set of updates includes an improved VR camera system in the camera module, with comfortable 3rd person and 1st person support. We also expanded our support for VR controllers and replaced the old radial menu with the updated system menu.

NOTE: we are aware of an issue where the system menu is sometimes not displayed and we are looking into this.

This is just the first step for better VR support in Roblox and we will continue to release improvements as well as new features in 2022 and beyond.

Summary of Improvements

System & Controls:

  • SDK Updates: SteamVR and OculusVR SDK
  • Controller Support: Valve Index (new) and improved Oculus Touch, Quest 2
  • UI (first pass): Replaced old Roblox System Menu with new System Menu

Note: some existing VR experiences used camera rotation or similar hacks to hide the Roblox top bar. This will not work correctly with the new update(see known issues).

Camera:

  • 3rd Person: default working again, plus improved compatibility and comfort.
  • 1st Person: new option w/free movement, vignette overlay for comfort.
  • Vehicle: steady camera with 3rd and 1st person immersion options.

Default Controls

Oculus Touch

Gamepad

The Xbox controller and other controllers are also supported and have a similar button layout to the button mapping above.

Valve Index

We have added support for the Index controller. The limited number of buttons gave us a few challenges so let us know what you think.

Camera Examples

Default Third-Person Camera
ThirdPerson

The third-person comfort cam is best for anyone prone to motion sickness. You are always in control of the action and the camera only teleports after your avatar stops moving or through a manual camera reset using the controller.

First-Person Camera
FirstPerson

The first-person camera is more immersive but still designed for comfort. We use an automated vignette to reduce the view frustum and prevent sensitivity to the motion in your peripheral vision. You can turn your character by either physically looking around or by using snap turn controls.

To enter first-person mode, use the same controls as the gamepad, which is to depress the right thumbstick to change the zoom level.

UI

By default, the Roblox Top Bar UI stays hidden in VR. When you press the menu button, you enter UI selection mode. You can interact with game UI and open the Roblox system menu by selecting the Roblox icon in the top left corner.

Note that there is no direct access through a button for the Roblox system menu, as Oculus uses that button for their own menu, and the Index doesn’t have that button.

Known Issues

  • The Roblox system menu will sometimes not show up in-game
  • Some existing VR experiences in Roblox offset the camera or controller position to hide the top bar. This causes an issue with UI selection mode. The menu button may be outside the field of view or difficult to aim at and select.
  • All cameras and controls are part of the playerscripts and might not be available in experiences that fork those modules, unless they are updated; we recommend that you merge the new changes if you have forked your scripts.
  • The “Right Stick Up” function on the Index controller is used as the menu button, which can potentially overlap with other custom functions.

General Feedback

We would love to hear your feedback on the changes above and any suggestions for new features going forward.

420 Likes

This topic was automatically opened after 10 minutes.

Love that Roblox is getting back into VR. Although not having a direct button to the Roblox menu is a bit odd, why couldn’t there be something like press and holding the in-game UI button?

84 Likes

Awesome timing with our latest Beyond The Blox episode! We discussed some of the quirks and stuff that was missing from Roblox VR, and in my case motion sickness, so it’s awesome to see some these being addressed and new stuff added.

Awesome to see VR get some updates :smile: it’s definitely under-used.

38 Likes

I managed to get access to an early version of this - here are my initial thoughts (edit: updated to reflect more up to date tests). I tested everything on an Index headset with Knuckles controllers, and it was pretty alright! Here’s some of my criticisms:

What I didn’t like


  • In general, I don’t need the vignette effect since I don’t suffer from motion sickness in VR nowadays, so it would be nice to be able to disable this in settings. Bonus points to have this exposed via a common API so games can also respect that setting.

  • I would also like a way to disable blinking on snap turning, same as above.

  • Pressing L3 seems to cause a blink without rotating the camera - I think this is a bug.

  • Index bindings are better, but not totally correct - grips currently map to the bottom buttons and the bottom buttons do nothing. This is consistent with earlier experiments I conducted by manually enabling FFlagValveIndexSupport.

  • The menu is very difficult to get to - firstly, I need to push up on the touchpad to access the 2D UI, then aim at a tiny button to open the Roblox menu. I think that it would be much better to access the menu via a long press on one of the controller buttons directly; the topbar UI design pattern does not work well with VR.

  • The menu still lacks VR options - I’m not sure whether this is intentional or not, but there are no options for recentring the player’s head or for hiding the 2D UI.

    • side note: if recentring isn’t coming back, I actually wouldn’t mind - I don’t think it’s the right approach for VR. I think that the origin point for :GetUserCFrame() should be fixed at the room origin unless a game explicitly asks for a recentre, so that we know where the floor is and can do stuff like automatic height calibration.
  • In general, the menu is very VR-hostile at the moment - it still requires gamepad-style navigation (no laser pointer) and also is not anchored in world space at all - it’s just a 2D plane stuck to your camera, which is uncomfortable. This menu should be fixed in world space rather than tracking the head directly, and should be navigable via laser pointer rather than using gamepad-style navigation.

  • The position of the in-game character is not tied to your head’s horizontal position (in first person mode). If I take a step forwards in real life, my character does not move with me, leading to a strange discrepancy where I’m standing in front of my character in first person. This means I can very easily end up walking through walls or colliding with objects that are far away from myself. Ideally the character should replicate real life movements as well as movements inputted via joystick.

What I still want - short and long term


  • More locomotion - Half Life: Alyx still remains the gold standard for user choice with locomotion. I’d love to have smooth turning options (with speed I can configure to my own preference - I prefer it faster than most), as well as ‘blink’ teleport and ‘shift’ teleport modes (though these should perhaps be opt-in for games). It’d also be nice to have a variant of the third person comfort cam that follows the player if they walk further away, or even a variant which linearly follows them - kind of like a smooth locomotion comfort cam.

  • Dedicated VR CoreGuis - in particular, I’d love to see a VR-first menu and settings page design, similar to the dashboards we see today with Oculus and SteamVR software. The current sidebar design works well on desktops, but not on a small square plane in VR.

  • It’d be nice to (have the option to) see my own hands in VR, or at least the controller models. I know this existed with the Vive wands back in the day as a :SetCore, so perhaps it’d be nice to bring back more formally as part of a redesigned system.

    • Perhaps it’d be good to have pre-made fully rigged left/right controller models for all the different controllers RobloxVR supports, with attributes to control how far each button is pushed in, where the joysticks are pointing, etc, as well as pivots in the right place so we can easily set them to the hand’s CFrames and have them appear in the correct place relative to the user’s hand. (see also - my suggestion about hardware-independent hand/controller positions)
    • It’d also be good to expose data about where hands and fingers are so we could implement skinned mesh hands that respond to finger tracking. This could even be used in conjunction with default controller models to show the user where their fingers are relative to the controller.
    • Hand movements could even possibly be replicated on a player’s avatar, for a more immersive social experience.

My overall impression of this update is ‘whelming’ - it feels like a great step forward in the attitude towards and maintenance of RobloxVR, and these changes are fantastic, but we’re still at a 2016 level of quality. Minus the few quirks being ironed out at the moment (looking at you FFlagValveIndexSupport :stuck_out_tongue: ) this is a fantastic start.

I’m also observing that this is a change largely focused on better default compatibility, rather than focusing on giving VR developers anything new. This is undoubtedly a good focus - it’s exactly what I’ve asked for historically - but also we should still keep in mind that perfect default compatibility is going to be near-impossible for a subset of games. I get the impression that some of the more questionable decisions here, for example not binding the gamepad menu to its own button, might be due to this compatibility effort. While I appreciate the thinking if this is the case, I think it’s overall better for the user experience to simply sacrifice one of the buttons’ long presses for this purpose, even if it does mean any game depending on a long press of that button would no longer be compatible by default. I would assume the X or Y buttons would be most suitable for this, though I don’t have data to back this up.

I’m overall pleasantly neutral about this entire thing. This is a far better place to be than where we were before.

152 Likes

This is a great update, but the vignette effect bothers me a lot. I understand its use with people who suffer from motion sickness but is there any way to disable it / modify it (perhaps using VRService?).

46 Likes

I’m probably not the only one asking this, but are you ever going to add finger tracking for Index? That feature is one of the biggest advancements in VR and using those controllers without tracking is like using VR with a keyboard and a mouse to move the camera.

For those who are concerned about offensive gestures, they don’t have to be replicated. Or at least not fully, showing approximate finger positions to avoid someone giving you the middle finger.

27 Likes

That simply is a bad idea, gestures? hell nah people be giving you the middle finger and doing sussy stuff

16 Likes

Are there plans to support full-body VR, such as with a full-body valve index suite? Things like VRChat support full-body, which lets you control every limb on the avatar’s body (fingers, knees, etc), allowing for deep social experiences between users.

25 Likes

This looks interesting. Will there be Augmented Reality aswell?

14 Likes

Wow that is awesome. It is like you are in roblox.

13 Likes

Excellent, I’ll have to tune into the podcast!

19 Likes

So hyped to see what’s coming for Roblox VR. It’s such an untouched market and I see a lot of potential from it. Go native Oculus (i.e. on the Oculus Store) and its perfect.

10 Likes

Who ever said they had to be replicated?

10 Likes

Or it could be another age-gated thing; Over 13s can see gestures, etc.

9 Likes

To be honest, there are more than enough ways to create a suggestive gesture without fingers.

14 Likes

Will support for the quest two ever be possible for Roblox, without the use of an addition cable.
Simply will Roblox ever have quest 2 support?

11 Likes

This is great feedback - the first point about the vignette should be fixed in the release (please confirm). I’m assuming you are testing exclusively on the Index, correct?

A “full motion” mode which would serve as the “hard core” VR mode without vignette or blink, in the settings, is a good idea.

We certainly have a lot more work to do, will go through all of this and continue to provide more updates, including VR dev centric updates beyond getting the default script games working.

Thanks again for taking the time to write this up!

34 Likes

Roblox would like to support every platform and device. For now it requires the link cable

18 Likes

This is a good start. Last I checked VR in roblox in general was clunky, I don’t remember having a ton of success interpreting how to code a game intended for VR in Roblox. I hope to see more improvements to the overall support roblox has for VR in the future.

6 Likes