SteamVR / OpenVR

Is support for the new Valve system and controller planned?

I have the same question on my mind. I’m becoming hopeless with Oculus ever since Carmack’s disappointing speech on GDC.

Yup! We already have support in a branch, and some of the demos in the Valve demo loop at GDC were using UE4. As soon as the SDK is public, we can roll that out to everyone.

That’s amazing to hear! So liberating. Thanks.

awesome, will there be an sdk to update UDK games too?

I wish there were going to be more than 1200 dev kits for the Vive - I’ve got a VR game that uses Hydra and supports the Rift right now that would be perfect for the Lighthouse controllers.

I don’t believe there is any real source for this information, I think this is hearsay based on some articles reporting that 1,200 dev kits will be released to the press and some universities.

I just wanted to note that I’m having trouble packaging up SteamVR support. It works with my DK2 in the editor for testing purposes but when I package it up it crashes on launch with or without a headset plugged in. The Oculus plugin works fine packaged but disabling that and enabling SteamVR breaks. I’ve filed a bug report on answerhub but posting here to bring attention to it: https://answers.unrealengine.com/questions/230183/48p2-steamvr-plugin-crashes-packaged-build-on-laun.html

It is really cool though seeing your program fade into the empty white room that is the SteamVR compositor default view while using the editor, would be awesome to be able to package it up soon to share with others!

If you’re running with my 4.7.6 github branch, you need to manually copy Engine\Binaries\ThirdParty\OpenVR over into your packaged build. Keep the full relative path.

This shouldn’t be required with 4.8. I’ll update my GitHub branch to note this.

Thanks! Unfortunately the build I’m using is a few checkins away from 4.8p3 which got released today and I don’t see anything in there that would reflect that. I’ll check to see if everything got copied over when I get home, but as of now it is a 4.8 packaged build that is failing to run, builds fine though and runs in the editor great :slight_smile:

I just confirmed that the directory is copied in 4.8 and while it only had the win64 folder with dll copied, adding the win32 version didn’t change anything, same crash on startup of packaged build.

Ok, we just hit this as well internally. I’m still trying to find the correct solution, but for now, take:

Engine\Source\ThirdParty\Steamworks\Steamv132\sdk\redistributable_bin\win64\steam_api64.dll

and copy it to your packaged Engine\Binaries\Win64

We’re working on a real fix.

Also scratch that, this temporary solution has other issues.

Glad it isn’t just me :slight_smile: Also, steam_api64.dll is currently copied to: Engine\Binaries\ThirdParty\Steamworks\Steamv132\Win64 in my packaged build. I’ll wait for the fix, but it is so close considering how well it runs from the editor. Performance should hopefully be even better packaged and no editor running much like binaries using Oculus plugin is when I build that way.

Also, is there a priority for plugins? Should I enable one or the other or will the Oculus plugin take precedence for their headsets and I can package with both enabled? Also, is there a way to force SteamVR mode if a packaged build has both for testing purposes?

Hopefully this is the real fix for now:

https://github.com/EpicGames/UnrealEngine/commit/96fbb8d0f247ef390c46e64c1d1e5d6b34857ca2

The issue is that we are still on Steamworks 1.32 which still has the old SteamVR API exposed. So for any potentially shared export functions, I use GetProcAddress to explicitly grab the function pointer from the correct DLL.

And yes, there is a way to set HMD plugin precedence, at least in 4.8. Please see BaseEngine.ini in 4.8p3+:


[HMDPluginPriority]
; Since SteamVR also works with the Oculus Rift, give priority to the native Oculus plugin before trying SteamVR
OculusRift=20
SteamVR=10

Note: you should be able to ignore the steamvr.h change in that commit. It’s a much less scary commit without that file, which we never include :slight_smile:

Thanks! This is perfect. I will test the fix tonight but your checkin came an hour after I was done for the day. And yeah, my eyes just glazed over when I saw the steamvr.h file, the rest makes sense but I still wouldn’t have guessed :slight_smile:

Edit: It did work eventually after multiple rebuilds. Not sure why sometimes it fails. I’ve been having packaging issues with 4.8 including Tick events not firing, etc… maybe this is one of those random need to keep rebuilding till it works issues?

It didn’t work. I ended up getting the following message: Plugin ‘SteamVR’ failed to load because module ‘SteamVR’ could not be found. Please ensure the plugin is properly installed, otherwise consider disabling the plugin for this project.

steamvr-module-not-found.png

Make sure the plugin is enabled. Also make sure that the .uplugin still has ‘enabledbydefault’ set to true.

Then rerun ‘generateprojectfiles’ and build (no need for a full rebuild) again. When in doubt, touch steamvrhmd.cpp just to see if it actually builds and links.

Edited above. It did eventually work, on my last rebuild as I was posting this! Thanks again for all your help, looks good now!