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 を管理するために操作する主要なリソースについて説明します。

Game Servers のプロジェクト

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

場所

ロケーションはリソースのスコープを定義します(デフォルトは global)。この定義により最も高い可用性が実現でき、データは複数の Google Cloud リージョン間で冗長になります。リソースのロケーションは、特定の Google Cloud リージョンに手動で設定できます。データの保存場所やフェイルオーバー ドメインの制御が必要な場合は、デフォルトの global 設定をオーバーライドします。

レルム

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 構成ファイル リソースとロールアウト リソースの両方の親リソースです。

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 呼び出しまたは gcloud コマンドライン ツールを使用して、次のようなデプロイメントを記述するリソースを制御できます。

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

Game Servers によるリソースの管理を許可するには、Agones クラスタへのアクセスが制限されている Kubernetes サービス アカウントを作成する必要があります。Game Servers はこのアカウントを使用して、グローバルに Kubernetes クラスタへ構成変更を push します。

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

次のステップ