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.

Data Use Checkup

Note that this feature accesses user data and may require you to complete the Data Use Checkup form prior to submitting your app to the Oculus Store. For more information, see Complete a Data Use Checkup.

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.