This document is about: FUSION 2
SWITCH TO

Network Project Config

概要

Network Project Configは、Photon Fusionを導入したプロジェクトに影響を与える様々な情報やパラメーターを保持するアセットです。

  • バージョン
  • モード
  • デフォルトのプレイヤー数
  • ネットワーク状況のテスト
  • 暗号化
  • プレハブ情報の表示

このアセットはAssets/Photon/Fusion/Resources/NetworkProject.Config.fusionにあります。UnityエディターのトップメニューのTools > Fusion > NetworkProjectConfigからアクセスすることもできます。アセットを変更した後は適用する必要があるため、下部の「Apply」ボタンを押すか、変更を保存する確認ダイアログを承認してください。

Default view of the Network Project Config Asset.
Network Project Configアセットのデフォルト表示

Fusion Version

このセクションでは、現在使用中のFusionのバージョンが表示されます。ドロップダウンを展開すると、Fusionが使用しているダイナミックリンクライブラリ(DLL)の詳細が表示されます。

Scene Settings

  • Peer mode
    • Single:通常のユースケースとして、ビルドやエディター上で単一のピア(サーバー/ホスト/クライアント)を実行します
    • Multiple:エディター上で複数のピアを有効にできます

Peer ModeMultipleに設定すると、複数のピアが接続するセッションを、ビルドを作成せずにテストするのに役立ちます。
詳細はマルチピアモードをご覧ください。

Lag Compensation

Lag Compensation(ラグ補償)を有効にすると、プレイヤー視点による当たり判定の精度が向上するため、FPS(一人称視点のシューティング)などのハイペースなゲームで非常に便利です。これは、ヒットボックスのスナップショットの履歴を保持することで行われます。各スナップショットに含める情報量は、ユーザー側で設定でき、当たり判定の精度に影響を与えます。

ラグ補償はホストモードでのみ利用可能です。
  • Hitbox Buffer Length In Ms:ヒットボックスのデータを格納するバッファの長さをミリ秒で指定します。長いほど、ヒットボックスのスナップショットが最新のものに上書きされずに残ることになります。
  • Hitbox Default Capacity:各スナップショットに格納できるヒットボックスの個数(デフォルト)で、最小は16です。
  • Cached Static Colliders Size:デフォルトのラグ補償クエリで使用される、静的コライダー(PhysX/Box2D)のキャッシュ配列サイズです。

詳細はラグ補償をご覧ください。

Miscellaneous

このセクションでは、Fusionのプロジェクトに関する補助的なパラメーターを設定できます。

  • Enqueue Incomplete Synchronous Spawns:有効にすると、未完了の同期スポーン(Addressablesなど)は、例外をスローするかわりに、キューに追加されます。これはFusion.NetworkSpawnStatus.Queuedを返し、次のフレームでオブジェクトのスポーンを試みます。Fusion 1.xからの移行時に、有効にすると便利です。
  • Invoke Render In Batch Mode:有効にすると、Unityのバッチモード再生時にFusion.SimulationBehaviour.Renderコールバックが呼び出されます。バッチモードで実行するには、Unityのコマンドライン引数に-batchmodeを渡します。バッチモードで動作するヘッドレスサーバーを使用する場合は、無効にすると便利です。詳細はUnityのバッチモードをご覧ください。
  • Network Id Is Object Name:有効にすると、新規にスポーンしたオブジェクトの名前にネットワークIDが追加され、[Network Id] Original Object Nameのようになります。
  • Hide Network Object Inactivity GuardNetworkObjectが一度もアクティブにならずに破棄された場合に発生する問題を回避するため、NetworkObjectInactivityGuardという名前のゲームオブジェクトがNetworkObjectOnDestroyを監視します。このオプションを有効にすると、NetworkObjectInactivityGuardはヒエラルキーに表示されません。

Simulation

Fusionのシミュレーションの挙動を設定します。

  • Replication Features
    • None:デフォルトの設定です。ゲームプレイを通して、ティック毎のデータ制限を超えないなら、これが最適です。
    • Scheduling:ティック毎のデータ制限に達すると、一部のネットワークオブジェクトの(サーバーからクライアントへの)複製がカリングされます。カリングされたオブジェクトは、次のTickの更新で優先度が上がります。
    • Scheduling and Interest ManagementSchedulingに加えて、インタレストマネジメント機能(Area of InterestExplicit Interest)が有効になります。詳細はインタレストマネジメントをご覧ください。
  • Input Transfer Mode:入力の転送方法を決定します
    • Redundancy:デルタ圧縮と冗長化を施した入力を送信します。多くのゲームに適しています。
    • Latest State:最新の入力のみを送信します。VRのような大きい入力構造体(頭や手の位置データを含むなど)を利用するゲームに適しています。
  • Player Count:デフォルトのプレイヤー数(1~255)です。セッション開始時にプレイヤー数を指定しなかった場合は、この値が使用されます。
共有モードでは、Client Tick Rateは32、Client Send Rateは16が常に適用されることに注意してください。
  • Client Tick Rate:クライアントのティックレートです。ドロップダウンから値(8~256)を選択できます。
  • Client Send Rate:クライアントがサーバーにデータを送信するレートで、以下の設定が可能です。
    • 1/8:クライアントのティックレートが240以上の時のみ適用可能
    • 1/4:クライアントのティックレートが4の倍数の時のみ適用可能
    • 1/2
    • 1:1:クライアントのティックレートと同じ値になります
  • Server Tick Rate:サーバーが更新されるレートです。Client Send Rateと同じ選択肢があります。
  • Server Send Rate:サーバーがクライアントにデータを送信するレートです。Client Send Rateと同じ選択肢がありますが、Server Tick Rateよりは大きくできません。

Network

  • Connection Timeout:更新を受信できなくなってから切断するまでの時間(秒)です。サーバーは更新を受信できないクライアントを切断します(クライアントは更新を受信できないサーバーから切断されます)。
  • Connecting Shutdown Time:接続ステータスがシャットダウンになった後、接続周りのリソースが解放されるまでの時間(秒)です。
    Reliable Data Transfer Modes:データ転送の信頼性を決定します
    • Client to Server:クライアントからサーバーへのデータ転送の信頼性が確保されます
    • Client to Client With Server Proxy:サーバープロキシを使用したクライアント間のデータ転送の信頼性が確保されます

Host Migration

ホストマイグレーションの挙動を設定します。

  • Enable Auto Update:有効にすると、ホストマイグレーションが自動的に更新されます
  • Update Delay:ホストマイグレーションのスナップショットが、Photon Cloudにアップロードされるまでの時間(秒)です

Encryption

FusionのプロジェクトのEncryption(暗号化)の有効/無効を切り替えます。Photon App SettingsEncryption Modeを合わせて更新する必要があることに注意してください。
詳細は接続の暗号化をご覧ください。

Network Conditions

この設定で、異なるネットワーク状況(遅延やパケットロス)をシミュレーションしたりテストしたりすることが可能です。

  • Enabled:有効にすると、以下のオプションが表示されます
  • Delay Shape:遅延の波形パターンを設定します
    • Noise
    • Sine
    • Square
    • Triangle
    • Saw
    • Reverse Saw
  • Delay Min:最小の遅延秒数(0~0.5)
  • Delay Max:最大の遅延秒数(0~0.5)
  • Delay Period:遅延の周期の秒数
  • Delay Threshold:波形パターンの値がしきい値(0~1)未満になると、遅延はDelay Minになる
  • Additional Jitter:波形パターンから遅延の値が決定された後、その値にランダムな値(0~設定値)が追加される
  • Loss Chance Shape:ロスの波形パターンを設定します(選択肢はDelay Shapeと同じです)
  • Loss Chance Min:パケットロス率の最小値(0(0%)~1(100%))
  • Loss Chance Max:パケットロス率の最大値(0(0%)~1(100%))
  • Loss Chance Threshold:波形パターンの値がしきい値(0~1)未満になると、パケットロス率はLoss Chance Minになる
  • Loss Chance Period:パケットロス率の周期の秒数
  • Additional Loss:波形パターンからパケットロス率の値が決定された後、その値にランダムな値(0~正規化された設定値)が追加される

遅延とロスの設定は、値を秒数とパーセンテージで決定すること以外はほぼ同じで、パケットロス率は0%から100%でシミュレーションされます。

Heap

Fusionで使用するメモリの事前割り当て量を定義して、メモリ管理を最適化し、パフォーマンスを向上できます。

  • Page Shift:各Heap Pageのサイズ(1KB~256KB)を指定します。メモリ割り当ての粒度に影響し、サイズに比例してメモリ割り当て量は増加します。
  • Page Count:ヒープの初期ページ数(16~4096)を指定します。初期の合計メモリ割り当て量に影響します。

Weaver Settings

Fusion IL Weaverに影響する設定で、低レベルなネットコードを生成してAssembly-CSharp.dllに注入するために使用されます。

  • Assemblies to Weave:IL Weaver対象にするアセンブリのリストで、大文字小文字は区別しません。デフォルトで、以下が含まれます。
    • Fusion.Unity
    • Assemble-CSharp
    • Assembly-CSharp-firstpass
    • Fusion.Addons.Physics(プロジェクトでFusionの物理システムを使用する場合)
  • Use Serialized Dictionary:有効にすると、ネットワークプロパティの初期値の格納にFusion.SerializableDictionaryを使用します。無効にすると、IL WeaverはSystem.Generic.Dictionaryを使用します。System.Generic.DictionaryはUnityではシリアライズ不可能ですが、Odinなどの独自のシリアライズシステムに対応します。
  • Null Checks for Networked Properties:有効にすると、IL Weaverは、ネットワークプロパティを持つFusion.NetworkBehaviourFusion.NetworkObjectに紐付けられているかのチェックを追加します。
  • Check Rpc Attribute Usage:有効にすると、IL Weaverは、Fusion.RpcAttributeに対応していない型が使用されていないかをチェックします。例えば、Fusion.RpcAttributeUnity.MonoBehaviourのメソッドに追加されていた場合、ログに「RPCはFusion.NetworkBehaviour/Fusion.SimulationBehaviourにのみ追加できる」旨の警告が表示されます。すべての型をスキャンする必要があるため、IL Weavingとコンパイル時間が増加します。詳細はRPCをご覧ください。
  • Check Networked Properties Being Empty:有効にすると、不適切なFusion.NetworkedAttributeでプロパティを定義した時に、警告が表示されるようになります。以下のように、プロパティのgetter/setterは空にする必要があります。

C#

[Networked]
public int NetworkedProperty {get; set;}

詳細はネットワークプロパティをご覧ください。

Prefabs

プレハブをアンロードする挙動を設定できます。

  • Unload Prefab On Releasing Last Instance:有効にすると、インスタンスがすべて解放された時に、プレハブがアンロードされます
  • Unload Prefabs On Shutdown:有効にすると、シャットダウン時にすべてのプレハブがアンロードされます

プレハブのアンロードは、メモリ使用量の最適化目的では不要ですが、必要に応じて再ロードしたい場合には有効です。

Auto-Generated

自動生成された情報が表示されるセクションです。

  • Show Network Prefabs Inspector:プロジェクト内で、Fusion.NetworkObjectコンポーネントが付いている(Fusion.NetworkObject.IsSpawnableが有効になっている)プレハブを確認できるウインドウが開きます。
  • Prefabs:プロジェクト内の、NetworkObjectプレハブがリストされているドロップダウンリストです。このリストを直接更新することはできませんが、実行時にFusion.NetworkPrefabTable.TryAddSourceから、追加のプレハブを登録できます。
  • Behaviour Meta:プロジェクト内の、すべてのFusion.SimulationBehaviourのメタ情報(実行順など)を含むリストです。

Network Prefabs Inspector

前述した通り、Network Prefabs Inspectorでは、Fusion.NetworkObjectコンポーネントが付いている(Fusion.NetworkObject.IsSpawnableが有効になっている)プレハブを詳細に確認できます。

An example of the Network Prefabs Inspector.
Network Prefabs Inspectorの表示例

ウインドウのメインツールバーには、以下の機能があります。

  • Refresh:リストをリフレッシュし、新しいプレハブが追加された場合はリストが更新されます
  • Sync Selection:有効にすると、Unityで選択したプレハブアセットが、ウインドウでハイライトされます
  • Loaded Only:有効にすると、ロード済みのプレハブのみが表示されます

ウインドウの各行は異なるプレハブを表し、各列は以下を表します。

  • State:プレハブがロード済みかどうかを示します
  • Type:プレハブの種類(ロード方法)を示します
    • RResourcesフォルダにあるプレハブです
    • SLResourcesフォルダ外にある静的なプレハブです
    • AAddressableでロードされるプレハブです
  • PrefabId:Fusionによってプレハブに割り当てられたIDです
  • Path:プレハブのファイルパスです
Back to top