7 - Where to go next
概要
100シリーズでは、Fusionで使用している基本的なコンセプトについてカバーしてきましたが、これ以外にも多くのことが待ち構えています。Fusionには、マルチプレイヤーゲームが陥りがちな多くのネットワーク関連の問題を解決するコンポーネントや機能を搭載していますが、必ずしも全てのゲームタイプに適応されるというわけではありません。
以下は、100シリーズで取りあげなかった、より高度なトピックの一部です。マニュアル全体を読んでいただくことをお勧めします。
サンプル
Fusionには様々なサンプルが用意されており、それらは2つのカテゴリーに分類されます。
- ゲームサンプル は、ゲームプレイの開発に重点を置いています。ゲームサンプルは、ゲームプレイの開発に焦点を当て、一般的に特定のコアゲームループを紹介します。
- テクニカルサンプル は、マルチプレイヤー・ゲーム開発における、UnityとFusionの技術的な実装パターンに焦点を当てています。
Fusion100シリーズの後は、次のいずれかに進むことをお勧めします。
- Fusion Asteroids (共有モード版とホストモード版があります); または。
- Dragonhunters VRのいずれかをお勧めします。
共有モード(Shared mode)とサーバーモード
100シリーズ内で取りあげていたホストモードの代わりとして、Fusionではクライアントがオブジェクトのステートオーソリティをシェアし、ワールドを「支配」する唯一のホストがいない共有モードのような、その他のネットワークトポロジーにも対応しています。
予測的スポーン
同じマシン上でホストとクライアントを実行する場合、その両方がオブジェクトを同時にスポーンしているように見えますが、少しラグを導入してみるとクライアントはオブジェクトを全くスポーンしていないことがはっきりとわかります。むしろ、クライアントはホストがオブジェクトをスポーンするのを待っています。
これはホストオーソリティの性質ですが、Fusionではクライアントに一次的なプレースホルダーのスポーンを許可しており、ホストがそのスポーンを確認した場合、自動的にこれらの一時オブジェクトを再利用します。
これにより、クライアントサイドの使用感がさらにスムーズになり、簡単に実装できるようになります。
ラグ補償
高速シューティングでは、厳格なサーバー主導の動作が問題につながります。サーバーで見られるワールドと、クライアントに表示されているワールドは、全く同じというわけではないからです。
クライアントが発砲する瞬間、敵が十字の中心にいても、サーバーがその発砲を検証するときには状況が変わっている可能性があります。
クライアントにヒット判断をさせることで、この問題を解消するネットワーク設計もありますが、そうするとチートのリスクが高まります。
Fusionでは代わりに、原則としてサーバーが既定のクライアントの観点からレイキャストを行うことを許可する、ラグ補償のレイキャストに対応しています。
関心領域
プレイヤーが多数いる大規模なワールドのゲームでは、常に全員と全てを共有しないことでネットワーク使用量の最適化が行われます。
特に、Fusionではプレイヤーに複数の関心領域を割り当てることを許可し、それらの関心領域外で発生したネットワークステートの変更を除外しています。
プレビルトコンポーネント
Fusion 100でご紹介したのは、NetworkTransform
と NetworkRigidbody
で、これらはFusionに搭載されているプレビルトコンポーネントの一部にすぎません。Fusionにはその他にも多数のすぐに使えるコンポーネントが揃っています。