Network Project Config
概要
Network Project Config
は、Photon Fusionを導入したプロジェクトに影響を与える様々な情報やパラメーターを保持するアセットです。
- バージョン
- モード
- デフォルトのプレイヤー数
- ネットワーク状況のテスト
- 暗号化
- プレハブ情報の表示
このアセットはAssets/Photon/Fusion/Resources/NetworkProject.Config.fusion
にあります。UnityエディターのトップメニューのTools > Fusion > NetworkProjectConfig
からアクセスすることもできます。アセットを変更した後は適用する必要があるため、下部の「Apply」ボタンを押すか、変更を保存する確認ダイアログを承認してください。

Fusion Version
このセクションでは、現在使用中のFusionのバージョンが表示されます。ドロップダウンを展開すると、Fusionが使用しているダイナミックリンクライブラリ(DLL
)の詳細が表示されます。
Physics
Fusion 2.1.x以降から、Physics Forecast
を有効にすることで、Rigidbody
に対するNetworkTransform
の補外が可能になります。これによって、オブジェクトにローカル時間を適用して、すべてのクライアント上でスムーズなインタラクションを行うことができます。
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 Guard
:NetworkObject
が一度もアクティブにならずに破棄された場合に発生する問題を回避するため、NetworkObjectInactivityGuard
という名前のゲームオブジェクトがNetworkObject
のOnDestroy
を監視します。このオプションを有効にすると、NetworkObjectInactivityGuard
はヒエラルキーに表示されません。Allow Client Server Modes in WebGL
: 共有モードにはホストモードのようなWebGLの制限がないため、この設定は使用しません。
Network
Connection Timeout
:更新を受信できなくなってから切断するまでの時間(秒)です。サーバーは更新を受信できないクライアントを切断します(クライアントは更新を受信できないサーバーから切断されます)。Connecting Shutdown Time
:接続ステータスがシャットダウンになった後、接続周りのリソースが解放されるまでの時間(秒)です。
Reliable Data Transfer Modes
:データ転送の信頼性を決定しますClient to Server
:クライアントからサーバーへのデータ転送の信頼性が確保されますClient to Client With Server Proxy
:サーバープロキシを使用したクライアント間のデータ転送の信頼性が確保されます
Encryption
FusionのプロジェクトのEncryption
(暗号化)の有効/無効を切り替えます。Photon App Settings
のEncryption 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.NetworkBehaviour
がFusion.NetworkObject
に紐付けられているかのチェックを追加します。Check Rpc Attribute Usage
:有効にすると、IL Weaverは、Fusion.RpcAttribute
に対応していない型が使用されていないかをチェックします。例えば、Fusion.RpcAttribute
がUnity.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
が有効になっている)プレハブを詳細に確認できます。

ウインドウのメインツールバーには、以下の機能があります。
Refresh
:リストをリフレッシュし、新しいプレハブが追加された場合はリストが更新されますSync Selection
:有効にすると、Unityで選択したプレハブアセットが、ウインドウでハイライトされますLoaded Only
:有効にすると、ロード済みのプレハブのみが表示されます
ウインドウの各行は異なるプレハブを表し、各列は以下を表します。
State
:プレハブがロード済みかどうかを示しますType
:プレハブの種類(ロード方法)を示しますR
:Resources
フォルダにあるプレハブですSL
:Resources
フォルダ外にある静的なプレハブですA
:Addressable
でロードされるプレハブです
PrefabId
:Fusionによってプレハブに割り当てられたIDですPath
:プレハブのファイルパスです