Conflicting Information in the Horizon OS SBC (Shader Binary Cache) Documentation?
In the documentation regarding building a shader binary cache per-platform (link) the documentation states: Using this feature, once one user starts the app and manually builds the SBC, all other users with the same device and software (Horizon OS, graphics driver, and app) will be able to avoid the shader generation process by downloading a copy of a pre-computed SBC. However, later on the same page, it states there is an automation in place to launch the apps and perform scripted prewarming logic if requested. The system automatically identifies and processes Oculus OS builds and app versions that require shader cache assets. It generates and uploads these assets to the store backend and automatically installs them during an app install or update. Does this feature support both of those setups? If I am not scripting any custom warmup logic, will shader binary caches still be shared between users with identical setups? IE, if I simply play the release candidate on the target OS version/hardware, will my SBC be automatically uploaded, or are SBCs only distributed when a scripted warmup sequence is present? Few details are provided regarding SBCs from other users being uploaded, so I'm curious if this is an inaccuracy or not. Thanks, excited to see features like this in Horizon OS. Very important for first time user experience.5Views0likes0CommentsGame-Design for post-stroke patients, need help hacking the interactions SDK
Hi everyone, I'm currently working on a Unity game designed for post stroke patients with hemiplegia undergoing motor rehabilitation. I want to use Hand Tracking to make the players grab different objects. Problem is : the impaired hand often has very reduced finger mobility, so grabbing motion is out of the question. So I would like to know how to : 1- Trigger fake hand motions to simulate grabbing on one hand with a simple event (also ignore actual hand motion except for position) 2- Even better : simulating a grab from a different object that i could control independently for animations etc... (Also i need this because eventually the game will have to work with a motorized rehabilitation glove that will be tracked via Passthrough because default hand tracking doesn't track him at all) I'm currently using the basic interaction building block and sample scenes prefabs for the objects (Chess piece prefab : Touch Hand Interactable + Grabbable components) If you have any leads on how to approach this problem, I'll be very grateful ! Joseph, student gamedev11Views0likes1CommentUnity Compile Error: WindowsXRSimInstallationDetector not found
Hi there, I'm running into an interesting issue on Unity 6.3, using the 83 SDKs. I have installed the simulator, however in my Unity project I get compile errors (and subsequently can't use the simulator) as it seems the script doesn't compile correctly. The following is the error: Library\PackageCache\com.meta.xr.sdk.core@06273138c40d\Editor\MetaXRSimulator\XRSimInstallationDetector.cs(87,29): error CS0246: The type or namespace name 'WindowsXRSimInstallationDetector' could not be found (are you missing a using directive or an assembly reference?) I've tried regenerating project files, reimporting assets and deleting the library folder, everything to no avail. Would be great to get some help regarding this!145Views3likes5CommentsUnity Crash with simulator, always on second start
Moin, so my unity crashes every time I try to run the app with the Meta Simulator (V83) the second time. The first time it works, the second time it just crashes without even a crash report. It is very annoying and makes working quite difficult. Unity version 6000.2.2f1 Meta SDK V83 Sometimes I also get these errors. Since the Simulator changed quite a lot in V83, maybe there is an error in this current version: Failed to initialize Open XR. xrInstance: 69770, xrSession: 0, xrInstanceProcAddrFunc: 140729057810272 UnityEngine.Debug:LogError (object) Meta.XR.MRUtilityKit.MRUK:InitializeSharedLibrary () (at ./Library/PackageCache/com.meta.xr.mrutilitykit@671a38697dfa/Core/Scripts/MRUK.Shared.cs:117) MRUK Shared: Open XR session is not available UnityEngine.Debug:LogFormat (UnityEngine.LogType,UnityEngine.LogOption,UnityEngine.Object,string,object[]) Meta.XR.MRUtilityKit.MRUK:OnSharedLibLog (Meta.XR.MRUtilityKit.MRUKNativeFuncs/MrukLogLevel,char*,uint) (at ./Library/PackageCache/com.meta.xr.mrutilitykit@671a38697dfa/Core/Scripts/MRUK.cs:659) Meta.XR.MRUtilityKit.MRUK/<ConfigureTrackerAndLogResult>d__150:MoveNext () (at ./Library/PackageCache/com.meta.xr.mrutilitykit@671a38697dfa/Core/Scripts/MRUK.Trackers.cs:289) System.Runtime.CompilerServices.AsyncVoidMethodBuilder:Start<Meta.XR.MRUtilityKit.MRUK/<ConfigureTrackerAndLogResult>d__150> (Meta.XR.MRUtilityKit.MRUK/<ConfigureTrackerAndLogResult>d__150&) Meta.XR.MRUtilityKit.MRUK:ConfigureTrackerAndLogResult (OVRAnchor/TrackerConfiguration) Meta.XR.MRUtilityKit.MRUK:UpdateTrackables () (at ./Library/PackageCache/com.meta.xr.mrutilitykit@671a38697dfa/Core/Scripts/MRUK.Trackers.cs:256) Meta.XR.MRUtilityKit.MRUK:Update () (at ./Library/PackageCache/com.meta.xr.mrutilitykit@671a38697dfa/Core/Scripts/MRUK.cs:746) Any ideas on what to check for?OVROverlayCanvas breaking at runtime
I decided to try out OVROverlayCanvas with a small test, and sure enough, it turned my fuzzy UI into crisp, perfect quality UI. So I made the necessary changes across the entirety of the project. Things were looking great in the build. Then, for no particular reason I can find, every instance of OVROverlayCanvas across multiple scenes broke. They went from looking like this: ...to looking like this (at runtime) Between working and not working, the scene from which I took the above screenshots, has had no changes at all. Any suggestions? I’m working in Unity 6.3.1f1, with Meta XR SDK v83.0.129Views0likes2CommentsBuilding a Social VR Game From Scratch Part 1: Entitlement
So, I am building Baby VR, a social VR game that I will build with the community on YouTube. While planning the curriculum, I realized that before working on the core things like Networking, Voice Chat or Game Mechanics, we need to first integrate Baby VR into the Meta Horizon Store. And it starts with the Entitlement. So, in this blog post, I will show you how I did the Entitlement for the Meta Horizon Store. Let's get started. Introduction If you're building a VR app for Meta Quest, you absolutely need to implement entitlement checking. There's no way around it. Without it, anyone could potentially access your app without actually purchasing it from the Meta Quest Store. Think of entitlement as your app's bouncer - it checks if someone actually paid to get in before letting them through the door. Meta requires entitlement checks for apps published on their store, and it's really not optional if you want to protect your work and ensure users have legitimately obtained your application. According to Meta's official documentation. In this blog post, I'll walk you through a real-world implementation that handles all the edge cases - retry logic, error handling, and proper user data retrieval. Let's dive in. How It Works: The Complete Flow Before we get into the code, here's the big picture of how the entitlement process flows: The system consists of a few key components working together=> MetaStoreManager - The main orchestrator that kicks everything off EntitlementHandler - Does the heavy lifting of verification Event System - Notifies other parts of your game when entitlement completes MetaPlayerData - Stores the user info we retrieve Step-by-Step Implementation 1. The MetaStoreManager: Your Entry Point The `MetaStoreManager` is a Unity `MonoBehaviour` that orchestrates everything. It's simple - it initializes the entitlement handler and listens for when the entitlement completes: When you call `Initialize()`, it kicks off the entitlement process. Once complete, it stores the player data for use throughout your game. 2. The EntitlementHandler: The Core Logic This is where the real work happens. The handler performs a four-step verification process with automatic retry logic (up to 3 attempts with 2-second delays between retries): The `CheckEntitlement()` method runs four critical steps in sequence - if any step fails, the whole process fails and retries: Step 2 is the critical one- `CheckUserEntitlement()` calls `Entitlements.IsUserEntitledToApplication()` which queries Meta's servers to verify the user actually purchased your app. This is where the piracy protection happens. The other steps retrieve user data (ID, display name, Oculus ID) and generate a cryptographic proof (nonce) that you can use for server-side verification later. 3. The Data Structure After successful entitlement, you get a `MetaPlayerData` object containing: public class MetaPlayerData { public string UserId; // Unique user identifier public string UserName; // Display name public string AliasName; // Oculus ID public string OculusNonce; // Cryptographic proof for server verification } The`OculusNonce` is particularly important - it's a proof token you can send to your backend server to verify the user's identity securely. Best Practices When to check: Run entitlement as early as possible - ideally during your splash screen or initial loading. Don't let users access premium features until verification completes. Error handling: The implementation includes automatic retry logic (3 attempts with 2-second delays), but you should also show user-friendly error messages and provide a manual retry option if all attempts fail. Security: Never trust client-side verification alone. Always use the `OculusNonce` to verify user identity on your backend server for critical features. This prevents tampering and ensures real security. Performance: The async/await pattern keeps everything non-blocking, so your game stays responsive during the verification process. Common Issues and Solutions Entitlement always fails? Make sure your app is properly configured in the Meta Developer Dashboard, and test on a device that has actually purchased the app. Network issues can also cause failures. Platform not initializing? Verify the Oculus Platform SDK is properly imported and check your AndroidManifest.xml for required permissions. Also ensure you're testing on actual Quest hardware. User data not retrieved? The user needs to be logged into their Oculus account, and privacy settings might be blocking access. Check both the device settings and ensure you're using a compatible SDK version. Quick Integration Example Here's the basic pattern for using this in your game: Conclusion Meta Store entitlement isn't optional - it's a requirement for protecting your VR application. The implementation we've covered gives you: - ✅ Robust verification with automatic retry logic - ✅ Complete user data retrieval for personalization - ✅ Event-based architecture that keeps your code clean - ✅ Production-ready error handling Remember to test on actual Quest hardware, verify your app configuration in the Meta Developer Dashboard, and always implement server-side verification using the `OculusNonce` for critical features. This system provides a solid foundation that protects your app while keeping the user experience smooth. The retry logic handles network hiccups, and the event system keeps everything decoupled and maintainable. Let me know if you need the source code. Additional Resources Meta's Official Entitlement Check Documentation *This blog post is based on a production implementation. Always refer to the latest Meta documentation for the most up-to-date information and best practices.*34Views2likes0CommentsError with Unity Vulkan Dynamic Resolution Despite Supported Version?
I'm on a project on Unity 6000.0.58f2, and can't seem to get dynamic resolution working as expected on a build for the Quest 3. OVRMetrics shows that dynamic resolution isn't working (the resolution is fixed). When I activate dynamic resolution, I get the following error: Error Unity Vulkan Dynamic Resolution is not supported on your current build version. Ensure you are on Unity 2021+ with the Oculus XR plugin v3.3.0+ or the Unity OpenXR plugin v1.12.1+ However, our project is on 4.5.2 of the Oculus XR Plugin. The error suggests this version is supported. Has anyone else had this error, and is anyone aware of a solution (or a supported version of the engine/plugin?)35Views0likes2CommentsMeta XR Simulator 81.0 is not detected by Unity 6.2
I tried to install Meta XR Simulator as part of Meta All-in-One Package and with Meta Core SDK + Meta XR Simulator standalone setup, all components versioned 81.0 when I'm trying to enable Meta XR Simulator via any of menus where I could do it, I see the same log error every time: [Meta XR Simulator Installer] finished downloading https://securecdn.oculus.com/binaries-download-auth/?id=32431411879837787 [Meta XR Simulator Installer] HTTP/1.1 404 Not Found [Meta XR Simulator Not Installed] Installation failed, please report the issue on the bug tracker. [Meta XR Simulator Not Installed] Try using different version. Open Edit > Preferences... > Meta XR > Meta XR Simulator and choose different selected version. Somehow Unity doesn't detect that Meta XR Simulator is already installed and tried to do it again with an error. My Unity Version: 6000.2.14f1 My OS is Windows 11 Would love to provide any additional information334Views1like5CommentsCamera Rig Moving upwards with collisions
Hello everyone, I'm currently working on a Unity VR Game using the Meta SDK (formerly Oculus VR). In my game, you grab different objects and manipulate them. The Scene is mainly a table collider with multiple rigidbody Grabbable Objects on it made from the sample ChessPiece prefab. I'm using the base Camera Rig and Interactions Building Blocks. I'm encountering the following issue : When grabbing objects and moving them, the camera rig parent GameObject sometimes gets moved up, permanently offseting it on the y axis. I think this may have to do with the physics system, but I can't figure it out. Do you have any ideas what might cause this bug ? Thanks in advance, Joseph15Views0likes0CommentsIssues with Gaussian Splatting integration in Meta Spatial SDK (v0.9.2) – Standalone Quest 3
Hi everyone, I am an architect and urban planner, developing VR/MR projects in my spare time. I’m currently working on a native Quest 3 application to view Gaussian Splats for highly detailed virtual project tours. My Goal: Render native Gaussian Splatting (3DGS) on Quest 3 (Standalone). Synchronize the splat position with the real world for a seamless transition from Mixed Reality (MR) to Virtual Reality (VR) with a skybox. Targeting a minimum of 150k splats with stable performance. Previous Attempts: I initially used Unity with the Aras/Ninja implementations. While it works perfectly via Oculus Link (PCVR), it’s not viable for my needs because: PC Builds don't support the specific MR features I need for this project. The Android build (standalone) performance is extremely poor, even with optimized settings and a small 50k splat PLY file (unusable frame rates). Current Issue with Meta Spatial SDK: I’ve switched to the Meta Spatial SDK (Packages v0.9.2) to leverage the new native splat support mentioned here: Spatial SDK Splats Documentation. Despite following the documentation step-by-step: The splats do not appear in the scene. I am getting several reference errors (MissingReference/NullReference) that I can't seem to resolve. My Question: Has anyone successfully created a native Quest 3 APK using the Spatial SDK to run Gaussian Splats (~150k splats)? If so, could you share the correct workflow or point out common pitfalls with this specific SDK version? Any help or documentation beyond the official guide would be greatly appreciated!170Views1like9Comments