Game Servers の概要

Game Servers は、ゲーム インフラストラクチャ チームが、グローバルな専用 Game Servers フリートをデプロイして管理するために構築された、マネージド ゲーム サービスです。Game Servers を使用すると、コンテナ オーケストレーション用の Kubernetes と、Game Servers フリート オーケストレーションとライフサイクル管理用の Agones を使用して、ゲームサーバー クラスタを管理できます。既存のゲーム セッションに影響を与えることなく、Game Servers による管理へのクラスタの接続や切断をいつでも行えます。クラスタの切断後、オープンソースの Agones インストールを引き続き行うことが可能です。

Game Servers クラスタを制御するには、グローバルの Game Servers 構成ファイルを使用して、起動するサーバーのロケーションやサーバー数のほか、デプロイするゲームサーバー バイナリのルールを定義します。Game Servers は、一元的に管理されたロールアウトに基づいて Agones フリートを自動的に作成し、自動的にすべてのマネージド クラスタに安全にロールアウトされます。特に、使用中の Game Servers は突然停止することが絶対にないため、進行中のゲーム セッションが中断されることは決してありません。

Game Servers のリソース

このセクションでは、Game Servers を管理するために操作する主要なリソースについて説明します。次の図は、これらのリソースを使用してゲーム プロジェクトをデプロイする方法を示しています。

ゲーム プロジェクトのデプロイメントの例
図1 Game Servers へのゲーム プロジェクトのデプロイメントの例

Game Servers のプロジェクト

単一の環境(本番、テストなど)は、その環境で有効になっている Game Servers を含む Google Cloud プロジェクトです。隔離とセキュリティを向上させるために、通常、複数の Google Cloud プロジェクト(My Game Production や My Game Testing など)を使用して単一のゲームタイトルを管理します。

場所

ロケーションはリソースのスコープを定義し、デフォルトは global です。これは可用性が最も高く、データが複数の Google Cloud リージョン間で冗長化されています。リソースのロケーションは、特定の Google Cloud リージョンに手動で設定できます(すべてのリージョンがサポートされているわけではありません)。データの保存場所またはフェイルオーバー ドメインの制御が必要な場合は、デフォルトの global 設定をサポートされている次のいずれかのロケーションでオーバーライドします。

サポートされている地域

  • asia-east1
  • asia-east2
  • asia-northeast1
  • asia-northeast2
  • asia-northeast3
  • asia-south1
  • asia-southeast1
  • asia-southeast2
  • australia-southeast1
  • europe-central2
  • europe-north1
  • europe-west1
  • europe-west2
  • europe-west3
  • europe-west4
  • europe-west6
  • global
  • northamerica-northeast1
  • southamerica-east1
  • us-central1
  • us-east1
  • us-east4
  • us-west1
  • us-west2

レルム

Game Servers は、Google Kubernetes Engine 上で実行される Kubernetes クラスタをサポートするように設計されています。Game Servers は、Google Cloud のリージョンとゾーンのコンセプトを拡張するため、レルムのメタリージョンのコンセプトが導入しています。レルムとは、プレーヤー数に対するゲームのレイテンシ要件に基づいた、Game Servers クラスタのユーザー定義グループです。レルムには、時間に基づくスケーリング構成をレルム内のクラスタで使用できるようにするタイムゾーンが割り当てられます。レルムは 1 つのロケーション内に存在します。

Game Servers のクラスタ

Game Servers のクラスタは、レルム リソースのサブリソースです。各 Game Servers クラスタは、レルムに登録された Agones を実行する Kubernetes クラスタの Namespace に対応します。レルム内の Game Servers クラスタは、レイテンシやコンピューティング パフォーマンスなどの測定値に関して、ユーザー エクスペリエンスの観点から同等と見なされる必要があります。default 以外の Namespace を使用するには、Kubernetes 上に Namespace を作成し、その Namespace を使用するように Agones を構成する必要があります。

Game Servers クラスタを作成すると、Game Servers によって Agones フリートオートスケーラーが必要に応じて作成されます。Game Servers では、手動で作成された Agones フリートは変更されません。

Game Servers クラスタを削除しても、Game Servers によって作成された Agones フリートとオートスケーラーなど、クラスタ内のすべてのリソースは Game Servers によっては削除されません。

Game Servers のデプロイメント

Game Servers のデプロイメントとは、世界中の任意またはすべての Game Servers クラスタにデプロイできる、Game Servers ソフトウェアのバージョンのグローバルなレコードです。Game Servers のデプロイメントは、Game Servers 構成ファイルとロールアウト リソースの両方の親リソースです。

異なるレルムへの異なる構成ファイルのロールアウト
図 2 Config バージョン 1.0 は米国のレルムにロールアウトされ、バージョン 1.1 はヨーロッパと日本にロールアウトされました。

Game Servers の構成ファイル

Game Servers 構成ファイルは、Game Servers の数、バッファ、Game Servers のバージョンを指定する Game Servers デプロイメント リソースのサブリソースです。スケーリング ポリシーは、Game Servers 構成ファイルで定義します。スケーリング ポリシーは、次の例のように、静的または時間ベースのいずれかになります。

  • ピーク時には 1 分あたりに N 割り当てをサポートするのに十分なサーバーが必要で、ピーク時以外は 1 分あたりに M 割り当てをサポートするのに十分なサーバーが必要である。
  • 計画されたゲーム イベントのため、日付と時間の範囲で予約容量を N% 増やす。

ロールアウト

ロールアウトは、Game Servers 構成ファイルを対象のレルムにマッピングする、Game Servers デプロイメント リソースのサブリソースです。デフォルトでは、ロールアウトにより Game Servers 構成ファイルがすべてのレルムに割り当てられます。A/B テストとカナリア テストでは、特定のレルムをオーバーライドして代替の Game Servers 構成ファイルを受け取ることができます。

アーキテクチャ

Game Servers は、グローバルに使用可能なコントロール プレーン API を公開します。この API を使用すると、API 呼び出し、Google Cloud Console、または Google Cloud CLI を使用して、次のようなデプロイメントを記述するリソースを制御できます。

  • レルムの作成と変更
  • レルムの Game Servers クラスタの作成、登録、変更
  • Game Servers デプロイメント、Game Servers 構成ファイル、ロールアウトの作成、デプロイ、更新

Game Servers クラスタの作成時に Game Servers に渡す Namspace 内のゲームサーバーを Agones が管理するためには、Kubernetes サービス アカウントが必要です。デフォルトの名前空間以外の名前空間を使用している場合は、通常、helm install の一部としてこのサービス アカウントを作成します。

Game Servers が Agones クラスタに接続するためには、Google Cloud プロジェクトのサービス アカウントが必要です。このサービス アカウントは、レルムやデプロイメントなどのリソースを初めて作成すると自動的に作成されます。

各 Game Servers デプロイメントでは、Agones GameServerSpec と同等である Game Servers パラメータが記述され、特定のビルドを実行する Game Servers のフリートが作成される対象の Game Servers クラスタへポリシーが指定されます。ポリシーを使用して個々のクラスタのスケーリングの優先順位を設定することもできます。

次のステップ