クラスターとサーバー

Cluster and servers

Strix Cloudでは「クラスター」と呼ぶ単位を用いてクラウド上のサーバーを管理します。クラスターは一般に複数のサーバーインスタンスから構成されますが、各クラスターには「マスターサーバー」と呼ぶ特別なサーバーインスタンスが必ず1台存在します。クラスター内の他のサーバーは「ルームサーバー」と呼びます。

注釈

負荷が小さい場合には1台のサーバーインスタンスがマスターサーバーとルームサーバーを兼ねることもできます。

マスターサーバー

マスターサーバーは、稼働中の各ルームサーバーの一覧と、それぞれのルームサーバーが管理するルームの情報を持ち、クライアントからのエントリポイントとして機能します。

ゲームクライアントはまずマスターサーバーに接続し、ルームサーバーや、ルームサーバー内に存在するルームの情報を検索します。必要なルームサーバーを特定した後は、マスターサーバーを介さずに直接ルームサーバーと通信を行います。このアーキテクチャにより、マスターサーバーの負荷は、同時アクティブクライアント数が増えてもあまり上がらないようになっています。

ルームサーバー

ゲームサーバーの主要な機能はルームサーバーが担います。ルームサーバーには複数の「ルーム」があり、プレイヤーがルームへ参加することでゲームのオンライン機能を実現します。ルームはゲームクライアントからの要求によって動的に作成され、また削除されます。

ゲームデザインに応じて、各ルームには特定のマップやロビーなどさまざまな役割を持たせることができます。しかしマップやゲームインスタンスを各ルームサーバーが実行するわけではありません。ルームサーバーはルーム内にいるプレイヤーのリストを維持管理し、クライアントから届くメッセージを処理します。マップやゲームインスタンスは各クライアントが維持するゲーム状態によって表現されます。ルームサーバーを介してルーティングされる他のクライアントやサーバーからのメッセージによって、各クライアントで動作するSTRIXのプラグインがゲーム状態を更新します。

1つのクラスターに属すルームサーバーは通常対等で、ルームサーバーの数を増やすことで負荷分散を行うことができます。Strix Cloudでは、Webコンソールを介してサーバーの負荷状況を把握し、簡単にルームサーバーの数を増減できます。なお、1つのクラスターに属すルームサーバーの台数には上限を設けていません。

アプリケーション

Application and servers

1つのゲームタイトルに対応するサーバー側の管理単位を「アプリケーション」と呼びます。Strix Cloudでは必要に応じて複数のアプリケーションを定義することができます。各アプリケーションは完全に独立しています。通常は、同一のゲームクライアントが複数のアプリケーションを利用することはありません。

1つのアプリケーションには複数のクラスターを含めることができます。クラスターは通常ゲーム内で果たす役割によって分割します。

アプリケーションに複数のクラスターを含めた場合、ゲームクライアントが使用するクラスターは、クライアントのゲームロジックによって選択することになります。STRIXでは、複数のクラスターの中から使用するクラスターを自動的に選択する機能を提供していません。

各クラスターには必ず1台のマスターサーバーが存在します。ゲームクライアントは、接続するマスターサーバーを選択することにより、間接的に使用するクラスターを選びます。

なお小規模なゲームでは、クラスターは通常1つで十分です。