Voice インターフェース

製品を使用中のユーザーのボイス チャット ルームを作成および管理するには、Voice インターフェースを使用します。

Preview
8 分で読めます

Epic Online Services (EOS) Voice は、ユーザーのボイス チャット ルームを作成および管理するのに役立ちます。EOS Lobbies を使って Epic のサーバー上、または独自のバックエンド サービス上に EOS Voice チャットルームをホストすることができます。さらに、このインターフェースを使用して、対戦中や製品のロビーで、複数のプラットフォーム間で一対一またはグループでコミュニケーションを取ることができます。

Voice インターフェースを使用するには EOS SDK リリース 1.13 以降が必要です。

Voice は、オンライン サブシステム (OSS) および Unreal Engine4.27 リリースの VoiceChat プラグインによって完全にサポートされます。

Linux は現在 EOS Voice でサポートされていません。

EOS Voice で作成される接続は、認証済みのユーザー間でのみ確立され、そのユーザーに関する個人情報を公開することなく EOS Voice サーバーを通過します。EOS は、スケーリング、サービス品質、メンテナンス、マルチリージョンでの プレゼンス、および Voice サーバーの他の機構をすべて処理します。

Nintendo Switch ゲームは Nintendo Switch アカウントを Epic Games アカウントにリンクすることができません。この制限により、ブロックされた Nintendo Switch アカウントは、EOS ボイスチャットではブロックされないことになります。つまり、ブロックされた Nintendo Switch アカウントのプレイヤーの声は、EOS ボイスチャットでも聞くことができます。Nintendo Switch で使用する認証方法に関する情報は「Nintendo Switch: EOS Auth へログインする」を参照してください。

適切な権限を持っている場合のみ、コンソールのドキュメントにアクセスすることができます。コンソール用 EOS SDK およびその関連ドキュメントへのアクセス方法については、「使用開始の手順:EOS SDK ダウンロードのタイプ 」ドキュメントを参照してください。

Voice インターフェースを使用するには、以下の手順に従う必要があります。

  1. ゲームで使用する 統合方法 をレビューして決定する
  2. Voice のサンプル (C および C# を調べて、製品での Voice インターフェースの使用方法を習得する
  3. Voice インターフェースをアプリケーションに組み込む
    1. クライアント ポリシー を設定する
    2. 選択した統合方法に基づいて Voice インターフェイスを統合します。
  4. Voice インターフェースの ベスト プラクティスVoice のメトリック、および 使用上の制限事項 をレビューする

Voice の統合方法

次の 2 つの方法で Voice をアプリケーションに統合することができます。

  • Voice を Lobby で使用する:EOS SDK を ゲーム クライアント に統合し、EOS Lobbies がルームの管理と承認を行うようにする。Lobbies インターフェース を使用するのに必要なのはクライアント統合のみであり、ルームの所有、検索、および招待が提供されます。

  • 信頼済みサーバー アプリケーションを使用する:EOS SDK を ゲーム クライアント に統合し、SDK または Web API を 信頼済みサーバー アプリケーションに統合します。このアプローチでは、ルームの管理と承認をカスタマイズすることでデベロッパーに最大限の柔軟性が与えられますが、統合により多くの手間が必要になります。

Voice を Lobby で使用する

Voice を Lobby で使用する場合、EOS SDK をゲーム クライアントに統合し、Lobbies に信頼できるサーバー アプリケーションの役割を引き受けさせます。ロビーは roomIds を生成し、メンバー用の tokens を作成し、他のプレイヤーに join kick、または mute するリクエストを承認します。

ルームのセキュリティを確保するために、ロビーは プライベートにして招待 を必要とするようにできます。

ポリシー コンフィギュレーション

userRequired を使用してゲーム クライアントの クライアント ポリシー を構成し、以下を許可します。

  • Lobbies はそのクライアントに適切なアクション (connectreadLobby など) を行う
  • VoicelobbyConference アクションを行う

createRoomTokenmute、および kick は、サーバー使用のみ を目的としているため、無効のままにしておく必要があります。それ以外の場合、これによりゲーム クライアントは任意の roomId にアクセスできます。

Lobby を使用した Voice のフロー

  1. ゲーム クライアントSDK を初期化 し、EOS_HLobbyEOS_RTC、および EOS_RTCAudio インターフェースを取得します。
  2. ゲーム クライアントConnect インターフェース を使ってローカル ユーザーを承認します。
  3. ゲーム クライアントbEnableRTCRoom フラグを有効にした EOS_Lobby_CreateLobby を新規ロビーを作成します。
  4. そのロビーが、ルーム トークンをリクエストしてトークンとメディア サーバーの URL を返します。EOS SDK はそのトークンを使用して、ボイス ルームに参加します。
  5. そのロビーに参加する他のユーザーには、そのボイス会議に参加するためのルーム トークンが自動的に届きます。
  6. ロビーの所有者は他のプレイヤーに招待を送信することができます。パブリック ロビーには、招待されていなくても検索および参加できます。
  7. ロビーの所有者は、他のプレイヤーを mute または kick できます。
  8. すべてのクライアントで EOS_RTCEOS_RTCAudio のインターフェースを使用して、オーディオ入出力の管理、ローカル ミュート/スピーカー ステータスの変更、およびルームの退出を行うことができます。

EOS SDK の Lobbies のサンプル で、このコンフィギュレーションの実例が示されています。

Voiceを使用してルームの管理と承認をより細かく制御するには、信頼済みサーバー アプリケーションを使用した Voice のフロー を使用できます。

信頼済みサーバー アプリケーションを使用した Voice のフロー

ポリシー コンフィギュレーション

以下の設定でサーバーに クライアント ポリシー を設定します。 userRequired を無効にして、サーバーが clientIdclientsecret を使って Connect インターフェース での認証できる。

  • VoicecreateRoomTokenkickmute を使用すると、サーバーは任意の roomId のプレイヤー用にルームを作成し、プレイヤーを削除してトークンを取り消して、プレイヤーをミュートにできる。

信頼済みサーバー アプリケーションを使用した Voice のフロー

  1. ゲーム クライアントSDK を初期化 し、ボイス ルームに入ることを信頼済みアプリケーション (専用サーバーや Web アプリケーションなど) に要求します。
  2. 信頼済みサーバーは、ClientIdClient Secret を使って Connect インターフェース で認証します。
  3. 信頼済みサーバーは、ClientId とクライアント シークレットを使用して RoomId を生成し、指定された RoomId に対するルーム トークンを EOS Voice のバックエンドにリクエストします。
  4. 信頼済みサーバーが、既存の通信方法を使用して、ルーム トークンとメディア サーバーの URL を各プレイヤーのゲーム クライアント アプリケーションに返します。
    • クライアントとサーバーの間の通信方法は自由に選択でき、ネットワーク レプリケーション、メッセージング、HTTP、または他の既存の通信方法で実現することができます。
  5. ゲーム クライアントEOS_RTC_JoinRoom を使用してメディア サーバーに接続し、サーバーから提供されたトークンを使用してルームに参加します。
  6. 他のユーザーがそのルームに参加するには、同じルームの ProductUserIdToken を信頼済みサーバーに要求し、そのトークンを使用してメディア サーバーに接続します。
    • 指定されたルームに参加できるユーザー、およびそのルームで他のユーザーを kick または mute できるユーザーを決定するための承認方法の実装は、サーバーのロジックに任されています。この統合方法では、この側面をデベロッパーがカスタマイズできます。
    • Voice サーバーのサンプルでは、ルームに参加するためのパスワード、および所有者と共有して kick や mute などの操作で指定する必要があるロックを使用する実例が示されています。
  7. すべてのクライアントで EOS_RTCEOS_RTCAudio のインターフェースを使用して、オーディオ入出力の管理、ローカル ミュート/スピーカー ステータスの変更、およびルームの退出を行うことができます。

EOS SDK の Voice クライアントと Voice サーバーのサンプル ((CC#) では、このコンフィギュレーションの実例が示されています。

RTC インターフェースのハンドル

RTC 機能で使用できる 3 つのインターフェース ハンドルがあり、Platform インターフェース から取得できます。

EOS_HRTCAdmin ハンドル

  • Voice バックエンドは、ロビーによって管理される音声ルームを、デベロッパー サーバーによって管理される音声ルームとは別に保持します。Voice バックエンドは、ロビーによって管理される音声ルームを、デベロッパー サーバーによって管理される音声ルームとは別に保持します。つまり、ロビー会議の参加者をキックしたりハードミュートしたりするなどの機能は、 EOS_HRTCAdmin インターフェイスでは実行できず、Lobbies インターフェース のみで実行可能です。
  • ルーム トークンの作成、kick、mute などの管理機能で使用されます。
  • 信頼済みサーバー アプリケーションでのみ使用します。ゲーム クライアントや共有コミュニティ サーバーで使用してはいけません。
  • EOS_Platform_GetRTCAdminInterface を使用して取得します。

EOS_HRTC ハンドル

  • EOS_HRTC のサブインターフェースであり、ボイス特有の機能で使用されます。
  • EOS_RTC_GetAudioInterface を使用して EOS_HRTC ハンドルから取得できます。

EOS_HRTCAudio ハンドル

  • EOS_HRTC の音声固有のサブ インターフェース。
  • EOS_RTC_GetAudioInterface を使用して EOS_HRTC ハンドルから取得できます。

Voice インターフェースを Windows に実装する

Windows の場合、プラットフォームを作成する前に、プラットフォーム インターフェースの RTCOptionsEOS_Windows_RTCOptions を渡す必要があります。

C SDK のサンプル (以下にコードの断片をコピーしますが、詳細は「Voice インターフェース - C SDK」ページをご覧ください) は、Windows の場合、次のように動作します。

  • WindowsRtcOptions をいう名前の EOS_Windows_RTCOptions クラスのインスタンスを作成する
  • 属性を構成する
  • RtcOptions.PlatformSpecificOptionsの値をWindowsRtcOptions` のアドレスに指定する

C SDK の Windows 用サンプルコードです。

ベスト プラクティス

双方向ミュート

プラットフォームのさまざまな要件 (ブロックリストなど) を満たすために、以下を使用する必要があります。 必要に応じてプレイヤーの双方向ミュートを実装するための EOS_RTC_BlockParticipant

ペアレンタル コントロール

セッションで Voice を有効にする前に、ペアレンタル コントロールの設定の確認を検討してください。

使用上の制限事項

Voice にはインターフェース特有の使用率の制限があります。スロットリング、使用量制限、およびベスト プラクティスに関する全般的な情報については、「サービス使用上の制限事項」を参照してください。

機能サービスの制限事項
最大ルーム サイズ16
1 分あたりでユーザーあたりの最大リクエスト数50

Voice のメトリック

過去 30 日間の デベロッパー ポータル[Your Product] > [Game Services] > [Voice] で、自身の Voice 運用メトリックにアクセスすることができます。

時間間隔 (5 分間、30 分間、1 時間、1 日間、7 日間、14 日間、30 日間など) およびプラットフォーム (Windows、PS4、PS5 など) でフィルタリングすることができます。

Voice サービスの使用を開始すると、データがグラフに自動的に入力るので、追加の設定は必要ありません。

以下のメトリックがあります。

  • Connected Users per Platform (プラットフォームごとの接続ユーザー数): 選択されている時間枠内で Voice サービスに接続していたプレイヤーの数 (プラットフォーム別)。
  • Voice Users Status (Voice ユーザーのステータス): Voice SDK のステータスの詳細 (接続済み、エラー、接続解除済み、など)。
  • Join Room (ルーム参加): 全体的なユーザー参加エラー率。
  • Join Room Errors (ルーム参加のエラー数): 特定のルーム参加エラー数とそのエラー率に関する詳細情報。
  • Room Sizes (ルーム サイズ): すべてのプラットフォームにわたる、参加者数に基づくルーム サイズの分布。
  • Errors (エラー数): エラー数とそのエラー率に関する詳細情報。