Developer Resource: Difference between revisions
Appearance
Xinreality (talk | contribs) No edit summary |
Xinreality (talk | contribs) m Text replacement - "e.g.," to "for example" |
||
| Line 25: | Line 25: | ||
For beginners, the recommended path is to: | For beginners, the recommended path is to: | ||
# Choose a game engine ([[Unity]], [[Unreal Engine]], or [[Godot]]) | # Choose a game engine ([[Unity]], [[Unreal Engine]], or [[Godot]]) | ||
# Select target [[VR headset|VR headsets]] ( | # Select target [[VR headset|VR headsets]] (for example [[Meta Quest 3]], [[Meta Quest 3S]], [[Apple Vision Pro]], [[PSVR2]]) | ||
# Set up the appropriate [[SDK]] and development environment | # Set up the appropriate [[SDK]] and development environment | ||
# Study platform-specific guidelines and best practices | # Study platform-specific guidelines and best practices | ||
| Line 35: | Line 35: | ||
'''2. Install SDKs:''' For Meta devices, use the [[Meta XR SDK]]. For Apple, the [[visionOS SDK]]. Adopt [[OpenXR]] for cross-platform compatibility. | '''2. Install SDKs:''' For Meta devices, use the [[Meta XR SDK]]. For Apple, the [[visionOS SDK]]. Adopt [[OpenXR]] for cross-platform compatibility. | ||
'''3. Set Up Hardware:''' Ensure your development PC meets requirements ( | '''3. Set Up Hardware:''' Ensure your development PC meets requirements (for example high-end GPU for tethered VR). For standalone devices, develop directly on the headset or use simulators like [[Meta XR Simulator]]. | ||
'''4. Learn Basics:''' Study motion tracking, anchors, environmental understanding, and depth APIs. Resources include official documentation from Meta, Apple, and Khronos Group. | '''4. Learn Basics:''' Study motion tracking, anchors, environmental understanding, and depth APIs. Resources include official documentation from Meta, Apple, and Khronos Group. | ||
| Line 288: | Line 288: | ||
! Community Size || Larger, more beginner-friendly resources<ref name="AnimostUnityVsUnreal"></ref> || Smaller but strong, particularly for high-end development<ref name="AnimostUnityVsUnreal"></ref> | ! Community Size || Larger, more beginner-friendly resources<ref name="AnimostUnityVsUnreal"></ref> || Smaller but strong, particularly for high-end development<ref name="AnimostUnityVsUnreal"></ref> | ||
|- | |- | ||
! Primary Target Platform (XR) || Strongest in standalone and mobile VR ( | ! Primary Target Platform (XR) || Strongest in standalone and mobile VR (for example Meta Quest)<ref name="RedditUnityVsUnreal"></ref> || Strongest in PCVR and high-fidelity simulations<ref name="RedditUnityVsUnreal"></ref> | ||
|- | |- | ||
! Ideal Use Cases || Indie games, mobile/standalone VR/AR, rapid prototyping, projects prioritizing speed-to-market || AAA games, architectural visualization, cinematic experiences, enterprise simulations requiring photorealism<ref name="WebarooUnityVsUnreal"></ref> | ! Ideal Use Cases || Indie games, mobile/standalone VR/AR, rapid prototyping, projects prioritizing speed-to-market || AAA games, architectural visualization, cinematic experiences, enterprise simulations requiring photorealism<ref name="WebarooUnityVsUnreal"></ref> | ||
| Line 299: | Line 299: | ||
====Prerequisites==== | ====Prerequisites==== | ||
Before creating a project, developers must use the [[Unity Hub]] to install a supported version of the Unity Editor ( | Before creating a project, developers must use the [[Unity Hub]] to install a supported version of the Unity Editor (for example 2022.3 LTS or newer). During installation, it is crucial to include the [[Android Build Support]] module, as this is a requirement for developing applications for Android-based standalone headsets like the Meta Quest.<ref name="MetaUnitySetup">https://developers.meta.com/horizon/documentation/unity/unity-project-setup/ - Set Up Your Unity Project for Meta Quest Development</ref> | ||
====Creating a Project and Configuring the Build Platform==== | ====Creating a Project and Configuring the Build Platform==== | ||
| Line 379: | Line 379: | ||
The template includes two primary, comfort-oriented locomotion methods:<ref name="UnrealVRTemplateDocs"></ref> | The template includes two primary, comfort-oriented locomotion methods:<ref name="UnrealVRTemplateDocs"></ref> | ||
* '''Teleportation:''' The user can aim with one controller, which displays an arc and a target location. Releasing the thumbstick instantly moves the pawn to that location. This system relies on a [[Nav Mesh Bounds Volume]] placed in the level. | * '''Teleportation:''' The user can aim with one controller, which displays an arc and a target location. Releasing the thumbstick instantly moves the pawn to that location. This system relies on a [[Nav Mesh Bounds Volume]] placed in the level. | ||
* '''Snap Turn:''' Using the other controller's thumbstick, the user can rotate their view in discrete increments ( | * '''Snap Turn:''' Using the other controller's thumbstick, the user can rotate their view in discrete increments (for example 45 degrees). This avoids the smooth rotation that can cause motion sickness for some users. | ||
==Runtimes== | ==Runtimes== | ||
| Line 461: | Line 461: | ||
=====Feedback===== | =====Feedback===== | ||
Clear and immediate feedback is essential. Interactive elements should have distinct hover states ( | Clear and immediate feedback is essential. Interactive elements should have distinct hover states (for example highlighting or scaling up), and actions like button presses should be accompanied by both visual and auditory cues.<ref name="MetaMRDesignGuidelines"></ref> | ||
===Technical Performance and Optimization=== | ===Technical Performance and Optimization=== | ||
| Line 480: | Line 480: | ||
====Core Optimization Strategies==== | ====Core Optimization Strategies==== | ||
* '''Reduce Draw Calls:''' Combine multiple textures into a single '''texture atlas''' and use '''static batching''' to draw multiple similar objects in a single call. For standalone Quest, developers should aim for 50-200 draw calls per frame.<ref name="MetaUnityPerfDocs"></ref><ref name="MetaDevBlogDrawCalls">https://developers.meta.com/horizon/blog/down-the-rabbit-hole-w-oculus-quest-developer-best-practices-the-store/ - Developer Best Practices</ref> | * '''Reduce Draw Calls:''' Combine multiple textures into a single '''texture atlas''' and use '''static batching''' to draw multiple similar objects in a single call. For standalone Quest, developers should aim for 50-200 draw calls per frame.<ref name="MetaUnityPerfDocs"></ref><ref name="MetaDevBlogDrawCalls">https://developers.meta.com/horizon/blog/down-the-rabbit-hole-w-oculus-quest-developer-best-practices-the-store/ - Developer Best Practices</ref> | ||
* '''Optimize Geometry:''' Keep polygon counts within the budget for the target platform ( | * '''Optimize Geometry:''' Keep polygon counts within the budget for the target platform (for example 750k-1M triangles for Quest 2). Use [[Level of Detail]] (LOD) systems.<ref name="MetaUnityPerfDocs"></ref> | ||
* '''Simplify Lighting and Shaders:''' Use '''baked lighting''' whenever possible. Avoid complex, multi-pass shaders and full-screen post-processing effects on mobile hardware.<ref name="UnityBestPractices"></ref> | * '''Simplify Lighting and Shaders:''' Use '''baked lighting''' whenever possible. Avoid complex, multi-pass shaders and full-screen post-processing effects on mobile hardware.<ref name="UnityBestPractices"></ref> | ||
* '''Use Occlusion Culling:''' This prevents the engine from rendering objects that are completely hidden from the camera's view.<ref name="MediumVRPerfOpt">https://medium.com/@lemapp09/beginning-game-development-vr-performance-optimization-78553530ca83 - VR Performance Optimization</ref> | * '''Use Occlusion Culling:''' This prevents the engine from rendering objects that are completely hidden from the camera's view.<ref name="MediumVRPerfOpt">https://medium.com/@lemapp09/beginning-game-development-vr-performance-optimization-78553530ca83 - VR Performance Optimization</ref> | ||
| Line 570: | Line 570: | ||
! SideQuest || Meta Quest series || Low (Community-driven)<ref name="SideQuestHome"></ref> || VR enthusiasts, modders, indie game followers || Primary platform for sideloading, experimental content, and early access<ref name="SideQuestSetup"></ref> | ! SideQuest || Meta Quest series || Low (Community-driven)<ref name="SideQuestHome"></ref> || VR enthusiasts, modders, indie game followers || Primary platform for sideloading, experimental content, and early access<ref name="SideQuestSetup"></ref> | ||
|- | |- | ||
! Pico Store || Pico headsets ( | ! Pico Store || Pico headsets (for example Pico 4) || High (Similar to Quest Store)<ref name="PicoDevFAQ">https://sdk.picovr.com/docs/FAQ/chapter_twentyeight.html - Developer Platform FAQ</ref> || Consumers in markets where Pico is prevalent || Growing ecosystem with developer incentive programs<ref name="PicoDevProgram"></ref> | ||
|} | |} | ||