プラットフォームソリューションを利用したボイスチャット(VoIP) (廃止)
更新日時: 2026/04/17
Peer-to-Peer Voice Chat Deprecation
2023年4月をもってピアツーピアボイスチャット(VoIP)は廃止され、統合可能なプラットフォームAPIのリストに含まれなくなっています。詳細については、こちらをクリックしてください。
アプリにルームを実装する代替手段として、Photonなどのサードパーティソリューションをご利用いただけます。PhotonなどのサードパーティソリューションをプラットフォームAPIに統合する方法の例は、こちらでご確認ください。 プラットフォームVoIPサービスを使用して、アプリにボイスチャットを追加します。
VoIPサービスはユーザー間でPCM (パルス符号変調)データを送信し、Platform SDKはそのデータを音声にデコードします。
VoIPはピアツーピアなので、多くの場合アプリは帯域幅による制限を受けます。一般に12以上の接続があると、VoIPサービスは不安定になります。接続数は、Riftでは8以下、モバイルアプリでは4以下にしてください。プッシュツートークまたは何かの近接型ミューティングを利用すると、より多くの数に対応できる可能性があります。
ネットワークアドレス変換(NAT)の背後にあるクライアントデバイスへの接続時に、検出された外部アドレスから接続を確立できなかった場合、VoIPデータはMetaのインフラストラクチャ内にあるリレーサーバー経由でルーティングされる可能性があります。リレーサーバー経由で渡されるVoIPデータは、受信者への転送に必要な範囲を超えて検査されることはなく、保持されることもありません。
This is a Platform SDK feature requiring Data Use Checkup
この機能や他のPlatform SDK機能を利用するには、データの使用状況の確認(DUC)を完了する必要があります。DUCは、開発者ポリシーを遵守していることを確認するためのものです。チームの管理者は、ユーザーデータの利用がプラットフォームガイドラインに沿っていることを証明する必要があります。アプリレビューチームがDUCを審査して承認するまで、プラットフォームの機能はテストユーザーのみが利用可能です。VoIPをUnrealアプリに統合するには(現在のSDKバージョンではAPIを利用できません — 下記の注を参照)、オンラインセッションを確立した後に以下の関数を呼び出します。これらの関数は、コード内のどこからでも呼び出すことができます。詳しくは、Epicの
Online::GetVoiceInterfaceのページをご覧ください。
まず、Quest用のアプリをリリースする場合は、RECORD_AUDIOアクセス許可をAPKパッケージに追加する必要があります。このアクセス許可は、[Project Settings(プロジェクト設定)] > [Platforms(プラットフォーム)] > [Android] > [Advanced APK Packaging(高度なAPKパッケージング)] > [Add permissions to support Voice chat (RECORD_AUDIO)(ボイスチャットをサポートするアクセス許可を追加(RECORD_AUDIO))]で切り替えることができます。
次に、DefaultEngine.iniで次のようにしてVoIPを有効にします。
[OnlineSubsystem]
DefaultPlatformService=Oculus
bHasVoiceEnabled=true
[Voice]
bEnabled=true
この設定は、古いSDKバージョンで使われていました。OnlineSubsystemOculusオンラインサブシステムバックエンドは、現在のSDKバージョンでは利用できなくなりました。ボイスチャットには、Photonなどのサードパーティソリューションを使用してください。
セッションにおいて、そのセッション内のプレイヤーの配列と、それぞれに対応するFUniqueNetIdOculusを取得することができます。これは現在のSDKバージョンでは利用できません。
別のプレイヤーに接続するには、次のようにします。
Online::GetVoiceInterface()->RegisterRemoteTalker(<FUniqueNetIdOculus>);
切断するには、次のようにします。
Online::GetVoiceInterface()->UnregisterRemoteTalker(<FUniqueNetIdOculus>);
リモートユーザーが話し中かどうかを確認するには、次のようにします。
Online::GetVoiceInterface()->IsRemotePlayerTalking(<FUniqueNetIdOculus>);
自分のミュートを解除するには、次のようにします。
Online::GetVoiceInterface()->StartNetworkedVoice(0);
自分をミュートするには、次のようにします。
Online::GetVoiceInterface()->StopNetworkedVoice(0);
注: DefaultGame.iniファイル内に、デフォルトでTrueに設定されるPushToTalk値があるかもしれません。その場合、ユーザーが通話するには、指定されたボタンを押す必要があります。ユーザーがボタンを押さずに通話できるようにするには、この値を無効にします。