This document is about: V3 SHARED AUTHORITY
SWITCH TO

トポロジーの選択

概要

この選択において、モード(プログラミングモデル)とトポロジー(ネットワーク構成)の2つの概念は、密接に関連しています。トポロジーを選択すれば、それに従ってモードも決まります。

  • モード(プログラミングモデル):誰が所有するのか・誰が状態を書き込むのか・各オブジェクトの状態権限はどこにあるのか・クライアントとクラウド間でどのようにデータが流れるか・予測コードを記述するかどうか等を指します。モードには共有権限(Shared-Authority)とクライアントサーバー(Client-Server)の2つがあります。接続・スポーン・RPCなどのシステムは共通ですが、ゲームステートの所有権や権限管理方法は根本的に異なります。
  • トポロジー(ネットワーク構成):様々な「ノード」がどこで実行されるか・外部のオーケストレーションやホスティングが必要か・その複雑さやコストはどの程度か・どのようなゲームジャンルに適しているか等を指します。Fusionのトポロジーは3つあり、共有権限(モードと同じ)と専用サーバー(Dedicated Server)とクライアントホスト(Client-Host)です。4つ目のトポロジーとして決定論性(Determinism)がありますが、これは別製品のPhoton Quantumでサポートされています。

モード・トポロジー・状態権限(正しい状態を書き込む権限)の対応関係は以下の通りです:

トポロジー モード 状態権限
共有権限 共有権限 分散:各クライアントは自身が所有するオブジェクトを主導する
専用サーバー クライアントサーバー ヘッドレスサーバー(サードパーティーホスティング)プロセスに集約される
クライアントホスト クライアントサーバー 1プレイヤーの端末(ホスト)に集約される
決定論性 Photon Quantum (別製品) 対称的:すべてのクライアントが同一の決定論的シミュレーションを実行する

Fusionのすべてのトポロジーにおいて、Photon Cloud上のルームはワールド状態をキャッシュし、それをクライアントに配信(さらに、途中参加者にスナップショットを提供)します。権限者の書き込みはクラウドのみで、他のクライアントへ直接の書き込みは行われないため、プレイヤーのIPアドレスが漏れることはありません。

以下のクアドラントでは、トポロジーごとにゲームジャンルや人気タイトルを分類していますので、選択の参考にしてください。

Click to zoom
用語

マスタークライアント:ルームの作成/参加を行った最初のプレイヤーで、Photonによって指定されます。クライアントサーバー型では、マスタークライアントはホスト/サーバー(正しいシミュレーションを実行するプレイヤーまたは専用プロセス)として振る舞うため、シミュレーションサーバーと呼ばれます。共有権限型におけるマスタークライアントは、ラージシーンの読み込み合図や、NPCのスポーンと制御(これはオプションで権限を切り替えることも可能)を行います。

モード

モードはプログラミングモデルです。誰が状態を書き込むのか・クライアントとクラウド間でどのようにデータが流れるか・予測コードを記述するかどうか等を指します。

共有権限モード

メンタルモデル:「私は自身でオブジェクトを所有できるので、オブジェクトの状態は私が直接決定します。」

すべてのクライアントは、自身がスポーンしたオブジェクトを所有し状態の書き込みを行います。Photon Cloudはワールドをキャッシュし、差分を配信し、途中参加者にはスナップショットを提供します。シミュレーションにおいて単一のボトルネックは存在せず、あるクライアントにラグが発生しても、そのクライアントのオブジェクトにのみ影響が及びます。

所有権ポリシー(TransactionPlayer AttachedDynamicMaster Client)の1つを使用して、権限を移行することもできます。予測やロールバックコードは不要です。

クライアントサーバーモード

メンタルモデル:「私は入力を送信するので、それを元に権限者が結果を決定してください。その間、私はそれをローカルで予測します。」

シミュレーションサーバーはゲームロジックを実行し、すべての状態変化を検証します。クライアントは入力を送信し、サーバーがそれを実行して結果を書き込みます。クライアントは操作性を高めるためにローカルで動作を予測し、正しい状態が到着した際に補正が適用されます。

Photon Cloudが状態の配信・関心領域フィルタリング・途中参加者用スナップショットを引き続き担当するため、シミュレーションサーバーの負荷はゲームプレイ処理のみになります。状態が1つのエンドポイント(クラウド上のルーム)に書き込まれるため、帯域とCPU負荷を削減できます。ホストや専用サーバーのIPアドレスは他のクライアントに公開されないため、DDoS攻撃や嫌がらせを防ぐことができます。

トポロジー

トポロジーはネットワーク構成を指します。状態権限はどこにあるのか・ホスティング費用は誰が負担するのか・ホストの信頼性はどの程度か・どのようなゲームジャンルに適しているか等を指します。選択したトポロジーによって、使用するモードが決まります。

共有権限

共有権限モードを使用します。絶対の権限者は存在せず、各クライアントは自身が所有するオブジェクトの状態を書き込み、Photon Cloudがそれをキャッシュして配信します。

適した用途:協力プレイ・カジュアルゲーム・パーティーゲーム・ソーシャル空間・物理演算サンドボックスなどです。性能の低い端末でも負荷が低く、アプリがバックグラウンドになってもホストが消失しないため、モバイルやWebでの利用を強く推奨します。

専用サーバー

クライアントサーバーモードを使用します。サードパーティーのインフラ上のヘッドレスプロセスがシミュレーションを実行します。オーケストレーション・ホスティング・モニタリングが必要になり、コストは同時接続数に応じて増加します。

適した用途:非常に人気のあるタイトル・競技性の高いタイトル・ランク制のシューティングゲーム・eスポーツ・バトルロイヤルなどです。ホストはプレイヤーではないためチートは不可能で、試合のシミュレーションの信頼性が高いため、最も安全な選択肢です。ただし、ホスティング費用は基本プレイ無料(free-to-play)のタイトルには高額すぎるため、コストパフォーマンスに見合うタイトルに限定して導入することを推奨します。

クライアントホスト

クライアントサーバーモードを使用します。一人のプレイヤーの端末がシミュレーションサーバーとして振る舞います。ホスティング費用もオーケストレーションも不要で、マスタークライアントがホストの役割を担います。

最適な用途:フレンド同士のセッション・小規模な協力プレイやサバイバルゲーム・カジュアルな対戦ゲームなどです。ただし、安全性が低い(ホストがプレイヤーのため理論上はチート可能)上に、信頼性も低い(ホストが切断・クラッシュ・バックグラウンドになると、セッションが終了またはホストマイグレーションが強制される)です。アプリやブラウザタブはホストとして信頼性が低いため、モバイルやWebでは利用できません。

トポロジーの選択

  共有権限 専用サーバー クライアントホスト
モード 共有権限 クライアントサーバー クライアントサーバー
適した用途 協力プレイ・カジュアルゲーム・パーティーゲーム・サンドボックス・ソーシャル空間 ランク制対戦ゲーム・シューティングゲーム・バトルロイヤル・eスポーツ フレンド同士の協力プレイ・小規模サバイバル・カジュアル対戦ゲーム
チート対策 クライアントは自身の状態を書き込みますが、サーバープラグインによって後で検証可能です サーバーがすべての状態を検証します ホストが状態を検証しますが、ホストがプレイヤーのためはチート可能です
運用の複雑性 無し; Photon Cloudがすべてを管理します 高い; ホスティング・オーケストレーション・モニタリングが必要です 無し; マスタークライアントがホストの役割を担います
コスト CCU + 転送量 のみ CCU + 転送量 + 専用サーバーのホスティング費用 CCU + 転送量 のみ
信頼性 クライアントが落ちても、クラウド上のルームは維持されます 試合中は常に持続します ホストは切断・クラッシュ・バックエンドになる可能性があります
モバイル 強く推奨されます 基本プレイ無料の場合はホスティング費用が高額になります アプリは終了・バックグラウンドになる可能性があるため適しません
Web 強く推奨されます 基本プレイ無料の場合はホスティング費用が高額になります ブラウザタブはスロットリング・バックグラウンドになる可能性があるため適しません

Fusionの料金はピークCCU(同時接続ユーザー数)に基づきます。専用サーバーを利用する場合は、さらにサードパーティーのホスティング費用が追加されます。現在の価格はFusion Pricingをご覧ください。

ハイペースなゲームプレイが要求されるジャンルや、試合のリプレイが有用な場合、あるいは元から決定論性に適しているケース(物理演算を多用するサンドボックス・パーティー対戦・格闘ゲーム・RTS)では、Photon Quantumをご検討ください。Quantumは最新の予測ロールバックを備えたエンジンで、スナップショットベースの途中参加も可能で、最大128人のプレイヤーに対応しています。『Stumble Guys』『Windblown』『No Rest for the Wicked』など、多くの有名なタイトルで採用されています。ただしデメリットとして、すべてのクライアントが固定ステップで完全なゲームロジックを実行するため、シミュレーション規模には限度があります。

プログラミング比較

2つのモードで、ゲームコードの記述方法は異なります。トポロジーを選択すると、それに応じてモードが決まります。

  共有権限モード クライアントサーバーモード
トポロジー 共有権限 専用サーバー、クライアントホスト
状態権限 分散; 各クライアントが自身のオブジェクトを所有します 集約; シミュレーションサーバーがすべてを所有します
誰が状態を書き込むか 所有しているクライアントが直接行います シミュレーションサーバーが入力を実行した後に行います
入力予測 不要です 入力キューと予測リセットが標準で組み込まれています
物理演算 Forecast:外挿とスムージングに基づいて柔軟に補正されます Forecast
コード複雑性 低め; 予測コードは不要です 高め; 入力パッキング・予測・ロールバックが必要です

どちらを選択すべきか

迷った場合は、共有権限から始めてみてください。プログラミングが簡単で、オーケストレーション不要で、ほとんどのマルチプレイヤーゲームに対応しています。

公平性・ランク制の整合性・競技性を担保するために、ホスティング費用や運用オーバーヘッドを負担する価値がある場合は、専用サーバーを選択してください。

ホスティング費用をかけずにサーバー主導のゲームプレイを実現し、かつプレイヤーの端末をホストとして使用することが許容される場合(フレンド同士のグループ・小規模なサバイバル・カジュアルな対戦)は、クライアントホストを選択してください。

モードの変更

モードの切り替え(共有権限モードとクライアントサーバーモード間)は大変です。レプリケーションとRPCのパターンが根本的に異なるため、ネットワーク関連コードの大部分を書き直す必要が出てくるでしょう。

クライアントサーバーモード内のトポロジーの切り替え(専用サーバーとクライアントホスト間)は容易です。APIとプログラミングパターンは同じであるため、変更は主にサーバーのデプロイとオーケストレーションの問題になります。

スタートガイド

Back to top