次の方法で共有


マルチプレイヤー サーバーのライフサイクル

ゲーム サーバー SDK (GSDK) とゲーム サーバー プロセスのライフサイクル

PlayFab マルチプレイヤー サーバー (MPS) のゲーム サーバー ライフサイクルは、ゲーム サーバーが呼び出している GSDK メソッドと、ゲーム サーバー プロセスの状態に密接に関係しています。

注意

ゲーム サーバーと GSDK の統合の詳細については、こちらのドキュメントを確認してください。

少なくとも、ゲーム サーバーは GSDK を統合し、ReadyForPlayers GSDK メソッドを呼び出すだけで MPS で優れた動作をすることができます。 ただし、ゲーム サーバーが初期化中であることを MPS が認識できるように、ゲーム サーバー プロセスが開始したときにも Start を呼び出すことをお勧めします。 起動に時間がかかるゲーム サーバーの場合、Start の呼び出しは重要です。MPS は、ゲーム サーバーの起動時に適切なタイミングでハートビートを受信しない場合にサーバーをダウンさせるためです。

ゲーム サーバーの状態

MPS のゲーム サーバーの主な状態は次のとおりです。

  • Initializing: ゲームサーバーは、Start() GSDK メソッドを呼び出すとこの状態に移行します。 この状態では、ゲーム サーバーは必要なアセットの読み込みを開始しています。 この状態では、GSDK は MPS へのハートビートの送信を開始します。
  • StandingBy: ゲームサーバーは、ReadyForPlayers() GSDK メソッドを呼び出すとこの状態に移行します。 このメソッドは、必要なゲーム アセットがすべて読み込まれたときに呼び出す必要があります。 基本的に、この状態は、ゲーム サーバーを割り当てる準備ができていることを MPS に通知し、プレーヤーがゲーム サーバーに接続できるようにします。
  • Active: ゲーム サーバーは、RequestMultiplayerServer API 呼び出しを使用して割り当てられると、この状態に移行します。 この状態は、プレイヤーがゲーム サーバーに接続してゲームを楽しむことができることを意味します。 ゲーム サーバーがアクティブであるという事実は、ビルドのスケール ダウンの可能性がある間 (つまり、standingBy 数が減少した場合) にゲーム サーバーがダウンしないことを意味します。
  • Termination: ゲーム サーバーは、ShutDownMultiplayerServer API を呼び出すとこの状態に移行します。 この状態は、ゲーム サーバーがシャットダウン中であり、プレイヤーが接続できなくなることを意味します。

ゲーム サーバー プロセスは、正常に終了することも、クラッシュによって終了することもできます。 これはどの状態でも発生する可能性があります。 MPS は次の手順を実行します。

  • このゲーム サーバーを実行しているコンテナー/プロセスを削除します
  • ゲーム ログを収集してアップロードし、アーカイブできるようにします (詳細情報)
  • 終了したコンテナー/プロセスを置き換えるために、その場所に新しいコンテナー/プロセスを作成します

注意

ゲーム サーバーが Active 状態にある場合、StandingBy 状態に戻ることはありません。 ゲームの状態が Active に設定されたら、StandingBy 状態の新しいゲーム サーバーを取得する唯一の方法は、ゲーム サーバー プロセスが終了した場合です。

サーバーの最大有効期間

MPS サーバーをホストする仮想マシンの最大有効期間は 10 日であるため、サーバーの有効期間はその有効期間によって制限されます。 サーバーの有効期間は少なくとも 23 時間であることが保証されています。MPS は、残り 23 時間未満の VM にはサーバーを割り当てません。 GSDK は、VM が強制的に終了される 23 時間前に OnMaintenanceScheduled イベントを発生させ、VM 上で実行されているサーバーが時間内に正常にシャットダウンできるようにします。 VM の最大有効期間の 10 日間に達してもサーバーが VM 上で実行されている場合、サーバーは強制的に終了され、ログはアップロードされません。 サーバーが強制的に終了されないようにするには、セッションが常に 23 時間未満であることを確認するか、GSDK の OnMaintenanceScheduled イベントを使用してサーバーを正常にシャットダウンし、期限前にプレイヤーを別のサーバーに移行します。

ゲーム サーバー プロセスの終了

ゲーム セッションが終了したら、新しいゲーム サーバーを取得できるように、ゲーム サーバー プロセスを適切に終了する必要があります。 ゲーム サーバー プロセスがクラッシュした場合、MPS はクラッシュしたプロセスを置き換える新しいゲーム サーバー プロセスを作成します。 ゲーム サーバーが停止またはフリーズした場合は、いつでも ShutDownMultiplayerServer API を呼び出して、ゲーム サーバー プロセスを手動で終了できます。 この API は、ゲーム サーバー プロセスが単独で終了できない場合にのみ呼び出す必要があります。 この API を呼び出すと、ゲーム サーバーが "Terminating (終了中)" および "Terminated (終了済み)" 状態に移行します。 さらに、終了中または終了済み状態で停止したサーバーは、一定期間後にシステムによって置き換えられます。

注意

GSDK にはメソッド呼び出しがあります。このメソッドを使用すると、ゲーム サーバーが Unhealthy としてマークされます。 現時点では MPS によって無視されますが、これは今後変更される可能性があります。 この機能が重要な場合は、こちらの GSDK リポジトリにメモを残してください。

GSDK とゲーム サーバーの統合の確認

MPS には、ゲーム サーバーの GSDK 統合をテストするための開発者ツールがあります。 ツールは LocalMultiplayerAgent と呼ばれ、ここからダウンロードできます。詳細については、ここのドキュメントを参照してください。

GSDK サンプル

一般的なゲーム エンジンとの統合を示す GSDK サンプルを確認するには、ここで MpsSamples リポジトリを確認できます。