Oculus Rift Updates: Asset Files, Language Packs, and More!
Oculus Developer Blog
Posted by Dmitry Soshnikov, Alex Renzin, Scott Boyce
November 8, 2018

Note: Developers are currently invited to begin adding Expansion Files to their applications and testing DLC under the Beta program. Please note that full DLC support in the Oculus Store is not yet available.

Following the mobile DLC support which was launched a few months back, we are happy to announce that Expansion Files are coming to Rift. Technically, the expansion files are known as Generic Asset Files on the Oculus platform and are best suited for DLC (downloadable content), and any other content which can be installed after your application has already been downloaded.

Expansion files provide the ability to expand your application size and further monetize your application. It can be used in the following use-cases:

  • Sellable DLC: sell extra content within your application post-install
  • Implementation-detail DLC: download extra content as a user proceeds in a game
  • Language Packs: download for localization data on demand

Engine Support

Unity and Unreal have built-in support for DLC that directly correspond to Asset Files on the Oculus platform. Please refer to the following documentation:

Integration Documentation

The API for build uploads with expansion files, and integrating them into your app via Platform SDK is identical to the mobile apps. Please address the details on the integration in this documentation, and the blog post.

Language Packs

One of the Rift-specific products which is built on top of the generic asset files, is the Language Packs.

A language pack is a special type of an asset file, which can be used for automatic i18n support in Oculus app, and downloading needed i18n data on-demand.

The main two problems developer had previously with the i18n support in their apps are:

  • Packing i18n audio data for all supported languages into the main build, which could dramatically increase the installation app size
  • Always need to implement a custom language selector in the app itself

With the upcoming language packs support, developers can now extract each language into an asset file, and which can be automatically downloaded by the Oculus app. Users now have access to the generic Language Selector directly in the Oculus app (the Details section of your app), and you don't have to implement a custom in-app one.

Uploading Builds with Language Packs

To upload a build with language packs, you will need to use the ovr-platform-util tool.

Note: Asset files are versioned. They have to be uploaded together with the main binary.

Here is an example of how to upload a build with language packs:

(Sample code provided herein is subject to the Oculus Examples License)

ovr-platform-util upload-rift-build 
--app <app-id> \
--secret <app-secret> \
--channel <channel> \
--apk <main-apk-file> \
--language_packs_dir <path-to-dir-with-language-packs>

As you can see, it is controlled by the --language_packs_dir parameter, which is the path to a directory containing all your language pack files.

Note: we use BCP47 format for language tags, and the language pack files should be named in the <BCP47>.lang format. Examples: en-US.lang for American English, de.lang for German, etc.

Once uploaded, you can manage all asset files belonging to the build in the Dashboard. Go to “Manage Builds” → from the context menu of a release channel select “View Channel Builds” → from the context menu of a build select “View Expansion Files”.

You can also find the uploaded asset files via the direct URL: https://dashboard.oculus.com/application/<app-id>/build/<build-id>/expansion-files.

Platform SDK for language packs

Once the language packs are uploaded, and a user has selected the needed language in the Oculus app, your application can request via SDK call information about currently installed language. Please address the Asset Files, and Language Packs SDK requests for full details.

Note: users select a language in the Details section of your app in the Oculus app.

To retrieve a currently installed language, use the ovr_LanguagePack_GetCurrent call, which returns the AssetDetails structure. From the asset structure, by using the ovr_AssetDetails_GetLanguage you get the LanguagePackInfo data.

If you decide to implement in addition in-app language selector, you can also use the ovr_LanguagePack_SetCurrent call, which spawns the Asset Files Download request. Once the asset file corresponding to the language pack is downloaded, and installed, you can query it again using the ovr_LanguagePack_GetCurrent call.

A Note About Beta

The Asset Files, and Language Packs support for Rift are available now in beta form. DLC support in Oculus Stores is coming soon, so users will be able to purchase, and install the downloadable content directly from Oculus app. We encourage you to experiment with it using Release Channels before pushing asset files or DLC to live users. As always, we'd love to hear your feedback.