Current issues with developing for VR in Roblox

I spent a couple hours today trying to implement VR into my game using my HTC Vive.
The default Roblox control/camera schemes might be great for traditional Roblox games that aren’t developed for VR. If I was making such a game, I would be using them. But in this case, I need custom VR behavior, and there are some issues with trying to do that:

  • No easy way to disable controller / laser models. Just wasn’t documented anywhere. See reply below.
  • There is no API for getting the floor level / head height of the user - we really need an API for this.
  • Turning HeadLocked off completely messes up the tracking for the built in controller models, so even if I want to use them I cant because I’m using a custom camera solution.
  • I can’t bring up the Roblox menu by pressing the menu button in studio. If it is actually working, I’m not seeing it. Also, while using the menu in online mode, many times the buttons simply do not work. Not being able to use the menu makes testing in VR really difficult.
  • If you open a new studio/client window when developing with a VR headset connected, your current studio session will close, be completely discarded, and just not save at all. I have already lost many hours of work from just accidentally hitting F6 instead of F5 when I want to test my game.
  • I can’t disable the default gaze/whatever it is based on GUI selection. I’m working with several surface GUIs positioned in 3D space all around the character and the default selection method isn’t working very well for me.

I will be adding to this list if I find something new.

Roblox seems to want VR to be a thing on the platform, but for that to happen, developers need to be able to create customized experiences for VR and explore different control schemes. This is, in my opinion, currently impossible.


I could have sworn I saw a SetCore method for this somewhere.

cc @unix_system (the only VR expert I know oof)

Yeah - a lot of this has to be implemented by the developer.
It is however possible to remove the hand controllers via a SetCore Binding iirc. Will have to look into that a bit more to provide you with exacts.

I also recall that you can override the main VR CoreScript in StarterPlayerScripts?

After digging through some CoreScripts, I found the following disables the controller models and laser pointer:

StarterGui:SetCore("VRLaserPointerMode", 0)
StarterGui:SetCore("VREnableControllerModels", false)

This really needs to be documented somewhere, though.