How to build a VR game that works on Vive?

Created a VR game in 5.3.2. The packaged game works fine on quest (2/3) and valve index. I’m only using the OpenXR plugin. However, users are saying the game starts for Vive but VRPawn is stuck on the floor and nothing works.

I took UE 5.3.2 and created a build from VRTemplate. The only thing I changed was in Project Settings>Target Hardware>Desktop instead of the default Mobile. The user has the same problem on this build as the packaged game.

So, does Vive require mobile instead of Desktop? Vive documentation (ugh) seems to imply it’s all android and also wants me to download a Vive OpenXR plugin.

Unfortunately, I don’t have a Vive to test directly. Asking for help from anyone who has packaged a Vive game (I’m selling on Steam) and it still work for Quest 2/3 and Valve Index.

I originally targeted Desktop because you have more options on various pipelines. Is this a mistake? Should I have stayed with Mobile? Or am I barking up the wrong tree. Vive also has an Vive OpenXR plugin for 5.3 and 5.4. Perhaps that’s what is missing?

Any suggestions/comments most welcomed.

Hello,

Creating a VR game that works seamlessly across different platforms can be a bit tricky, especially when dealing with various VR headsets. Let’s explore some steps and considerations to help you address the issue with your Vive build:

OpenXR Plugin Configuration:
First, ensure that you have the OpenXR plugin enabled in your Unreal Engine project settings. You can find this under Edit > Project Settings > XR Plug-in Management.
Click the exclamation mark next to “OpenXR” and choose “Fix All” to ensure proper configuration1.
Interaction Profiles:
Interaction profiles define how your game interacts with different VR controllers. For Vive, you’ll need to add the appropriate interaction profiles for Vive controllers.
Make sure your VRPawn is set up to handle Vive controllers correctly. You might need to adjust the input mappings and interactions.
Test your game with Vive controllers (if possible) or rely on feedback from Vive users to ensure proper functionality.
Target Hardware:
Regarding the “Target Hardware” setting, it’s essential to choose the right platform. In your case, targeting “Desktop” is correct because Vive is a PC-based VR headset.
The “Mobile” option is for mobile VR platforms like Oculus Quest, not for Vive.
Stick with “Desktop” and focus on Vive-specific adjustments.
Vive OpenXR Plugin:
Vive provides its own OpenXR plugin. Make sure you have the Vive OpenXR plugin installed and configured in your project.
You mentioned that Vive has an OpenXR plugin for UE 5.3 and 5.4. Ensure you’re using the correct version of the plugin for your engine version.
If you haven’t already, download and integrate the Vive OpenXR plugin into your project.
Testing and Feedback:
While you don’t have direct access to a Vive headset, consider reaching out to the VR community or fellow developers who have experience with Vive.
Forums, social media, and VR-focused communities can be helpful for gathering insights and troubleshooting.
SteamVR also provides tools for testing and simulating different VR headsets, including Vive. You might explore those options.
Debugging:
If the VRPawn is stuck on the floor, check your VRPawn’s initial position and collision settings.
Ensure that the VRPawn’s capsule or collision component is correctly placed at the player’s feet level.
Debugging logs and console output can provide valuable information about what’s going wrong during startup.

I hope the information may help you.

DennisLeonn-

Thank you for your response. You’ve covered most of what I have tried. You did confirm I need to include Vive OpenXR plugin (didn’t even knew it existed until a user brought up the problem) and keep Targeted Hardware as Desktop.

Vive’s documentation tells you to turn on all of the options for its plugin. Most of which I do not need (i.e. hand interaction, facial tracking, interactive visual computing, passthrough): Unreal: VIVE OpenXR Plugin installation | VIVE OpenXR - Developer Resources

Care to comment on what is actually needed in the Plugin for the VRTemplate to work (the template does include input for Vive controllers along with Index and Quest)? I went with the default but included Enable Display Refresh Rate and Simultaneous Interaction. My game uses the same controls, but for different actions, so I’m going to assume that works (until told otherwise).

I am relying on a user to test. Nice I have someone volunteering, but it’s slow going. Hopefully the problem will be fixed w/ the plugin.

Thanks again

Hello,

I have one more solution for you. Please try this:

Vive OpenXR Plugin:
The Vive OpenXR Plugin is designed to enable XR (extended reality) portability across various hardware VR devices. It allows developers to prioritize content creation over porting, making it easier to create immersive HealthInsuranceMarket experiences that run on different platforms.
You can download the Vive OpenXR Plugin from here.
The plugin supports both Android and PC platforms.
VRTemplate:
The VRTemplate in Unreal Engine is a great starting point for building VR projects. It uses the OpenXR framework, which is a multi-company standard for VR and AR development.
With the OpenXR plugin integrated into Unreal Engine, the VRTemplate logic works seamlessly across multiple platforms and devices without requiring platform-specific checks or calls.
The template includes support for various controllers, including Vive controllers, Index controllers, and Quest controllers.
Configuring the Vive OpenXR Plugin:
When setting up your project, ensure that you have the Vive OpenXR Plugin installed and configured correctly.
In the Project Settings, make sure the target platform is set to either Android or PC.
Enable the VIVE XR Support feature group in the XR Plug-in Management settings.
You may encounter some validation issues when enabling the feature group; make sure to fix them as needed.
Plugin Options:
The Vive OpenXR Plugin provides several options, but you don’t necessarily need to enable all of them. Let’s discuss the relevant ones:
Enable Display Refresh Rate: This option allows you to match the display refresh rate to the VR headset’s capabilities. It’s generally a good idea to enable this.
Simultaneous Interaction: If your game requires simultaneous interactions (e.g., using both hands independently), enable this option.
Other options like hand interaction, facial tracking, and passthrough are specific to certain use cases. If your game doesn’t need them, you can leave them disabled.
Testing and User Feedback:
It’s great that you have a user volunteering to test your project! Keep an eye on their feedback and any issues they encounter.
If everything is set up correctly, your VRTemplate should work seamlessly with Vive controllers, Index controllers, and Quest controllers.

I hope the solution may help you.

1 Like

DennisLeonn-

You have gone beyond and above. Thank you.

Turns out none of the tests I set the user worked. Out of desperation, I asked them to check their OpenXR runtime and to switch it to steamVR OpenXR runtime. That cleared up the problem. Apparently, one does not need Vive OpenXR plugin. That is, as you said, the VRTemplate w/ just OpenXR plugin active is good for Quest (2/3), Valve Index and Vive. The latter two require steamVR OpenXR runtime. The former seems to be happy with either steamVR OpenXR runtime or Meta/Oculus OpenXR runtime.

This is what I expected.

Learnt a lot, appreciate that and your help.

Hello Parker - Judging by the weird link to Health Insurance website in 'DennisLeon’s second post, I’m come to the conclusion that an AI powered spambot just answered a question correctly. (Not unheard of or remotely unthinkable of course)

I just thought this was hilarious.

Be sure to play with ChatGPT (free) for these sorts of questions if you haven’t yet!!

:robot:

Could be. My question was answered, though the root problem was a user setup on Vive and Steam.

Glad you found it hilarious.

Hello, I’m using UE 5.3.2 as well, and I’m using the UE VR template to figure out how I can build for Vive Focus 3. So far I’ve had no luck. Using only OpenXR, when I build for Vive it’s a 2D project. So I tried using Wave VR plugin, but still ran into issues there. Could you please provide a bit more context on how you went through to package your game for Vive?

Thank you in advance!