Overview
What this is:
...the Oculus Platform SDK exposed to blueprints as directly as possible.
...300+ Oculus Platform functions.
What this isn't:
...an integration of the Oculus Platform SDK into existing UE4 systems. (e.g. Sessions)
...an expansion, simplification, or explanation of the existing SDK.
...complete. Some features have not been implemented.
You'll find blueprint nodes for the functions included in the Oculus Platform SDK. These nodes make it easy to integrate Leaderboards, Achievements, In-App Purchases, and more into your Oculus app.
Includes a Project Settings tool to easily configure your app for use with the Oculus Platform services.
This plugin relies on the Oculus Platform SDK, which is included in UE4. However, a more up-to-date version of the Oculus Platform SDK is recommended. OVR Platform BP is simply a blueprint wrapper for the existing SDK. Some features of this plugin are not available in UE4 by default, but can be made functional by updating the Oculus Platform SDK. Updated SDK versions can be downloaded from the Oculus developer site.
This plugin was not created by, and is not supported by, Oculus.
For technical support, questions, comments, etc, please reach out on our Discord server.
Requirements
Supported Unreal Engine Versions
4.20 or later
Platforms
Win64
Android (Quest)
Oculus Platform SDK
1.24 to v34
Additional Notes
It is highly recommended to update the Oculus Platform SDK to access all features and bug fixes.
This plugin attempts to handle whichever Oculus Platform SDK is installed. Though 1.24 or later is required.
Please check the Version Compatibility Reference to determine which version of the Oculus Platform SDK is included with your engine version.
The installed SDK version is also indicated in the Plugin Settings.
Features added after Oculus Platform SDK v28 have not yet been implemented.
Updating the Oculus Platform SDK
(This is optional, but highly recommended in order to access all Oculus Platform SDK features and bugfixes)
Download the latest Oculus Platform SDK
In that zip file, go to the 'Windows' folder and replace 'LibOVRPlatform32_1.lib' and 'LibOVRPlatform64_1.lib' in the following folder within your engine directory:
'Engine\Source\ThirdParty\Oculus\LibOVRPlatform\LibOVRPlatform\lib'
If you're building for Quest, copy the two folders from the 'Android\libs' directory of the zip file into that same engine directory.
Copy the entire 'Include' folder from the zip file and replace the folder:
'Engine\Source\ThirdParty\Oculus\LibOVRPlatform\LibOVRPlatform\include\'
Regenerate project files, then compile and you're good to go.
If you're updating the libraries for a launcher build of the engine, the updated features will not be available in editor, but should work in a packaged build of the project.
Frequently Asked Questions
This plugin fails to compile for unmodified installations of the Oculus fork of UE4.25 or 4.26.
Oculus updated the include files for the Oculus Platform SDK, but the Win64 libraries are outdated. This tricks the plugin into thinking certain classes are available which are not. To solve this, please manually update the Oculus Platform SDK using the steps outlined above.
This issue was resolved in 4.27. It might even be resolved entirely, but I haven't looked into it.
My app fails to load on Oculus Quest with this plugin enabled.
Most likely, this is due to a configuration issue. Please check your configuration settings in 'Project Settings->OVRPlatformBP'. Additionally, please follow the Oculus documentation carefully. The most commonly missed step is to add the config file 'Android/AndroidEngine.ini'.
OVR Platform BP will create this file for you, if it does not already exist. Configuring 'DefaultPlatformService' via the Plugin Settings will update that value in both required config files.
My app fails the entitlement check but some platform features work.
I don't recommend placing the 'Verify Entitlement' node in your Game Instance blueprint. The game instance can sometimes fire 'Event Init' prior to 'OnlineSubsystemOculus' loading. This would cause the check to always fail.
Instead, I recommend executing the entitlement check on 'Begin Play' in a blueprint actor.
My app passes the entitlement check but some platform features do not work.
In this case, please check that you have completed all requisite setup steps.
Note that a build must be uploaded to a release channel (the app doesn't need to function properly, it just has to exist).
When testing, you don't need to upload each build! You can safely sideload after uploading an initial build.
Then, you must add your Oculus email address to the authorized users of that release channel.
You will also need to complete the Data Use Checkup on the Oculus Developers site, for each feature used in your app.
In-App Purchases are returning error messages about user permissions.
Currently, App Lab titles are only permitted to offer free IAP. This is not an issue with the plugin, but a limitation set by Oculus.
Similarly, Subscriptions are not available for App Lab projects at this time.
If your app has been approved for the Oculus Store and you still have this issue, please contact me.
How can I access the UE4 logs for my Quest project?
By default, UE4 does not generate logs in shipping configuration. In order to access logs (which are extremely helpful in isolating these issues), please build your app in development configuration while testing.
Alternatively, you can follow the steps outlined in this post to enable logs in shipping configuration. Please note that you should not include the line 'bUseChecksInShipping' as it will cause issues uploading your build to an Oculus release channel.
Run the app to generate logs, then pull the logs with the following adb command:
adb pull /storage/emulated/0/Android/data/com.[your_company].[your_project]/files/UE4Game/[your_project]/[your_project]/Saved/Logs.
Can my App Lab project share Leaderboards or other features with Rift store titles?
No, this feature is not currently available to App Lab projects.
If your app has been accepted as an official Oculus Store app, then you can do this with App Groupings.
Can the same UE4 project be used to create builds for both Rift and Quest?
Yes, it can! When configuring your app, it is recommended to set 'RiftAppID' and 'MobileAppID' instead of only 'OculusAppID'. This will allow you to create builds for the Rift store and SideQuest without adjusting your config file for each build.
'OculusAppID' is not necessary, but has been included in the plugin settings for legacy apps. It is currently only used as a fallback if the other values are not provided.
Do I have to update the Oculus Platform SDK?
Short answer? No, not unless you require features which are more recent additions to the SDK.
This plugin attempts to handle whichever Oculus Platform SDK is installed. v1.24 or later is required. Please consult the Unreal Compatibility Matrix to determine which version of the Platform SDK is included with your version of Unreal Engine 4.
The currently installed Oculus Platform SDK version is noted in the Plugin Settings.
Legal
OculusPlatformBP Plugin by ItsNotMeTrustMe (Brian Edward Hicks) of InnerLoop LLC, 2021
This plugin was not created by, or in partnership with, Oculus or Epic Games (which are trademarks of their respective entities).
No guarantees are made about anything. Use at your own risk.
Please drink responsibly.