このページは編集中です。更新が保留になっている可能性があります。

Fusionイントロダクション

概要

Fusionは、Unityのための新しい高パフォーマンスな状態同期ネットワークライブラリです。単一のAPIで、専用サーバー、クライアントホスト型、共有/分散権限など、様々なネットワークアーキテクチャに対応します。

「シンプルさ」を大切に構築しており、Unityの代表的なワークフローとシームレスに統合できます。 また 、アドバンスト機能も搭載しているため、さまざまなユースケースに対応します。

Fusionでは、内蔵された調整機能を備えた、ティックベースのシミュレーションと状態スナップショットシステムを実装しています。これにより、FusionはUnity PhysXのような非決定論的なライブラリとシームレスに連携することができます。

クラウドベースの共有モード(以前のPUNのように各クライアントが自分のオブジェクトの全権限を持つ)の他に、Fusionには2つの完全なサーバー権限モードがあります。

  • 専用のヘッドレスUnityインスタンスを用いた厳密なクライアント/サーバー設定、または
  • クライアントの1つがサーバーとクライアント(ホスト)の両方の役割を果たす「Player-as-host」。

トップに戻る

PUN、Bolt、Fusionの比較

PUNとBoltは堅実なネットワーキング・ソリューションですが、そのアーキテクチャではさらなる最適化ができません。Fusionは、PUNとBoltの優れたコンセプトをすべて融合させるとともに、高性能なアーキテクチャーを一から構築し、最先端の機能をすぐに利用できるようにしました。次の図は、その改良点をまとめたものです。

Table - PUN vs Bolt vs Fusion
PUN vs Bolt vs Fusion

トップに戻る

最先端機能

Fusionでは、最新の機能がベースSDKに直接盛り込まれています。

  • Delta SnapshotEventual Consistency の状態転送モードです。Fusionは、a)圧縮された完全な状態(CPU負荷が非常に低い新しい独自のデルタ圧縮技術を使用)、またはb)制御されたチャンクでの状態変更(最終的な一貫性)のいずれかを転送することができます。このモードでは、すべてのインタレスト管理バリエーションも有効です。
  • クライアント側の予測とサーバー側の調整:内部のネイティブデータバッファを使用することで、Unityが保持するデータはレンダリングのために常に滑らかに保たれ、調整と補間は自動的に(またはカスタムで)処理されます。
  • 遅延補正:簡単に設定できるヒットボックスと、遅延補正された包括的なクエリAPIを組み合わせたもの。同期したアニメーションと組み合わせることで、ティックまたはサブティック精度の対戦用シューティングメカニクスを実現します。
  • RPC: 高パフォーマンスRPCは、FusionのAPIのファーストクラスのコンセプトです。
  • UnityMonoBehaviours用に作成: ゲームの状態は、Unityのビヘイビアの一部として完全に定義されています。シリアライズやその他の複雑なコードを書く必要はありません。ネスティングやバリアントなど、Unityの最新のプレハブ機能のすべてに対応しています。

トップに戻る

1つのライブラリで多くのアーキテクチャ

FUSIONは既存のPhotonステート転送製品(Bolt及びPUN)に置き換わるものとして開発されました。これらの製品が対応している全アーキテクチャに新機能が加えられています。

  • シングルプレイヤー:同じコードでローカルに。接続は不要。
  • 専用サーバー:完全なサーバー権限でUnityヘッドレスインスタンスを展開します。
  • クライアントホスト型: プレイヤーがホストする server + clientで、パンチスルー、フォールバックとしてのリレー、完全なホスト移行が組み込まれています(Photon Cloudがサポート)。
  • 共有モード: Photon Cloudに対するクライアントの権限は、データに基づいてサーバーが管理するスナップショットで、「Eventual Consistency」(EC)と関心事の管理(「AoI」:Area of Interest)を使用しており、高いプレイヤー数にも対応しています。
  • カスタムサーバーと共有モード。FusionのPhoton Serverプラグインは、Unityがなくてもゲーム状態に完全にアクセスできます。軽いサーバーのゲームロジックを書くことは、難しくありません。

トップに戻る

プレハブ

Fusionはすぐに使えるUnityの最新プレハブ機能のほぼすべてに対応しています:

  • Prefab Variants(プレハブ変数)
  • Nested Prefabs(ネスト状のプレハブ)
  • Nested Networked Objects (非プレハブ) (ネスト状のネットワークオブジェクト)

ドキュメントのトップへ戻る