Network Project Configuration
はじめに
NetworkProjectConfig
はUnityのアセットクラスで、個々のゲームセッションで使用するFusionの設定を保存します。クライアントサーバーモードの場合、設定はランタイム時にサーバーによって強制されます。共有ゲームの場合は、Photonサーバープラグインが使用する設定を共有します。
設定にはさまざまな種類があり、特定のゲームモードを使用する際に排他的になるものもあります(必須のものもあります)。例:インタレストマネジメントの設定は、Eventual Consistency転送モードを使用しているときにのみ有効。同時に、Delta Snapshotsモードは、クライアント・サーバーモードでのみ利用可能、など。
シーン設定
Peer Mode
Single
メインのアクティブなシーンが1つだけ読み込まれます。ゲームビルド実行時のデフォルト設定です。Multiple
複数のピア(サーバーまたはクライアント)が、同じエディタ/ビルドインスタンスで同時にゲームシーンを読み込みます。主に開発/デバッギングに使用されます。
Scenes
は、Unityのビルド設定で有効になっているシーンのリストを保持します。Fusionでは、自動読み込みのために、これらをインデックス化する必要があります。
物理設定
Physics Engine
は、物理シミュレーションのステッピングをFusionに任せるかどうかを定義します。Physics 3D
PhysXは、FixedUpdateNetwork()
でFusionが直接ステップします。Physics 2D
UnityのBox2Dは、FixedUpdateNetwork()
でFusionが直接ステップします。None
Fusionは物理のステップを行わず、Unityが処理します。これは通常、物理を全く必要としないゲームや、よりシンプルな共有モードのアプリケーションでのみ使用されます。
Prediction Mode
Server Only
物理は、FixedUpdateNetworkからの新しいティックを転送する際にのみステップされます。再シミュレーションは物理エンジンに影響を与えません。Client Prediction
物理は、クライアント上で完全に予測されます(サーバーとの調整のためにロールバックされます)。これはより負荷がかかり(PhysXシーンのリセットのため)、WYSIWYGな物理サンドボックス体験を提供したいゲームでは慎重に使用する必要があります。
オブジェクトの設定
シミュレーション
ティックレート
ティックは離散的な時間を表し、特定のホスト上での「実際の」時間経過とは切り離されています。例えば、チックレートを1/60秒と定義した場合、これがシミュレーションで使用されるタイムステップとなります。ハードウェアクロックの代わりに目盛りを使用することで、ネットワークセッションのすべての参加者が「時間」に関する共通の基準フレームを共有することができます。これは、未来や過去の出来事を正確に推論するために重要です。
裏では、Fusionは希望のティックレートにできるだけ忠実であろうとします。サーバーから与えられた正しいティックタイムに同期するために、ミクロな補正を行うこともあります。Fusionは、複数のシミュレーションステップを連続して実行し、更新された古い状態から新しい現在の状態を確立する再シミュレーションも行います。
レプリケーションモード
ゲームのReplication Mode
(別名:state transfer mode)は、NetworkProjectConfig
アセットのSimulation
セクションで定義します。
APIはすべてのレプリケーションモードで同一であるため、同じゲームとコードを使用して、異なるレプリケーションモードを使用する異なるゲームインスタンスを実行することができます。これにより、開発者は開発の後半でレプリケーションモードを選択したり、切り替えたりすることができます。
デルタスナップショット
Delta Snapshots
は、サーバーの信頼性が高く、非常に効率的なデルタ圧縮を使用して完全なワールドスナップショットを転送します。Delta Snapshots
では、すべてのクライアントが継続的にティックの正確なデータを受け取ることができます。このモードは、プレイヤー数が少なく、テンポの速い対戦型ゲーム(例:10人チームベースのFPS)に最適です。
このモードは、専用サーバーまたはプレイヤーホストによって開始されたゲームでのみ使用できます(共有クラウドゲームでは使用できません)。
Eventual Consistency
Eventual Consistency
モードでは、「Area of Interest」(関心領域)が追加されるため、多くのNetworkObject
(ネットワークオブジェクト)や複雑な世界を持つゲーム(サバイバルゲームやバトルロワイヤルゲームなど)に適しています。
Server Auth
:
このモードは、専用サーバーまたはプレイヤーホストによって開始されたゲームでのみ使用できます(共有クラウドゲームでは使用できません)。
Client Auth
: Photonクラウド上の共有ゲームでは、クライアントの権限を持つECが使用されます。関心領域はPhoton Serverプラグインが管理します(NetworkTransform
またはNetworkRigidbody
コンポーネントを持つ全てのGameObjectに対して自動的に)