クイックスタートガイド
Fusion Unreal SDK 3.0.0は開発版として提供されており、リリース済みで運用中のゲームでの使用は想定していません。プレビュー段階では、重大なバグやAPIに破壊的変更が加わる可能性があります。
はじめに
このドキュメントは、Fusion Unrealを使用して開発を始めるためのクイックリファレンスです。ここでは、三人称視点ゲームの移動をネットワーク化するプロセスを解説し、Photon Fusion for Unrealの主要な機能をいくつか紹介します。
このガイドはUnreal 5.6のテンプレートを元に作成されていますが、使用されているアプローチや手法は、Photon FusionがサポートしているすべてのUnrealバージョンに適用可能です。
新規プロジェクトの作成
Unreal 5.6で新しいUnrealプロジェクトを作成し、Third Personテンプレートを選択します。
Photon Fusionプラグインのセットアップ
新規または既存のプロジェクトにFusion Unrealをセットアップするには、
- (まだ存在しなければ)Unrealプロジェクトフォルダー内に
Pluginsフォルダーを作成します。 - Fusion Unrealプラグインをダウンロードします。
- Fusion Unrealプラグインを解凍し、
PhotonFusionフォルダーをPluginsフォルダーにコピーします。 - プロジェクトを開き、Pluginsウィンドウで
Photon Fusionプラグインが有効になっていることを確認します。 - Project Settingsの
Fusion Settingsを開き、AppIDを設定します。
Photonへの接続とルームへの参加
まず最初に、Photonのルームへ参加する必要があります。Fusion Online Subsystemを使用することで、Photonに接続してルームを作成/参加することが可能です。ルームへ参加すると、クライアント間のステートが複製できるようになります。
アクタのブループリントとしてBP_FusionSetupを作成し、以下のBPロジックをイベントグラフのBeginPlayに追加します。
Room Nameには任意の文字列を使用可能で、Regionには適切な値(現在利用可能:eu,us,asia)を設定します。
最後に、Lvl_ThirdPersonマップの任意の場所にBP_FusionSetupを追加すると、ゲーム開始直後にルーム参加ロジックが実行されるようになります。
アクタの複製
アクタを複製対象にするには、Replicatesを有効にしてFusion Actor Settingsコンポーネントを追加する必要があります。Fusion Actor Settingsにはゲームに応じて調整可能なプロパティが複数用意されていますが、一般的なシナリオではデフォルト設定で十分良好に動作します。
ここでは、三人称視点キャラクターを複製します。
BP_ThirdPersonCharacterを開き、Fusion Actor Settingコンポーネントを追加してください。現段階でプロパティを調整する必要はありません。また、Replicatesが有効になっていることを確認してください。
テスト方法
Editor PreferencesのRun Under One Processオプションを無効にして、各PIEウィンドウが独自プロセスで実行されるようにしてください。
基本的なキャラクター移動を複製するための準備は完了しています。ただし、複数のPIEクライアントでテストできるようにするには、いくつかのエディター設定を調整する必要があります。
Run Under One Processオプションを無効にして、各PIEウィンドウが独自プロセスで実行されることを確認してください。- Editor Preferences -> Level Editor -> Play -> Multiplayer Options -> Run Under One Process
必須ではありませんが、
Use Less CPU when in Backgroundオプションを無効にすることを推奨します。- Editor Preferences -> General -> Performance -> Editor Performance -> Use Less CPU when in Background
Lvl_ThirdPersonマップを開き、複数のPIEウィンドウでゲームを起動してください。
プレイボタンを押すと、マップ上にすべてのキャラクターが表示されます。ウィンドウを切り替えながら、各プレイヤーを移動させてみてください。各キャラクターがすべてのクライアント視点で移動する様子が見られるはずです。
おめでとうございます!これでPhoton Fusionを使用した初めてネットワーク体験が作成できました!
プロパティの複製
スペースキーを押してジャンプしたり、崖から飛び降りたりすると、他のクライアントが見ているあなたのキャラクターでは、落下アニメーションが再生されていないことがわかります。
Photon Fusion for Unrealの将来のバージョンでは、Character MovementコンポーネントとMoverコンポーネントが改善され、この問題を手動で修正する必要は無くなります。しかしここでは、Fusionのプロパティ複製機能を示すために、修正手順を説明します。
EMovementModeステートをレプリケーション変数として保存するため、BP_ThirdPersonCharacterに以下のロジックを追加します。変数名はCurrentMovementModeにして、レプリケーション設定はRepNotifyにします。
RepNotify関数には、以下のロジックを追加します。すると、移動モードはレプリケーション変数に合わせて設定されます。
これで各キャラクターの移動モードが複製されるようになりました。
ジャンプしたり崖から飛び降りたりすると、すべてのクライアント上で落下アニメーションが再生されることが確認できます。
物理オブジェクトの追加
Photon Fusionが提供するForecastモードによって、物理オブジェクトのステートがクライアント間で同期できます。補外法(Extrapolation)を用いて、オブジェクトのリモートステートを予測し、それをローカルステートや物理シミュレーションと組み合わせます。
ルートシーンオブジェクトにStaticMeshを持つSimulate Physicsが有効なアクタは、デフォルトでForecastを使用します。必要に応じて、Fusion Actor SettingsコンポーネントからForecastを無効にすることも可能で、その場合は(有効であれば)標準の補間が使用されます。
Bp_Ballという名前で、新しいStaticMesh BP Actorを作成します。- アクタの
Replicatesを設定して、複製が有効になっていることを確認してください。 - メッシュを球状に設定し、
Simuate Physicsオプションが有効になっていることを確認してください。 Fusion Actor Settingsコンポーネントを追加します。Fusion Actor SettingsコンポーネントのAuto Dynamic Ownership Rangeを500に調整します。BP_Ballをマップにドラッグします。
Auto Dynamic Ownership Rangeは、プレイヤーの距離に基づいて、アクタの所有権を自動的に調整するために使用されます。この範囲内のプレイヤーにBP_Ballの所有権が割り当てられ、他のクライアントは補外法に基づくリモートステートになります。
この範囲チェックは、値を0に設定することで無効化できます。その場合は必要に応じて、FusionOnlineSubsystemのSetsWantsOwner()を手動で呼び出すことになります。
RPC
Photon Fusionは、カスタムFusion RPCをサポートしています。以下の手順の例では、Eキーを押すたびにプレイヤーの足元に爆発エフェクトを生成するRPCを作成しています。
- プロジェクトに(まだインポートされていない場合は)
StarterContentパックを追加してください。これによって、爆発エフェクトが使用可能になります。- Content Browserから:Add -> Add Feature or Content Pack -> Content -> Starter Content
BP_ThirdPersonCharacterを開きます。SpawnExplosionRPCという名前で、Vector入力パラメーターを持つ新しいCustom Eventを作成します。そして以下の図のようなロジックを追加します。- イベントグラフを右クリックし、
Custom Fusion RPCを作成します。 Custom Fusion RPCのDetailsパネルで、Reference Event NameドロップダウンからSpawnExplosionRPCイベントを選択します。Custom Fusion RPCノードをEキーボードイベントに接続します。
ゲームを再生すると、Eキーを押すたびに爆発エフェクトが表示されることが確認できます。