専用サーバー
概要
Fusionでは、クライアント/サーバー型のゲーム開発が可能です。ホスティングプロバイダーが提供する専用サーバー上で、専用ゲームセッションインスタンスを実行し、プレイヤーはクライアントとして接続できます。
専用サーバーのトポロジーを利用するには、いくつかの要素が必要になります。
- Fusionのヘッドレスビルド
- 専用サーバー上で実行される、専用ゲームセッションインスタンス
- 任意のホスティングプロバイダーで提供される、専用サーバーマシン
- Fusionのプラグインが有効になった、Photon Cloud
- 専用ゲームセッションインスタンスに接続するクライアント
ホストモードとサーバーモード
Fusionでクライアント/サーバー型のゲームを開発するには、まず最初に「ホストモード」か「サーバーモード」を選択する必要があります。コードベースに関連する限りにおいて、どちらも同じ機能を持ち、同じように動作します。気にするべき唯一の違いは、以下の通りです。
- ホストモード:「サーバー」は状態権限を持ち、同時にプレイヤーとして入力権限を持ちます
- サーバーモード:「サーバー」は状態権限を持ちますが、プレイヤーではなく入力権限も持ちません
つまり、まず簡単にテストできるホストモードで開発を始め、プロジェクトチームでサーバー構成の準備が完了して、専用サーバー上でゲームセッションインスタンスを実行できるようになった時点で、サーバーモードに移行することもできるということです。
専用サーバー
Fusionをサーバーモードで実行するには、ヘッドレスビルドしたゲームをホストする専用サーバーが必要になります。
Fusionにおいては、専用サーバーが2種類存在します。
- 専用ゲームセッションサーバー
- 専用Photon Cloudサーバー
専用ゲームセッションサーバー
専用ゲームセッションサーバーは、ホスティングプロバイダーで提供され、ヘッドレスビルドのゲームをホストできます。プレイヤーの参加リクエストからゲームセッションインスタンスを起動するには、オーケストレーションサービスが必要になります。(通常はこちらもホスティングプロバイダーで提供されます)
専用Photon Cloudサーバー
専用環境で提供される機能やサービスへアクセスする場合にのみ、Photon ENTERPRISE CLOUDのサブスクリプションが必要です。
Photonが提供している専用Photon Cloudサーバーをリクエストするには、Enterpriseサブスクリプションが必要です。専用Photon Cloudサーバーは、ゲームのニーズに応じて、専用クラウドのリソースの提供・割り当てを行います。
Photon Cloudでは以下を提供します。
- 接続管理
- リレーのフォールバック
- サーバーマイグレーション用の状態のバックアップ
さらに、Enterpriseサブスクリプションでは以下を提供します。
- 独自のFusionのプラグインを実行する機能(現時点では未提供)
- 専用IP
- SLA
- 24/7 NOC チーム
- その他様々な機能
サーバーモードでゲームを実行するには、専用サーバーと、Photon Fusionのサブスクリプションが必要です。
ゲームセッションのホスティングプロバイダー
有名なホスティングプロバイダーの一部を紹介します。
独自ソリューションや、スタンドアロンのDockerインスタンスを使用することも、もちろん可能です。
ゲームセッションインスタンス
ゲームセッションインスタンスは、オーケストレーションサービスのリクエストによって、専用サーバー上で起動します。このプロセスは、ゲームセッションのホスティングプロバイダーとそのオーケストレーションサービスに関連するため、Fusionとは関係ありません。こちらについては、サービスのドキュメントをお読みいただき、ホスティングプロバイダーにお問い合せください。
ヘッドレスビルドの作成
Fusionのヘッドレスビルドは、Unityでビルド可能なすべての64-bitプラットフォームに対応しています。以下は、ヘッドレスビルドを作成する手順です。
- Unityエディターから
File > Build Settings...
に移動する Target Platform
を選択するArchitecture
が64-bitに設定されていることを確認するBuild
をクリックする
ゲームサーバーオーケストレーション
サーバーオーケストレーションは、ゲームサーバーを管理する方法を指します。必要に応じてサーバーを起動/停止したり、プレイヤーのリクエストからサーバー上にゲームセッションを作成します。サーバーオーケストレーションの主目的をまとめると、プレイヤーが参加できるサーバーの利用状況を制御するルールやシステムを与えること、になります。これによって、プレイヤー数が少ない時(例:深夜や日中など)は、計算能力を節約して、可能な限りコストを削減することも可能になります。
「オーケストレーションサービス」は、以下を担当するものです。
- ゲームサーバービルドのコピーを保持し、デプロイ時に使用できるようにします。
- ゲームサーバーを実行できるマシンのインフラストラクチャーを管理します。ベアメタルサーバー・仮想マシン・Dockerコンテナなど、各プロバイダーが使用するモデルは様々です。正しい/間違ったモデルはありません。ゲームのニーズによって異なるサーバー環境要件に合わせてください。
- サーバーの作成/削除を制御するシステムを提供します。どこ(通常、いくつかのリージョンでデプロイされます)で、どんな設定(プレイヤーに合うように)で、ゲームサーバーをデプロイするかを、開発者が選択できるようにします。システムは、手動・API経由・自動(一連のルールによってトリガーする)などで管理されます。
サーバーインスタンスをどこでどのように実行し扱うかの管理は、Fusionの観点からはすべて透過的なため、開発には直接影響を与えません。
一方、多くのオーケストレーションやホスティングプロバイダーは、ゲームサーバー自体で内部的なインテグレーションを利用しており、以下のような情報を取得しています。
- マッチに関する情報(例えば、ゲームモードやマップ選択など)
- 現在のプレイヤー数と、最大プレイヤー数
- サーバーのヘルスステータス(例:starting、ready for players、shutting down)
- その他
これらの情報は、どのサーバーが参加可能/リサイクル可能なのかを把握したり、統計データ(特定のリージョンのデイリーアクティブプレイヤーが増えた場合に、どの程度サーバー数を増やすのか)を作成したりするために、オーケストレーションのシステムで使用されます。
各プロバイダーのSDKとのインテグレーションを容易にするため、Fusion SDKは、これらのすべての情報を簡単に取得できるようになっています。
Back to top