オンライン マルチプレイに対応した専用ゲームサーバーに関する構築パターン  

FPS(First person shooter:一人称視点シューティング ゲーム)や MMO(Massively Multiplayer Online:大規模多人数参加型オンラインゲーム)など、オンライン マルチプレイを提供する際には、プレイヤーのステートを管理するための DGS(Dedicated Game Server:ゲーム専用サーバー)が必要です。DGS を用いない構築パターンとして p2p(Peer to Peer)と呼ばれるユーザー端末同士で処理をする方式があります。今回は、p2p とそれを用いたアーキテクチャに関しては説明しません

通常 DGS は、インターネット上のどこかでホストされ、プレーヤー間のゲームの状態を同期します。DGS において、中央集権的にサーバーでゲームの処理をすることで、ユーザーの不正行為を防ぐことができます。また、DGS をスケールアウトすることで、同時に接続するユーザー数を増やすことができます。そのため、オンライン マルチプレイ ゲームを開発する際に有効な構築パターンの 1 つといえます。典型的な DGS を用いたオンライン マルチプレイ ゲームのアーキテクチャは、以下のとおりです

一般的には、フルスクラッチでオンライン マルチプレイに対応した DGS を管理するオーケストレーターを構築するのは困難です。 理由は、必要に応じてスケールアウトしたり、ユーザーがプレイ中のサーバーは削除しないなどの機能を独自に開発したりする必要があるためです。そこで Google では、インタラクティブ ゲーム大手の Ubisoft と共同で、専用サーバーのホスティング、スケーリングを Kubernetes ベースで実現する Agones というオープンソース プロジェクトを推進しています。

GKE + Agones を用いた DGS 構築のパターン

解決する課題・使い所

DGS をコンテナとして、Kubernetes 上にホスティングするメリットとして、以下の点が考えられます。今回、Kubernetes に関する詳細な説明は行いません。

しかし Kubernetes では、起動中の DGS において、ユーザーがゲームのプレイ中か、そうでないかを判断することができません。そのため、Kubernetes のスケールインで、プレイ中の DGS が削除されてしまう可能性があります。この課題を解決するための機能を、Agones が提供しています。具体的には、K8s のカスタム リソースを利用して、利用中の DGS のステータス管理を可能にすることで、プレイ中の DGS が削除されることを防ぐことができます


利点 


注意事項 

GKE クラスタ / Agones のアップグレード戦略を適切に計画しましょう。 


このパターンで作成された事例


参照文献