Voice - Fusionインテグレーション

目次

Voice - Fusionインテグレーション

このインテグレーションにより、Photon Fusionプロジェクト内でのPhoton Voiceの使用が容易になります。主な使用例としては、各プレイヤーがネットワークで生成されたオブジェクト(キャラクターやアバター)を持っていてオーディオを3D配置する場合です。ただし、Fusionが生成したプレイヤーアバターと連動していない他のオブジェクトにオーディオソースを配置することも可能です。

オーディオストリームは、シーン内のプレハブ"NetworkObject"のインスタンス化と同期して、Voiceルームに作成されます。ネットワークオブジェクトに接続されたRecorderが、オーディオストリームを生成します。このネットワーク・オブジェクトのリモート・コピーに接続されたSpeakerがオーディオストリームを消費します。 NetworkObject.Id`は、Recorderに対応する適切なSpeakerを見つけるために使用されます。

トップに戻る

主な概念

FusionVoiceClient

VoiceConnectionの実装で、FusionとVoiceクライアントの接続を維持しステートを同期します。Fusionがセッションに参加すると、VoiceクライアントがVoiceルームに参加します。Fusionがシャットダウンまたは切断すると、Voiceクライアントがルームから退出し、切断されます。

アプリケーションの設定

  • FusionVoiceClient.UseFusionAppSettings: trueの場合、FusionのPhotonAppSettingsにあるAppSettingsが使用されます。それ以外の場合は、"App Settings"フォールドアウトのFusionVoiceClientコンポーネントに特定の値を設定してください。

  • FusionVoiceClient.UseFusionAuthValues: trueの場合、VoiceクライアントはFusionのPhotonNetwork.AuthValuesと同じAuthenticationValuesを使用します。 これをおこなうためには、VoiceアプリケーションでFusionアプリケーションと同様にカスタム認証ダッシュボードを設定する必要があります。 ただし、認証プロバイダによっては、認証リクエストごとにnonce(一意のワンタイムシークレット)をクライアントが発行する必要がある点に留意してください。 このため、FusionとPhoton Voiceで認証値を共有することはできず、Voiceクライアントを接続する前にVoiceクライアントのAuthenticationValuesを手動で設定する( FusionVoiceClient.Client.AuthValuesによって)必要があります。

トップに戻る

ストリーミング

  • FusionVoiceClient.PrimaryRecorder: Recorderコンポーネントのあるオブジェクトで、クライアントごとに1つの発信ストリームのみがある場合に役立ちます。

  • FusionVoiceClient.UsePrimaryRecorder: trueの場合、Primary Recorderオブジェクトに付属するRecorderが自動的に初期化され、ストリーミングに使用されます。Recorderはネットワークオブジェクトにバインドされません。VoiceNetworkObjectを使用している場合にはチェック解除してください。

  • FusionVoiceClient.SpeakerPrefab: 新しい受信ストリームを検出した場合に、そのストリームが属するオブジェクトの階層に Speakerが存在しない場合に、スピーカーオブジェクトのインスタンス化に使用するプレハブです。VoiceNetworkObjectプレハブを使用していない場合や、これらのプレハブにSpeakerコンポーネントがない場合に設定します。Speakerコンポーネントを含む必要があります。

トップに戻る

VoiceNetworkObject

VoiceNetworkObjectプレハブに割り当てられ、RecorderとSpeaker のセットアップを担当するコンポーネントです。 ストリーミング側ではプレハブ階層にあるRecorderを起動し、見つからなければ FusionVoiceClient.PrimaryRecorderを起動します。 受信側では、プレハブ階層にあるSpeakerを起動し、見つからなければ FusionVoiceClient.SpeakerPrefabからインスタンスを作成します。

トップに戻る

重要なインストラクション

使用するFusion SDKで最低限必要となるUnityのバージョンを確認してください。現在、このバージョンはUnity 2020.3.x で、Voice for Fusionのインテグレーションには少なくとも同じバージョンが必要です。

Fusionをインポート

プロジェクトにすでにFusionがある場合には、この部分をスキップしてください。

  1. Fusionをこちらからダウンロードおよびインポートします。

  2. Fusion > Realtime Settingsメニュー項目を使用し、Photon App Settingsを開きます。

  3. FusionタイプのAppIDを取得し、Realtime Settingsに設定します:「App Id Fusion」。

トップに戻る

Photon Voiceをインポート

プロジェクトにすでにPhoton Voiceがある場合には、この部分をスキップしてください。

Unity Package Managerを使用して、またはUnity Asset StoreからPhoton Voice 2をインポートします:

  • "Photon\PhotonChat"をチェック解除します
  • 以下のフォルダをチェック解除します:
    • "Photon\PhotonUnityNetworking"
    • "Photon\PhotonVoice\Code\Pun"
    • "Photon\PhotonVoice\Fusion"以外の"Photon\PhotonVoice\Demos"コンテンツ

トップに戻る

Weaver Settingsを更新

  1. メニュー項目のショートカットから"Network Project Config"を開きます:Fusion > Network Project Config
  2. Configを展開するか、または開きます
  3. Weaving Settingsを展開するか、または開きます
  4. Assemblies To Weaveの下にある「+」ボタンで編むべきアセンブリのリストに項目を1つ追加します
  5. 新規作成した項目で、利用可能なアセンブリのドロップダウンリストから「PhotonVoice.Fusion」を選択します
  6. 最下部で、Applyをクリックします

トップに戻る

推奨されるワークフロー

シーンのセットアップ

  1. FusionのPhotonAppSettingsで、AppSettingsにVoice AppIdを設定します。
  2. NetworkRunnerが付属されているオブジェクトにFusionVoiceClientを追加します。
  3. Recorderを持つオブジェクトをシーンに追加し、FusionVoiceClient.PrimaryRecorderに割り当てます。
  4. Speakerのあるプレハブを作成し、FusionVoiceClient.SpeakerPrefabに割り当てます。

トップに戻る

プレハブのセットアップ

  1. NetworkBehaviourが付属されたFusionプレハブオブジェクトにVoiceNetworkObjectを追加します。 2. ショートカットメニュー項目から、Fusionがプレハブを認識している点を確認してください:"Fusion" -> "Rebuild Object Table"

詳細な情報はFusionのサンプル または Fusion Impostorのサンプル を参照してください。

ドキュメントのトップへ戻る