Disappointed with Oculus compatibility. Is there hope?

Hello folks. I am new to development both for Oculus and UE4, I was hoping to get some opinions from people who have been in the game longer than I have.

Basically my options were to develop for UE4, or Unity, and I chose UE4 because it seemed to have a better visual appeal. However, in the 3 weeks that I’ve been working with it (daily), I have yet to publish anything with an acceptable performance with the engine. I get the widely-reported lock at 37.5 FPS issue.

I have searched the internet for solutions, and everything I have tried has failed to improve performance, even a little. My computer hardware isn’t brand spanking-new or anything, but it is reasonable. I have yet to play a game that had suffering performance, and the UE4 projects I’ve published operate in the neighborhood of ~200fps before turning on Oculus mode, so I find it pretty unreasonable for Oculus mode to operate at roughly 1/5th what my hardware should be capable of. Mostly I am just disheartened by the fact that I am finding message board threads reporting this issue as far back as spring 2014, and every thread I read seems to end with out a definitive solution to the problem.

So for those of you that are still developing for Oculus with UE4, can you offer me some hope? Is it simply a matter of patience and needing these companies to update their software? Or is there some magic solution that seems to be unreported in all of the threads I’ve been reading?

What have you tried so far?

For my current test, I’ve had to disable things like AA and motion blur, and then in game use “hmd sp 100” and things run pretty well
Using 4.6.1

Yeah, what you are seeing happens out of the box. Add “hmd vsync off”, “hmd sp 100” and “fullscreen” console commands in your level blueprint after event begin play.

So far the variables I’ve modified, in different combinations, are:

-UE4 version
-Console command “hmd sp x”
-Tested on a friends computer with a better graphics card, GeForce GTX 970
-Forcing Vsync **on **via amd catalyst software
-Forcing Vsync **off **via amd catalyst software
-Extended Monitor / Direct HMD modes

I have tested these things in a basically empty scene (template files, with most starter content removed), just to eliminate hardware strain as a factor. All the testing I’ve done has given me the same 37.5 FPS lock. If I reduce quality down to [hmd sp 60], I can get a consistent 75 fps, but that is an unbearably poor quality.

I began development in UE4 4.6.1 and Oculus 0.4.4. I have not tried rolling back to past Oculus runtimes or SDK versions because 1) I haven’t seen a consistent recommendation for any particular version, and 2) it just seemed like a lot of work to interchange those versions while not being certain of the results (is there a simple way to manage which oculus version you’re using?).

I am a beginner here… I am familiar with how to access the level blueprint editor, and I am also familiar with entering console commands while running my UE4 projects- but I am not familiar with how to combine the two. Could any one advise me (or point me to a tutorial?) of how to implement those console commands into the level blueprint?

Right click in Blueprint, choose Execute Console Command. Make one for each command, enter the command in each one and connect them together. Connect Event Begin Play to this.

Thank you, I think I understand that correctly.

I will add the following commands to the level blueprint and report back:

  • hmd vsync off
  • hmd sp 100
  • fullscreen

Hi there, personally i don’t recommend using vsync off with the DK2…

Since the Oculus 0.4.3 runtime performance took a big hit in Direct Mode (latency reduction comes with a price), i would suggest trying UE 4.5.1 together with the Oculus 0.4.2 runtime. If you are on Windows 7 try using Direct Mode / Mirroring OFF / Windows AERO OFF, and then play with different “hmd sp values”.

The commands i use after “Event Begin Play” are “hmd mirror off” -> “hmd sp 100” -> “stereo on” -> “fullscreen”.

Also, have you tried the “Couch Knights” demo? This one is optimized especially for VR, it should run well if you don’t go crazy with the screen percentage, and you can learn a few good tricks from it. Try downloading the UE 4.5.1 version of the demo and add the previous commands after Begin Play, see how it goes!

Alright, marginal success to report, and many more questions.

Unfortunately sghrman’s console commands didn’t do the trick for me. I rolled back to runtime 0.4.2 (*question about this below), but running the 4 console commands you listed wasn’t working for me either. I removed the “fullscreen” node (is “node” the correct terminology?), and voila! it worked!

I was running the first person shooter template just fine with only “hmd mirror off” and and “Stereo on”. I removed the “hmd sp 100” and it sill worked, I presume because that 100 setting was saved somewhere since it was last run from the level blueprint?

For further troubleshooting, I tried removing all level blueprint nodes (and the eveng begin play trigger). I was expecting to be able to enter all these console commands manually at this point, but “stereo on” would no longer produce an image on the Oculus like I was used to in runtime 0.4.4.

I also noticed that trying to adjust the “hmd sp” value at all would freeze the image in the oculus, though I could still hear the shooting noise when I clicked, and enter the “quit” command. This happened whether or not I had a level blueprint controlling the “hmd sp” value. Is it not possible to update that value on the fly in 0.4.2?

Questions about console commands
hmd mirror off: does this command just make it so that the game is not rendered on my monitor while it is being displayed on the oculus?

fullscreen: This just seemed to make the window for the game larger- not actually fullscreen (unless it wasn’t redrawing my screen correctly). In either case, what is the point of this if my understanding of “hmd mirror off” is correct and the game isn’t being displayed on the monitor in the first place?

darthviper107 mentioned disabling Anti Aliasing and motion blur- are these console commands as well? If so, what are the exact commands?

Question about rolling back Oculus Runtimes
Is there a simpler way to switch runtime versions than uninstalling the old one, restarting, installing the new one and restarting again?

I’m going to try restoring 0.4.4 and trying a couple of these console commands I didn’t know previously and see if they have an effect. Thanks for all your help, and sorry for asking so many questions.

edit: going back to 0.4.4 made everything worse. hmd mirror off gives me a 0.5 frame rate, fullscreen makes things lock up for about 10 seconds then normalize at the poor framerate it was at before. Looks like its 0.4.2 for me…

First off, can you post your system specs. Also, Oculus is aware of the mirror off issue. I would actually stick with 0.4.4 and compile the latest Oculus github branch with visual studio. Lots of recent fixes there. (or the Epic Master/Promoted branches) There are instructions on Epic’s github if you aren’t too familiar with this process.

One other thing, I checked and this automatically happens now in the 4.7 preview 4 when you do “vr preview” (a new feature) but… in previous versions you had to turn off “realtime” in the main viewport (its hidden in the arrow in top left corner of the viewport) because that would chop framerate in half in VR mode with editor running. Give that a shot and report back.

For that click on the postprocess volume in scene outliner. Scroll down to Misc, click the little arrow to show more (wish AA were above and not hidden like that, automatically showing these settings) you can adjust the AA settings and Screenpercentage there, also motion blur setting above this area. Put a checkbox in them and set the settings even if they are unchecked (that I wish I knew more about, seems counter-intuitive and it applies settings even when unchecked sometimes)

Ok, regarding your questions:

  • Correct, “hmd mirror off” means that the game is not rendered on your monitor while it is being displayed on the oculus.

  • Yep you don’t really need the command “fullscreen”, i simply use it to make sure the game runs at the native DK2 resolution (1920x1080) independently of the values set on “GameUserSettings.ini”. Strange that it doesn’t work for you… If you don’t use it UE might render at a lower resolution and upscale to 1080p which results in lower quality.

  • I believe the default screen percentage (hmd sp) is 135. You don’t really need to use “hmd sp 100”, that’s simply a safe low value that performs well but doen’t look very good. You should try to get a value as high as possible while keeping locked at 75 fps to get the best image quality.

  • No simpler way to switch between runtimes… it’s a pain. Try to choose one and stick with it until you want to try a new one!

  • Turning Windows Aero OFF only works well with 0.4.2, if you decide to go with 0.4.4 then keep Aero ON (that’s why you were getting 0.5 fps).

Oh and here are a few other tricks that i forgot to mention in my previous post, in case you didn’t know them:

  • Editor settings -> Miscellaneous -> Use Less CPU when in Background

  • Project settings -> “General Settings” -> “Framerate” -> Disable "Smooth Frame Rate"

  • Disable Realtime on viewport (like haggler mentioned)

  • Play -> Standalone Game -> Minimize Editor

  • Use “stat fps” command to check your framerate in realtime (combine with vsync off to check you real performance)

  • Use “hmd stats” command to show lots of useful info, including the current screen percentage value

EDIT:

Also make sure to pair the right version of the Oculus runtime with the right version of UE.
Oculus 0.4.2 <–> UE 4.5.1
Oculus 0.4.4 <–> UE 4.6.1

My Specs:
Windows 7 Home Premium 64-bit
AMD RAdeon HD 6970
Intel Core i7-3820 @3.60GHz (8 CPUs)
16384MB RAM
DirextX 11
BIOS Date: 12/22/11 Ver 09.06
(Is there anything else I should mention?)

I have never used github before, only heard of it in passing. I watched the UE video introduction to github video ( /usjlNHPn-jo ), and I don’t know how comfortable I am going down this road, particularly when I have no guarantee that it will sovle my problem. Is the github build essentially an early access version of what the next official UE4 version will contain? If that is the case, I think I would prefer to wait for the official release than to mess with this coding stuff that I don’t understand. It also seems like an unreasonable amount of hoops to expect a customer to jump through to get a product in working order.

I am not sure I understand this clearly enough to test, what do you mean by “vr preview”? And this only exists in 4.7? The 4.7 preview has given me the most problems by far, so I probably won’t be working in that for the time being.

Didn’t have time to work on this yesterday, but I’m going to try some of these new settings you guys have told me about in 0.4.4 right now.

Alright, well I ran some tests in 0.4.4, no improvements to report.

I turned Aero back on, no impact. I’m at 37.5 FPS with it on or off.

In the First Person Shooter template, I modified the GlobalPostProcess settings to disable AA, and set the motion blur to 0. I also disabled “Smooth Frame Rate” in the project settings. Testing these settings, there were no performance increases, and significant visual decreases. Staring at a blank wall at close range I can reach 75 FPS, irregardless of the AA or motion blur settings.

I also noticed that setting the Screen Percentage to 100 in the GlobalPostProcess settings did not seem to do anything, it still loaded up at 130 according to “hmd stats”.

In the project settings, I also noticed the field “Min Desired Frame Rate: 35”. Naturally, I tried changing that number to 75, but there was no change in performance. What should I have this set to, does it matter?

“Use less cpu when in background” was apparently checked the entire time. Though I should note, when I have been troubleshooting this issue, I am packaging the project via the file menu, and then closing the editor entirely just to eliminate the editor as a factor. Once I am able to get a packaged project running smoothly on its own, then I’ll worry about having the editor running simultaneously. (For the sake of the last tips offered to me, I also tested it via the editor “play > standalone game” option, I just don’t do it this way normally).

I didn’t seem to be able to turn off vsync for testing. Is “vsync off” an actual console command? When I entered that, I didn’t see a change, and “hmd stats” still reported vsync being on.

So unless anyone has some more ideas, it looks like my best bet is rolling back to 0.4.2. I’m a little frustrated that I’ve spent the last week trying to get UE4 to work with oculus, and made no actual progress on my own project…

As they say on the OVR forums, welcome to the cutting edge. You chose to be here.

Thank you for your smart *** reply. Just when I thought I had found a friendly, helpful community…

Have you tried using the template that is on the forums? Use it, and rip out everything you don’t need. I’ve been using this, and my projects are maxing out at 75fps. https://forums.unrealengine.com/show…-Game-Template

I recommend this too, and like i mentioned before you should check out the “Couch Knights” demo as well.

The command to disable vsync on the HMD is “hmd vsync off”.
https://docs.unrealengine.com/latest/INT/Platforms/VR/CheatSheet/index.html

Thanks guys, I’ll try these 2 demos tonight and report back. Haggler2 has been helping me via private messages, I just tried out the Unreal Paris scene and experienced the same problems in it. I have been switching back and forth between Runtime 0.4.2 and 0.4.4 a lot lately. For any of these demos is it important that I use one over the other?

I’ve been using GPU-Z to monitor the demands on my graphics card while I run these demos, and so far what I have observed is nothing above a 64% load on the GPU. I need to start paying attention to the demand on my cpu as well from now on, but I suspect that it similarly is not being fully utilized. So while I am starting to receive feedback from people along the lines of “Maybe your hardware just needs to be updated…”, I tend to think that it is more the fault of some software component not correctly utilizing the hardware to is fullest. That would also explain why I don’t have issues with video games, 3d rendering, video playback, etc, while Unreal + Oculus is the sole perpetrator of my problems.

Yep i think what you are seeing with the low GPU usage is a problem introduced with the 0.4.3 runtime and what Oculus calls “zero post-present latency”, as explained here:
https://forums.oculus.com/viewtopic.php?f=60&t=17715&p=228146&p228146#p228146

That’s the main reason i suggested the 0.4.2 runtime if you are struggling to get constant 75 fps.

I’m not sure if the latest version of the VR Template will work with 0.4.2 though, you might need to download an older version, or try with 0.4.4.

I apologize for my hostility. I got unreasonably defensive about the word “disappointed”.

I had success using hmd sp 40 with the latest SDK/Unreal, though the quality suffered considerably.