Some thoughts about developing for Oculus Quest


Here we go the early access to our Fear Within game is here and it is time to share some thought about developing for Oculus Quest.

First of all, Quest is amazing wireless device which gives freedom of movement and there are no wires to spoil this experience. But as usual freedom comes at a price. And the rice here is quite slow GPU and as a result graphics from the beginning of 2000.

This was a major problem for me personally. In the past few years, I was living in the world of architectural visualizations where photorealistic graphic is obligatory. So, when tested Oculus Quest It was little bit shocking for me to see what I saw. And as a developer I realized that if I have any intentions to develop for Quest, I should forget about 8k textures 😊 Dynamic lights and 4k lightmaps.

But still with all these hardware limitations Quest is the best device for gaming and VR experience. Freedom and physical interactions are ruling the experience.

 

Developing for Oculus Quest is a constant race for performance. Ok you have nice looking round pipe with valve totaling 10 000 triangles it looks pretty and you should forget about this.

Optimize game assets before importing them to the engine. The budget is 50 000 triangles per frame.

Think low poly. Still it can look good even if it is 1000 triangles only

Draw Calls

Plan your frame. Think what player will see inside the game and what objects are always shown together. In our game we have many books on the shelves. If you develop with Unreal Engine – than merging actors will be a good idea. That will reduce draw calls and free some GPU power.

 

Coding

Does not matter C++ or blueprints (for Unreal) you do not need tick events. Create timers and spawn looped timers by events. This helped a lot to improve performance. Delete actors from the level if you do not need them make your code clean and optimized. Remember tick events are evil.

 

Texturing

Our business projects before Oculus Quest where architectural visualizations. It was hard to get rid of 4k thinking style.  But Oculus Quest lens resolution is still 1440 X 1600.  And the best way to drop FPS is to put 4k textures on everything inside your level. So, forget it use 1k or 2k max. And use them carefully.

 

Make good master materials with simple shaders.  Vulkan renderer looks still good with simple materials.

 

Make texture atlases

Do not make textures for every single object it your game. Join them to one .obj and texture together.  This will save memory and draw calls.

 

If your material has Base Color, Normal, Roughness, Metallic and Ambient Occlusion you should compress Roughness, Metallic and Ambient Occlusion to one texture. Turn off sRGB on it.

 

Use your base color at 1k resolution. Try to cut resolution of normal and R.MA.O. map. It does not really differ if your RMAJ map is 4k of 512 pixels with Vulkan.

 

Believe me low res lightmaps can look good in Unreal and Oculus Quest.

To be continued…

 

So, it is only the beginning and I will share my experience further in the next posts. Please fill free to comment.  

Get Fear Within

Buy Now$2.00 USD or more

Comments

Log in with itch.io to leave a comment.

any thoughts on developing for Oculus Quest 2?

It is faster, but fully compatible with Quest 1. But we can achieve better picture quality there thanks to more powerful hardware. So basically thoughts are the same.