Oculus Platform Features and Online Subsystems

The Oculus Platform supports several features related to security, community, revenue, and engagement, including matchmaking, in-app purchase, entitlement checking, VoIP, cloudsaves, and more.

Unreal developers may access Oculus Platform features in two ways:

  1. A subset of Platform functionality is built into the engine and is available through the Unreal Online Subsystem interface, and
  2. The Platform SDK includes an Unreal plugin providing full access to all Oculus Platform features

Some Platform features support Blueprints, such as Entitlement Checking. For more information and instructions, see the Platform section of Blueprints

For instructions on using the Oculus Platform Plugin for Unreal, please see our Platform SDK documentation and the readme included in the Unreal folder of the Platform SDK archive (available from our Unreal Downloads page).

Unreal Online Subsystems

Several Oculus Platform features may be accessed through Unreal’s Online Subsystems (OSS) interface in Unreal Engine 4.12 and 4.13. For more information on available UE4 versions and compatibility, see our Unreal Engine.

For each supported feature, only a subset of functionality is exposed by the Online Subsystems interface. Developers who wish to use Platform features not available through Online Subsystems should code against the native C headers located in Engine\Source\ThirdParty\Oculus\LibOVRPlatform and include them in their build.

The following features are available through the Online Subsystems.

FeatureOnline Subsystem Interface

Achievements

Achievements

Top Players

Leaderboards

Friends

Leaderboards

Rooms

Sessions

Matchmaking

Sessions

Cloudsaves

Cloudsaves

Identity

Identity

Entitlements

Identity

VoIP

Voice

P2P Networking

Netdriver

To enable the OSS plugin, select Edit > Plugin Settings > Built-In > Online Platform > Online Subsystem Oculus, and check Enabled.

To access Oculus Platform features through Online Subsystems, you must adjust your defaultEngine.ini file to use Oculus:

[OnlineSubsystem]
DefaultPlatformService=Oculus
   
[OnlineSubsystemOculus]
bEnabled=true
OculusAppId=<app_id_here>

For more information on Unreal Subsystems, see Epic’s Online Subsystems Overview.

Entitlement Checking

Entitlement checking may be used to protect apps from unauthorized distribution. Unreal developers using Blueprints can use the Verify Entitlements Blueprint under Oculus > Entitlement. For more information and instructions, see the Platform section of Blueprints and Entitlements: App Authorizations in our Platform guide.

Applications should always have entitlement checks enabled for submissions to the Oculus store.

VoIP

Our Online Subsystems implementation of VoIP extends the Unreal class IOnlineVoice. See Unreal’s IOnlineVoice reference for more information.

To enable VoIP in DefaultEngine.ini:

[OnlineSubsystem]
DefaultPlatformService=Oculus
bHasVoiceEnabled=true
   
[Voice]
bEnabled=true

To connect to someone else:

Online::GetVoiceInterface()->RegisterRemoteTalker(<FUniqueNetIdOculus>);

To disconnect from someone:

Online::GetVoiceInterface()->UnregisterRemoteTalker(<FUniqueNetIdOculus>);

To see if a remote user is talking:

Online::GetVoiceInterface()->IsRemotePlayerTalking(<FUniqueNetIdOculus>);

To unmute yourself:

Online::GetVoiceInterface()->StartNetworkedVoice(0);

To mute yourself:

Online::GetVoiceInterface()->StopNetworkedVoice(0);

P2P

Our Online Subsystem implementation of P2P extends the Unreal class UNetDriver. See Unreal's UNetDriver reference for more information.

To enable P2P in DefaultEngine.ini:

[/Script/Engine.GameEngine]
      +NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemOculus.OculusNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")
      
      [/Script/OnlineSubsystemOculus.OculusNetDriver]
      NetConnectionClassName="OnlineSubsystemOculus.OculusNetConnection"

To act as the host of a game, open the map as a listen server.

To act as the client of the game, open a connection to <oculus_id_of_host>.oculus.