クイックスタートガイド

Preview

Fusion Unreal SDK 3.0.0は開発版として提供されており、リリース済みで運用中のゲームでの使用は想定していません。プレビュー段階では、重大なバグやAPIに破壊的変更が加わる可能性があります。

はじめに

このドキュメントは、Fusion Unrealを使用して開発を始めるためのクイックリファレンスです。ここでは、三人称視点ゲームの移動をネットワーク化するプロセスを解説し、Photon Fusion for Unrealの主要な機能をいくつか紹介します。

このガイドはUnreal 5.6のテンプレートを元に作成されていますが、使用されているアプローチや手法は、Photon FusionがサポートしているすべてのUnrealバージョンに適用可能です。

Characters in a networked version of the Third Person template
Characters in a networked version of the Third Person template

新規プロジェクトの作成

Unreal 5.6で新しいUnrealプロジェクトを作成し、Third Personテンプレートを選択します。プロジェクトは、BlueprintでもC++でもどちらでも構いません。

Photon Fusionプラグインのセットアップ

新規または既存のプロジェクトにFusion Unrealをセットアップするには、

  1. (まだ存在しなければ)Unrealプロジェクトフォルダー内にPluginsフォルダーを作成します。
  2. Fusion Unrealプラグインをダウンロードします。
  3. Fusion Unrealプラグインを解凍し、PhotonFusionフォルダーをPluginsフォルダーにコピーします。
  4. プロジェクトを開き、PluginsウィンドウでPhoton Fusionプラグインが有効になっていることを確認します。
  5. Project SettingsのFusion Settingsを開き、AppIDを設定します。AppIDの作成方法についてはこちら

Photonへの接続とルームへの参加

まず最初に、Photonのルームへ参加してFusionのセッションを開始する必要があります。以下のブループリントノードを使用すると、Photonに接続してルームの参加/作成が可能です。これらのBPノードを使用すると、ルーム参加後にFusionのセッションが自動的に開始され、クライアント間のステートを複製できるようになります。

アクタのブループリントとしてBP_FusionSetupを作成し、以下のBPロジックをイベントグラフのBeginPlayに追加します。

BP logic for connecting to Photon and joining a room
BP logic for connecting to Photon and joining a room

Room Nameには任意の文字列を使用可能で、InitialWorldにはLvl_ThirdPersonを設定します。今回の単純なケースでは不要ですが、ConnectOptionsからRegionオプションを設定することができます。

最後に、Lvl_ThirdPersonマップの任意の場所にBP_FusionSetupを追加すると、ゲーム開始直後にルーム参加ロジックが実行されるようになります。

アクタの複製

アクタを複製対象にするには、Replicatesを有効にしてFusion Actor Componentを追加する必要があります。

Fusion Actor Componentにはゲームに応じて調整可能なプロパティが複数用意されていますが、一般的なシナリオではデフォルト設定で十分良好に動作します。

  1. Class DefaultsReplicatesが有効になっていることを確認します。
  2. BP_ThirdPersonCharacterを開き、Fusion Actor Componentを追加します。
  3. Fusion Actor ComponentOwnershipドロップダウンでPlayer Attachedを選択します。

アクタの所有権をPlayer Attachedに設定すると、プレイヤーがルームから退出した際にアクタが破棄されるようになります。

テスト方法

基本的なキャラクター移動を複製するための準備は完了しています。

Lvl_ThirdPersonマップを開き、複数のPIEウィンドウでゲームを起動してください。

プレイボタンを押すと、マップ上にすべてのキャラクターが表示されます。ウィンドウを切り替えながら、各プレイヤーを移動させてみてください。各キャラクターがすべてのクライアント視点で移動する様子が見られるはずです。

おめでとうございます!これでPhoton Fusionを使用した初めてネットワーク体験が作成できました!

プロパティの複製

Photon Fusionが、Unreal標準のレプリケーションをサポートしてる点を活用し、プレイヤーキャラクターの色を変更する機能を追加してみましょう。この変更は、すべてのクライアントに反映されます。

BP_ThirdPersonCharacterに以下のロジックを追加して、Pキーが押された際に新しいキャラクターの色をランダムに生成・保存します。Linear color変数をPaint Tintと命名して、レプリケーション設定をRepNotifyにしてください。

BP logic for setting the PaintTint
BP logic for setting the PaintTint

RepNotify関数には以下のロジックを追加します。Paint Tint変数は、マテリアルの対応パラメーターを設定するために使用されます。(ここでは簡単のため、ダイナミックマテリアルを使用していますが、一般的にはキャッシュするのがベストプラクティスです)

PaintTint On Rep BP logic
PaintTint On Rep BP logic

これでプレイヤーの色の変更が各プレイヤーに複製されるはずです。

ここでは1つの変数型のみを複製していますが、Photon FusionはRepNotifyの有無にかかわらず、すべての変数型をサポートしています。

ゲーム中にPキーを押すと、ランダムに選択された色がキャラクターに適用されます。この色の変更は、他のクライアントにも複製されます。

物理オブジェクトの追加

Photon Fusionが提供するForecastモードによって、物理オブジェクトのステートがクライアント間で同期できます。外挿法(Extrapolation)を用いて、オブジェクトのリモートステートを予測し、それをローカルステートや物理シミュレーションと組み合わせます。

ルートシーンオブジェクトにStaticMeshを持つSimulate Physicsが有効なアクタは、デフォルトでForecastを使用します。Fusion Actor Componentコンポーネントから、必要に応じてForecastを無効にすることも可能です。

  1. Bp_Ballという名前で、新しいStaticMesh BP Actorを作成します。
  2. アクタのReplicatesを設定して、複製が有効になっていることを確認してください。
  3. メッシュを球状に設定し、Simuate Physicsオプションが有効になっていることを確認してください。
  4. Fusion Actor Componentを追加します。
  5. Fusion Actor ComponentAuto Dynamic Ownership Rangeを500に調整します。
  6. BP_Ballをマップにドラッグします。

Auto Dynamic Ownership Rangeは、プレイヤーの距離に基づいて、アクタの所有権を自動的に調整するために使用されます。この範囲内のプレイヤーにBP_Ballの所有権が割り当てられ、他のクライアントは外挿法に基づくリモートステートになります。

この範囲チェックは、値を0に設定することで無効化できます。その場合は必要に応じて、FusionOnlineSubsystemSetWantsOwner(Actor)を手動で呼び出すことになります。

Players interacting with the physics based object
Players interacting with the physics based object

RPC

Photon Fusionは、Unreal標準のレプリケーションイベントをサポートしていますが、分散権限アーキテクチャに適したカスタムFusion RPCもサポートしています。

RPCの詳細な情報については、RPC詳説をご覧ください。

以下の手順の例では、Eキーを押すたびにプレイヤーの足元に爆発エフェクトを生成するRPCを作成しています。

  1. プロジェクトに(まだインポートされていない場合は)StarterContentパックを追加してください。これによって、爆発エフェクトが使用可能になります。
    • Content Browserから:Add -> Add Feature or Content Pack -> Content -> Starter Content
  2. BP_ThirdPersonCharacterを開きます。
  3. SpawnExplosionRPCという名前で、Vector入力パラメーターを持つ新しいCustom Eventを作成します。そして以下の図のようなロジックを追加します。
  4. イベントグラフを右クリックし、Custom Fusion RPCを作成します。
  5. Custom Fusion RPCのDetailsパネルで、Reference Event NameドロップダウンからSpawnExplosionRPCイベントを選択します。
  6. Custom Fusion RPCノードをEキーボードイベントに接続します。
RPC BP logic
RPC BP logic

ゲームを再生すると、Eキーを押すたびに爆発エフェクトが表示されることが確認できます。

Players triggering the explosion RPC
Players triggering the explosion RPC
Back to top