09-27-2023 06:14 AM
Hello Meta Community,
I hope everyone is doing well in the world of virtual reality. I'm an enthusiastic PCVR developer, and I've been fortunate enough to work with a consulting company that has helped me immensely in the past. However, I've reached a point in my journey where I want to dive deeper into PCVR development and handle challenges independently. That's why I'm here today, seeking your invaluable expertise.
I'm currently facing a rather complex PCVR development challenge that has me scratching my head.
I've developed several VR applications in the past with the help of a consulting company. This time, I'm working on a PCVR project that demands a high level of technical expertise, and I'm determined to tackle it on my own.
The Dilemma:
I'm excited about this journey toward self-sufficiency in PCVR development, but I know there's a lot to learn. Your guidance and shared experiences will be incredibly valuable as I navigate this challenge.
While I've had a wonderful experience working with a consulting company in the past, I believe it's time to expand my knowledge and capabilities. I appreciate any help and insights you can provide to help me overcome these PCVR development hurdles.
Thank you all in advance for your time and expertise!
Best regards,
Rehes
10-01-2023 04:47 AM - edited 10-01-2023 04:51 AM
Optimisation is quite an art and requires a good understanding of the render pipeline. You don't mention which engine you're developing in which makes it tricky to give specific advice. In broad terms, you should be looking at
For compatibility across different PCVR hardware... You have no control over your end user's PCs so decide on your minimum tagret platform and test on that. For headsets, this also requires a lot of testing (different Inputs can be especially difficult) but use OpenXR as your backend to make things more widely compatible. And don't use features from platform specific SDKs.
In terms of community resources, I'd highly recommend the Oculus developer docs. Start here for PCVR: https://developer.oculus.com/documentation/unity/unity-perf/ but do also have a look at the standalone (Quest) recommendations.
The above articles mention some profiling tools. Generally your engine's built-in tools should be adequate if you don't have that much experience. If you want to go deeper then RenderDoc is also incredibly useful for frame debugging. I can't overstate this enough - learn to profile! Find where your bottle neck lies and optimise for that. Are you CPU or GPU bound? Optimising for one can be detrimental to the other. This is for Unity mobile platforms but is still incredibly valuable advice: https://blog.unity.com/technology/optimize-your-mobile-game-performance-tips-on-profiling-memory-and...
For application debugging, that's just game dev stuff. In VR it's useful to have an in-app console or some for of on-screen logging so you can see what's going on without having to take off the headset to look at the engine's output console. The Meta XR Simulator looks useful for this too, but I've never used it (only just heard about it at the recent Connect event).
Re. input options to make the experience more immersive. Floating UI panels are generally considered to be immersion breaking. (think laser pointer being used to highlight and click on buttons) You might instead consider diegetic UI, where buttons and interface elements exist within the world and are part of that world. (this is a brief intro to this concept https://uxdesign.cc/vr-diegetic-interfaces-dont-break-the-experience-554f210b6e46 )
Good luck on your journey. Hopefully you can now appreciate what you were paying that consultancy firm for 🙂
10-05-2023 07:04 AM
Thank you so much for the comprehensive and insightful response! Your guidance is immensely valuable, and I appreciate the time you took to share your expertise.
I'm developing in Unity, and your optimization tips provide a fantastic roadmap for addressing the performance challenges I'm facing. Reducing shader complexity, texture atlasization, and careful consideration of lighting strategies are excellent points to focus on. I'll also delve into the Oculus developer docs and the provided links to further fine-tune my understanding of PCVR development.
Your emphasis on profiling is well-taken. Identifying and optimizing bottlenecks is crucial, and I'll explore the suggested tools, including RenderDoc, for a deeper analysis. The link to mobile game performance optimization tips is a great resource, and I'll adapt the principles to the PCVR environment.
I'm intrigued by the idea of diegetic UI for a more immersive experience. Your provided link on the concept is a valuable starting point, and I'll explore ways to integrate it into my application.
As for debugging, an in-app console or on-screen logging sounds like a practical solution, and I'll look into the Meta XR Simulator as well.
Your wishes and encouragement mean a lot as I embark on this journey of self-sufficiency. Your detailed response has indeed given me a clearer understanding of the intricacies involved, and I'm grateful for your generosity in sharing your knowledge.
And yes, your closing remark made me smile – the consultancy firm certainly earned their keep, but I'm eager to embrace the challenges and learning opportunities ahead.
Thank you again, and I'll keep the community posted on my progress.
Best regards,
Rehes