Fusion 2 トポロジーの選択
適切なトポロジーの選択
Fusionは同じAPIで、3つのまったく異なるネットワークトポロジーに対応しており、ネットワーク通信・サーバーホスティング要件・費用・利用可能な機能などに影響します。また、ネットワーク接続を行わないシングルプレイヤーモードにも対応しています。
まず最初にFusionを始める際は、どのモードを使用するかを選択することになります。
以下のクアドラント(Quadrant)は、どのモードがどのアプリケーションに適しているかを判断するのに役立つでしょう。大抵のゲームジャンルには、推奨するモードが存在します。クアドラントでは、モードごとにジャンルと有名タイトルを整理しています。いくつかのジャンルは、複数のモードに適していたり、FusionよりQuantumを推奨しています。

クアドラントの比較
クアドラントでは、4つのオプションが示されています。
- Fusion - Dedicated Server(サーバーモード)
- Fusion - Client Host(ホストモード)
- Fusion - Shared(共有モード)
- Quantum
これらは、以下のようなカテゴリーで比較されています。
- 推奨されるゲームジャンル:どんなゲームジャンルに適しているか?
- チート対策:プレイヤーはどの程度簡単にチートできるか?
- サーバー複雑性:オンラインが使用できるようになるまでのセットアップはどの程度複雑か?
- モバイル品質:モバイル上でゲームやアプリケーションはどの程度動作するか?
- コストパフォーマンス:どの程度費用がかかるか?
プロジェクトごとに要件は異なるため、選択するPhoton製品の違いを比較して理解することが重要になります。このドキュメントはPhoton Fusionにフォーカスしているため、Photon Quantumについて詳しく知りたい場合はこちらをご覧ください。
推奨されるゲームジャンル
ゲームのジャンルによって、最適なFusionのモードは異なります。
- Fusion - Dedicated Server(サーバーモード):強固なチート対策が可能なため、大人数の対戦ゲームに適しています。サーバーがゲーム全体の状態権限を持つため、永続性が必要なゲームにも適しています。
- Fusion - Client Host(ホストモード):ホストとのP2P接続が可能なため、多くの物理演算が必要なゲームに適しています。また、プレイヤーが2~4人程度のゲームにも適しています。プレイヤーがホストとなるゲームは、専用サーバーを運用するコストを抑えて、チート防止の利便性を優先したい開発者にとっては理想的な選択となります。
- Fusion - Shared(共有モード):プレイヤーが頻繁に入室/退室してもゲームプレイが妨げられないような、カジュアルゲーム・大人数のプレイヤーが参加するゲームに適しています。
推奨されるゲームジャンルはFusionのモード間で被りがあるため、開発するゲームに最適なモードを調べるためには、モード間の違いを十分に理解することが大切です。
チート対策
チートプレイヤーが野放しになっていると、ゲーム体験が台無しになりますが、残念ながらそれがオンラインゲームの現実です。チートに関しては、様々なチート対策がFusionにはデフォルトで備わっています。
- Fusion - Dedicated Server(サーバーモード):専用サーバーがゲーム全体の状態権限を持つため、チート対策は強固です。チートを試みるプレイヤーがいても、サーバーはそれを検証して防ぐことが可能で、チートを試みるクライアントを弾くこともできます。ゲームプレイで「ネットワーク入力」と「ネットワークプロパティ」を使用した場合、スピードハックやメモリ改ざんのような、ゲームプレイの状態に影響を与えるチートは不可能になります。適切に設計されたサーバーモードで可能なチートは、エイムボット(ユーザーの入力を代行するプログラム)やウォールハック(これはインタレストマネジメントで制限できます)のみです。
- Fusion - Client Host(ホストモード):ホストプレイヤーがサーバーの役割も担うため、ホスト以外のクライアントには、サーバーモードと同等のチート対策が適用できます。しかしホストプレイヤーは、完全な情報にアクセスでき、あらゆる値を更新できるためチート可能です。
- Fusion - Shared(共有モード):各プレイヤーがオブジェクトに対する状態権限を持つため、予防策がとられていなければチートは可能です。これは、任意の「ネットワークプロパティ」の値を更新したり、任意のタイミングで「RPC」を送信する等を含みます。
サーバー複雑性
この観点でFusionの3つのモードを比較すると、専用サーバーを使用するサーバーモードのみが独特なモードとなります。専用サーバーのセットアップには、サーバー用にヘッドレスビルドしたゲームと、それを実行する内製またはサードパーティーのサーバーホスティングソリューションが必要です。これにはより多くの管理運用コストが発生することになります。
モバイル品質
オンラインマルチプレイヤーを備えたモバイルゲームは人気がありますが、モバイル端末の限定的な性能やワイヤレス接続のために、難易度が高い分野となっています。
- Fusion - Shared(共有モード):モバイルゲームで推奨されるモードです。P2Pではなくクラウドサーバーに接続する共有モードは、高速・高性能なFusionで快適に動作します。また、共有モードは再シミュレーションを実行する必要がないモードになるため、多くのケースでCPU使用率を抑えられます。
- Fusion - Dedicated Server(サーバーモード):追加でサードパーティーのサーバーホスティングを行うことで、運用コストは高価になるため、高ARPUのタイトルでのみ推奨されます。
- Fusion - Client Host(ホストモード):特殊なユースケースを除き、モバイルではホストモードは推奨されません。プレイヤーの一人がサーバーの役割も担うため、モバイル端末の不安定な接続の影響で、正しい動作が困難で信頼性に欠けます。また、モバイルゲームはプレイヤーの離脱率が高く、ホストがゲームを離脱した際には一時停止が発生し、ホストマイグレーションが必要になります。また、モバイルのNATパンチスルー成功率は他のプラットフォームより低い(モバイルのネットワークでは許可されない)ため、接続がクラウドサーバーを介してリレーされる分だけ追加の遅延が発生します。
WebGLビルド
WebGLでは共有モードを強く推奨します。
WebGLで共有モードを使用すると、クラウドサーバーへ直接接続が確立されるため、ホスト(サーバー)モードより遅延が抑えられます。CPU使用率も抑えることができて、これはシングルスレッドのみで動作するWebGLでは重要です。
ホスト(サーバー)モードは推奨されず、デフォルトでは無効です。
サーバーモードでもホストモードでも、技術的にはWebGLビルドをサーバーにすることができますが、パフォーマンスやネットワークの制限のため推奨しません。典型的なものとして、WebGLはシングルスレッドで動作し、ページのフォーカスが外れる(バックグラウンドのタブになる)と一時停止します。これが単なるプレイヤーなら問題ありませんが、セッションのサーバーが一時停止すると、セッション内のプレイヤー全員が影響を受けます。さらに、WebGLビルドをサーバーにした場合、WebGLビルドはP2P接続はサポートされないため、常にリレー接続となります。
WebGLでホスト(サーバー)モードを有効にするには、NetworkProjectConfig
のEnable ClientServer Modes in WebGL builds
をtrue
にします。
コストパフォーマンス
Photon製品の使用料は「同時接続ユーザー数(CCU)」と「帯域幅」の2つからなります。CCUコストは、Fusionの3つすべてのモードで同じです。帯域幅コストは、ネットワークを介してユーザー間でどれだけのデータが通信されたのかによります。共有モードやリレー接続を行ったホストモードを使用する場合は、帯域幅使用量が大きな要因になることを覚えておいてください。適切に最適化されたFusionのゲームが、転送量の無料枠を超えることはありません。サーバーモードを使用する場合は、帯域幅コストはサードパーティーのサーバープロバイダーに依存します。Fusionの価格についてはこちらをご覧ください。
次のステップ
イントロダクション
Fusionのドキュメントのイントロダクションをご覧ください。
チュートリアル
チュートリアルから始めてみましょう。サーバーモードとホストモードは、プログラミングのアプローチが同じなので、一つのチュートリアルにまとめられています。
ネットワークトポロジー
Fusionのサーバーモード・ホストモード・共有モードについては、ネットワークトポロジーをご覧ください。
Back to top