> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

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

> PlayFab Multiplayer Servers ゲーム サーバー セッションのライフサイクル。GSDK Initialize と ReadyForPlayers から、アクティブ状態、終了状態、ログ アップロードまで。

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

PlayFab Multiplayer Servers (MPS) のゲーム サーバー ライフサイクルは、ゲーム サーバーが呼び出す [GSDK](https://github.com/PlayFab/gsdk) メソッド、およびゲーム サーバー プロセスの状態と密接に関連しています。

<Note>
  ゲーム サーバーの GSDK 統合について詳しくは、ドキュメント [こちら](/services/playfab/multiplayer/servers/integrating-game-servers-with-gsdk) を参照してください。
</Note>

最低限、ゲーム サーバーは **ReadyForPlayers** GSDK メソッドを呼び出すだけで、GSDK を統合し MPS 上で優れた動作をすることができます。ただし、ゲーム サーバー プロセスが開始した際に **Start** も呼び出すことをお勧めします。これにより、MPS はゲーム サーバーが初期化中であることを認識します。**Start** を呼び出すことは、起動に時間のかかるゲーム サーバーの場合に重要です。ゲーム サーバー起動時に MPS がタイムリーにハートビートを受信しないと、サーバーが停止されるためです。

## ゲーム サーバーの状態

以下は MPS におけるゲーム サーバーの主な状態です:

* **Initializing**: ゲーム サーバーが **Start()** GSDK メソッドを呼び出すと、この状態に遷移します。この状態では、ゲーム サーバーは必要なアセットの読み込みを開始します。この状態で、GSDK は MPS にハートビートを送信し始めます。
* **StandingBy**: ゲーム サーバーが **ReadyForPlayers()** GSDK メソッドを呼び出すと、この状態に遷移します。このメソッドは、必要なゲーム アセットがすべて読み込まれたときに呼び出す必要があります。基本的に、この状態は、ゲーム サーバーが割り当て可能な状態であり、プレイヤーが接続できることを MPS に通知します。
* **Active**: [RequestMultiplayerServer](xref:titleid.playfabapi.com.multiplayer.multiplayerserver.requestmultiplayerserver) API 呼び出しを使用して[割り当てられた](/services/playfab/multiplayer/servers/allocating-game-servers-and-configuring-vs-debugging-tools)ときに、ゲーム サーバーはこの状態に遷移します。この状態は、プレイヤーがゲーム サーバーに接続してゲームを楽しめることを意味します。ゲーム サーバーがアクティブであるという事実は、ビルドのスケールダウン（つまり standingBy 数が減った場合）中に停止されないことを意味します。
* **Terminating**: [ShutDownMultiplayerServer](xref:titleid.playfabapi.com.multiplayer.multiplayerserver.shutdownmultiplayerserver) API が呼び出されたときに、ゲーム サーバーが遷移する状態です。この状態は、ゲーム サーバーがシャットダウン中で、プレイヤーが接続できなくなることを意味します。

ゲーム サーバー プロセスは、正常またはクラッシュのいずれかで終了する可能性があります。これはどの状態でも発生する可能性があります。MPS は次のことを行います:

* このゲーム サーバーを実行しているコンテナー/プロセスを削除する
* アーカイブ用にゲーム ログを収集してアップロードする（[詳細](/services/playfab/multiplayer/servers/archiving-and-retrieving-multiplayer-server-logs)）
* 終了したものを置き換えるために、新しいコンテナー/プロセスを作成する

<Note>
  ゲーム サーバーは、Active 状態にあるときに StandingBy 状態に戻ることは決してありません。ゲームの状態が Active に設定されると、新しいゲーム サーバーを StandingBy 状態にする唯一の方法は、ゲーム サーバー プロセスが終了することです。
</Note>

### サーバーの最大有効期間

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

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

ゲーム セッションが終了したら、新しいゲーム サーバーを取得できるように、ゲーム サーバー プロセスを正常に終了する必要があります。ゲーム サーバー プロセスがクラッシュした場合、MPS はクラッシュしたものを置き換える新しいゲーム サーバー プロセスを作成します。ゲーム サーバーがスタックまたはフリーズした場合には、[ShutDownMultiplayerServer](xref:titleid.playfabapi.com.multiplayer.multiplayerserver.shutdownmultiplayerserver) API を呼び出して手動でゲーム サーバー プロセスを終了することができます。この API は、ゲーム サーバー プロセスが自身で終了できない場合にのみ呼び出す必要があります。この API を呼び出すと、ゲーム サーバーが "Terminating" および "Terminated" 状態に遷移するのがわかります。また、terminating または terminated 状態でスタックしているサーバーは、一定期間後にシステムによって置き換えられます。

<Note>
  GSDK にはメソッド呼び出しがあり、これを使用するとゲーム サーバーが Unhealthy としてマークされます。現時点では MPS によって無視されていますが、将来変更される可能性があります。この機能が重要な場合は、GSDK リポジトリ [こちら](https://github.com/PlayFab/gsdk/issues) にメモを残してください。
</Note>

### ゲーム サーバーとの GSDK 統合の検証

MPS には、ゲーム サーバーの GSDK 統合をテストするための開発者ツールがあります。このツールは **LocalMultiplayerAgent** と呼ばれ、[こちら](https://github.com/PlayFab/MpsAgent) からダウンロードでき、詳細については [こちら](/services/playfab/multiplayer/servers/locally-debugging-game-servers-and-integration-with-playfab) のドキュメントを参照してください。

### GSDK サンプル

人気のあるゲーム エンジンとの統合を示す GSDK サンプルは、MpsSamples リポジトリ [こちら](https://github.com/PlayFab/MpsSamples) をご確認ください。


## Related topics

- [VM 作成時にカスタム スクリプトを実行する (プレビュー)](/ja-jp/services/playfab/multiplayer/servers/vmstartupscript.md)
- [マルチプレイヤー サーバー ビルドのライフサイクル](/ja-jp/services/playfab/multiplayer/servers/multiplayer-build-lifecycle.md)
- [マルチプレイヤー サーバー ビルド リージョンのライフサイクル](/ja-jp/services/playfab/multiplayer/servers/multiplayer-build-region-lifecycle.md)
- [XBOX および PC マルチプレイヤーの設計ガイダンス](/ja-jp/services/xbox-services/multiplayer/overviews/multiplayer-design-guidance-xbox-pc-gdk.md)
- [クロスプラットフォーム マルチプレイヤーの設計ガイダンス](/ja-jp/services/xbox-services/multiplayer/overviews/multiplayer-design-guidance-cross-platform.md)
