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
)の詳細が表示されます。
Scene Settings
Peer mode
:Single
:通常のユースケースとして、ビルドやエディター上で単一のピア(サーバー/ホスト/クライアント)を実行しますMultiple
:エディター上で複数のピアを有効にできます
Peer Mode
をMultiple
に設定すると、複数のピアが接続するセッションを、ビルドを作成せずにテストするのに役立ちます。
詳細はマルチピアモードをご覧ください。
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 Guard
:NetworkObject
が一度もアクティブにならずに破棄された場合に発生する問題を回避するため、NetworkObjectInactivityGuard
という名前のゲームオブジェクトがNetworkObject
のOnDestroy
を監視します。このオプションを有効にすると、NetworkObjectInactivityGuard
はヒエラルキーに表示されません。
Simulation
Fusionのシミュレーションの挙動を設定します。
Replication Features
:None
:デフォルトの設定です。ゲームプレイを通して、ティック毎のデータ制限を超えないなら、これが最適です。Scheduling
:ティック毎のデータ制限に達すると、一部のネットワークオブジェクトの(サーバーからクライアントへの)複製がカリングされます。カリングされたオブジェクトは、次のTick
の更新で優先度が上がります。Scheduling and Interest Management
:Scheduling
に加えて、インタレストマネジメント機能(Area of Interest
やExplicit 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 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
:プレハブのファイルパスです