Oculus Go Development

On 6/23/20 Oculus announced plans to sunset Oculus Go. Information about dates and alternatives can be found in the Oculus Go introduction.

Oculus Quest Development

All Oculus Quest developers MUST PASS the concept review prior to gaining publishing access to the Quest Store and additional resources. Submit a concept document for review as early in your Quest application development cycle as possible. For additional information and context, please see Submitting Your App to the Oculus Quest Store.

Voice Chat (VoIP) using Platform Solutions

Note: You are viewing the Unreal version of this topic. To view this topic for Unity development, see Voice Chat (VoIP) using Platform Solutions (Unity). To view this topic for native development, see Voice Chat (VoIP) using Platform Solutions (Native).

Use the Platform VoIP service to add voice chat to your app.

The VoIP service transmits PCM (pulse-code modulation) data between users that the Platform SDK decodes to audio.

VoIP is peer-to-peer so your app will be limited by bandwidth in most cases. In general, the VoIP service becomes unstable if you have 12 or more connections. You should have 8 or less 8 connections on Rift and 4 or less on mobile apps. You may be able to support more if you use push to talk or some proximity-type muting.

Note

VoIP data may be routed through relay servers located inside Facebook's infrastructure when connecting to client devices that are behind network address translation (NAT), if a connection cannot be established from their detected external address. The VoIP data passing through a relay server is not inspected any more than is necessary to forward to the recipient; nor is it retained.

Implementation Overview

To integrate VoIP in your Unreal app, call the functions below once you’ve established the online session. You can call these functions from anywhere in your code that you’d like. See Epic’s Online::GetVoiceInterface page for more information.

First, to enable VoIP in DefaultEngine.ini:

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

In the session, you can retrieve an array of the players in the session and their corresponding FUniqueNetIdOculus.

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);

Note: In your DefaultGame.ini file, there may be a PushToTalk value that defaults to True. This will require users to press a specified button to talk. Disable this to allow users to talk without pressing a button.