Introducing Mobile DLC Support (in Beta)

Oculus Developer Blog
Posted by Dmitry Soshnikov and Marc Ashman
May 17, 2018

Following the single static expansion file support that we launched a few months back, we are happy to announce the support for multiple dynamic expansion files. Technically, dynamic expansion files are known as Generic Asset Files on the Oculus Mobile platform and are best suited for DLC (downloadable content).

Starting today, you can launch new content for an application that already exists on the Oculus Mobile Store. Whether you're introducing an extra character, a new level in a game, additional images and media files, or new chapters, DLC support will enable larger application sizes and additional revenue from your application after it has been purchased.

Note: we use terms “DLC”, and “Asset File” interchangeably.

Use Cases for DLC

DLC opens an opportunity to expand your application size and provides ability for further monetization. It can be used in the following use-cases:

  • Sellable DLC: sell extra content post-installation
  • Implementation-detail DLC: download extra content as a user proceeds in a game

Engine Support

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

Uploading Builds with Asset Files

To upload a build with asset files, 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.

Note: The upload process uses patching uploads and downloads. Subsequent asset files will transfer faster since the upload only includes new files.

Here is an example of how to upload a build with asset files:

ovr-platform-util upload-gear-build	    \
    --app <app-id>                          \
    --secret <app-secret>                   \
    --channel <channel>                     \
    --apk <main-apk-file>                   \
    --assets_dir <path-to-dir-with-assets>


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

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:<app_id>/build/<build_id>/expansion-files.

Important: We perform automatic updates of asset files. This means that a new version of an asset is automatically downloaded and installed if the asset with the same file name was already installed in the previous version.

Specifying Price via IAP

DLC can also have a price and be purchased via a corresponding IAP (in-app purchase) item. To configure your IAP item, you'll need to specify a price and then upload the --asset_file_iap_configs parameter.


--asset_file_iap_configs '[{"filename": "Asset1.obb", "sku": "Asset1_IAP"}, ...]'

Or you can move the config to a JSON file and use the --asset_file_iap_configs_file parameter instead.

Note: Price can also be set or updated in the dashboard on the expansion files management page.

We will automatically check the IAP entitlement on download of an asset file or DLC.

Platform SDK Integration

When you upload your application with asset files or DLC, the asset files or DLC can be downloaded on demand from within your app. This will happen at any time post-installation. Please refer the SDK documentation (available since v. 1.24) on how to integrate asset files or DLC into your app.

At runtime, the list of asset files can be retrieved via ovr_AssetFile_GetList() call and then calling ovr_AssetFile_DownloadById for the actual file download. The async ovrNotification_AssetFile_DownloadUpdate notification allows you to control transferred bytes and implement a download progress bar.

A Note About Beta

The Asset Files support is available now in beta form for the Mobile Platform. Rift support is coming soon. 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.