このページは編集中です。更新が保留になっている可能性があります。

Voice For Fusion

目次

コンセプト

この統合は、PhotonプロジェクトでのPhoton Voiceを使用しやすくするためのもので、主な使用ケースは各プレイヤーにネットワークスポーンオブジェクト(キャラクターまたはアバター)がありそこにオーディオが配置されつつ、Fusionでスポーンしたプレイヤーアバターにはカップリングされていない別のオブジェクトにもオーディオソースを配置できるというケースです。

オーディオストリームは、Fusionの上で転送したり、Fusionを使用したりしないことをお勧めします。 その代わり、別接続のパラレルクライアントを使えば、実際のアプリケーションデータトラフィックとオーディオトラフィックを簡単に切り離すことができます。 また、音声インフラとゲームインフラが分離しているゲームでは、この方法が最も一般的なボイスチャットの方法です。

また、Fusion-Voiceの統合は任意ですが、推奨されていることをお伝えしておきます。 この統合を行わなくても、FusionでPhoton Voiceを使用することは可能です。 しかし、FusionとPhoton Voiceの統合は、自分で手動で行う必要があります。

トップに戻る

Key Components

FusionVoiceBridge

FusionVoiceBridgeは、VoiceのVoiceConnectionとFusionのNetworkRunnerを必要とします。 その名の通り、この2つの間の橋渡しをします。 以下に、その機能を説明します。

  • 以下のことを行いVoiceとFusionのクライアントの状態を同期させます。
    • Fusionがセッションに参加した時に、Voiceクライアントがvoiceルームに参加する。
    • Fusionがセッションに参加したときに、Voiceクライアントがルームを出て、切断される。
  • Fusionに最適なSpeakerFactoryを設定する。
  • Fusion と Voice で、同じ AppSettingsAuthenticationValues を共有できるようにする。

トップに戻る

FusionSpeakerFactory

1つのオーディオストリームには、両端に1つずつ、Recorder (入力、録音、送信、発信) と Speaker (受信、再生、出力) の2つのコンポーネントがあります。 Fusionインテグレーションを使用する場合、このペアはFusionの NetworkObject.Id (NetworkBehaviour から得られる NetworkId 型) を介してリンクされます。 NetworkIdは、Photon Voiceクライアントで ulong としてシリアライズされます。 FusionVoiceBridgeNetworkId をカスタムシリアライズタイプとして登録します。

新しいファクトリーは、オーディオストリームメタデータのカスタムユーザーデータオブジェクトとして交換された NetworkObject.Id を使って、オーディオストリーム情報に適した Speaker を探そうとします。

トップに戻る

Fusion設定を使用する

Voiceクライアントが、FusionのPhotonAppSettingsと同じAppSettingsを使用するかどうかを決定する設定です。 デフォルトでは true (有効) です。

トップに戻る

Fusion Auth Valuesを使用する

Voiceクライアントが、FusionのnetworkRunner.AuthenticationValueと同じAuthenticationValuesを使用するかどうかを決定する設定です。 デフォルトでは true (有効) になっています。 このため、Voiceアプリケーションでは、Fusionアプリケーションと同じカスタム認証ダッシュボードの設定を行う必要があります。 ただし、認証プロバイダによっては、認証リクエストごとにnonce(一意のワンタイムシークレット)を発行するようクライアントに要求するものがあります。 そのため、FusionとPhoton Voiceの間で認証値を共有することはできず、voiceクライアントを接続する前に、voiceクライアントのAuthenticationValuesを(VoiceConnection.Client.AuthValuesを介して)手動で設定しなければなりません。

トップに戻る

VoiceNetworkObject

VoiceNetworkObject は、ネットワークを介した Fusion プレハブの RecorderSpeaker のセットアップを担当するコンポーネントです。 必要な時に RecorderInUseSpeakerInUse がセットアップされるようにします。

トップに戻る

レコーダーの設定

VoiceNetworkObject が使用する Recorder を設定するために、以下のステップを実行します。

  1. Recorder が必要であるかどうかを確認する。
  2. 適切な Recorder を探す。
  3. 見つからなかったら、Recorder を作成する。
  4. Recorder の UserData に、相対する NetworkObjectNetworkId を設定する。
  5. Recorder がまだ初期化されていない場合は、初期化する。
  6. 必要であれば、Recorder を再起動する。

トップに戻る

スピーカーの設定

VoiceNetworkObject が使用する Speaker を設定するために、以下のステップを実行します。

  1. Speaker が必要であるかどうかを確認する。
  2. 適切な Speaker を探す。
  3. 見つからなかったら、Speaker を作成する。
  4. Speaker に関連付けられた AudioSource が再生可能かどうかをチェックする。

トップに戻る

インポート手順

Photon VoiceのUnityの必要最小バージョンは2018.4、FusionのUnityの必要最小バージョンは2020.3です。 そのため、VoiceとFusionの連携にはUnity 2020.3が必要です。

トップに戻る

Fusionのインポート

すでにFusionをプロジェクトに導入している場合は、この作業はスキップできます。

  1. Fusionをダウンロードし、インポートします(~~/getting-started/sdk-download)。
  2. "Fusion" -> "Realtime Settings "のメニューから、Photon App Settingsを開きます。
  3. FusionタイプのAppIdを取得し、Realtime Settingsに設定します。App Id Fusion を設定します。

トップに戻る

Photon Voiceのインポート

すでにPhoton Voiceをプロジェクトに組み込んでいる場合は、この作業は省略できます。

Photon Voice 2をUnity Package ManagerまたはUnity Asset Storeからインポートする

  • Photon Chatを使用しない場合は、"PhotonPhotonChat "のチェックを外してください。
  • PUNは不要なので、これらのフォルダのチェックを外してください。
    • "Photon\PhotonUnityNetworking"
    • "Photon\PhotonVoice\Code\Pun"
    • "Photon\PhotonVoice\Demos"

なお、Photon Voiceに含まれるPUN (instructions) やPhoton Chat (instructions) は後でショートカットメニューで取り外すことが可能です。

トップに戻る

Weaverの設定を更新する

  1. まず、"Fusion" -> "Network Project Config" というショートカットメニューから、Network Project Config を開きます。
  2. Config を展開または開きます。
  3. 次に、Weaving Settingsを展開または開きます。
  4. Assemblies To Weaveの下にある「+」ボタンで、製織するアセンブリのリストに1つアイテムを追加してください。 5. 新たに作成したアイテムで、利用可能なアセンブリのドロップダウンリストから、PhotonVoice.Fusionを選択します。
  5. 最後に、Apply をクリックします。

トップに戻る

推奨されるワークフロー

以下の手順は、FusionプロジェクトにVoiceを追加するための、最も簡単で迅速な推奨手順です。

シーン設定(FusionVoiceBridge)

  1. FusionのPhotonAppSettingsから、AppSettingsにVoice AppIdを設定します。
  2. NetworkRunnerと同じGameObjectに、FusionVoiceBridgeVoiceConnectionを追加します。
  3. Recorder を追加し、VoiceConnection.PrimaryRecorder にアサインします。
  4. Recorder が必要な時に録音と送信を開始できるようにします (AutoStartRecordOnlyWhenJoinedRecordOnlyWhenEnabledTransmitEnabled)。

トップに戻る

プレハブ設定(VoiceNetworkObject)

  1. FusionプレハブのGameObjectに、NetworkBehaviourを付けて、VoiceNetworkObjectを追加します。
  2. VoiceNetworkObject.UsePrimaryRecordertrueに設定します。
  3. プレハブにSpeakerを追加し、VoiceNetworkObject.SpeakerInUseにアサインします。
  4. ショートカットメニューから、Fusionにプレハブが認識されていることを確認します。"Fusion" -> "Rebuild Object Table "で、Fusionにプレハブが認識されていることを確認します。

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