PlayFab ゲーム サーバーの基本
PlayFab はゲーム サーバーをコンテナー化アプリケーションとして動作させます。 このチュートリアルでは、ゲーム サーバーがどのようにパッケージ化されていて PlayFab システムとどのように統合されているかについて説明します。
ゲーム サーバーのコンテナー化とパッケージ化
Windows
Windows では通常、ゲーム サーバー実行可能ファイルと他のファイルを zip ファイルとしてパッケージ化し、それをゲーム アセットとしてアップロードします。 アセットはゲーム サーバー ビルドを作成するためのコンテナー イメージに統合されています。 ベース コンテナー イメージでは、Windows オペレーティング システムのファイルと、そのゲームを実行するための実行環境が提供されます。 PlayFab では、Windows ビルドで使用するための一連のマネージド イメージが提供されます。
ゲーム マネージャーまたは CreateBuildWithManagedContainer() などの API を使用して Windows ビルドを作成する場合は、アセットと、コンテナーのファイル システム内でそのアセットをマウントする場所を指定します。 また、ゲームを開始するシェル コマンド (StartGameCommand
) を指定します。これは、以下に示しているものと類似している場合があります。
C:\GameCoreApp\GameServer.exe -mode RETAIL
StartGameCommand
は、PlayFab ゲーム サーバー SDK を使用するアプリケーションを起動して、ゲーム クライアントに対応する準備ができたときに ReadyForPlayers
を呼び出す必要があります。 アプリケーション プロセスが終了すると、コンテナーは終了しリサイクルされます。
Linux
Linux では、ゲームの実行可能ファイルとアセットをパッケージ化して、コンテナー イメージを自分で作成します。 実行時にコンテナー イメージと組み合わされるアセットの使用はオプションとなります。
ゲーム マネージャーまたは CreateBuildWithCustomContainer() などの API を使用して Linux ビルドを作成する場合は、オプションでアセットと、コンテナーのファイル システム内でそのアセットをマウントする場所を指定します。 ゲームを開始するためのシェル コマンド (StartGameCommand
) 指定も、コンテナー イメージにも含めることができるためオプションとなります。
注意
PlayFab マルチプレイヤー サーバー用の Linux コンテナー イメージの作成の詳細については、このページ確認してください
Windows 用マネージド コンテナー
PlayFab では現在 1 つのマネージド コンテナーがサポートされていて、それは Windows Server Core に基づく PlayFab マルチプレイヤー コンテナー イメージです。 そのコンテナーを Docker Hub からダウンロードして、デベロッパーのローカル環境を Azure のランタイム環境に適合させることができます。
デベロッパー ボックス上でローカルにマルチプレイヤー サーバーのステート マシンをステップ実行できるデバッグ ツールがあります。
詳細については、「ゲーム サーバーおよび PlayFab との統合のローカルでのデバッグ」を参照してください。
次の図は、ゲーム サーバーをアップロードして、このパッケージを、選択したコンテナーと組み合わせるための主なフローを示しています。
マネージド コンテナーの更新
マネージド コンテナーは、Windows プロジェクトでの最も簡単な統合オプションであり、コンテナーに詳しくないデベロッパーが開始するのに適しています。
マネージド コンテナーの重要な機能は、PlayFab が基本イメージの重要なセキュリティ修正を自動的に適用することで、信頼性の高いプレイが確保されることです。 通常、セキュリティ更新プログラムは毎月発生しますが、サービスは中断されません。 詳細については、「Windows の OS パッチ の更新プログラム」を参照してください。
アップグレード中に、自然に再利用されているスタンバイ セッションは、更新済みのコンテナー イメージおよび同じゲーム サーバー パッケージで置き換えられます。
デベロッパーが使用中のマネージド コンテナー イメージを PlayFab が更新しようとすると、デベロッパーは PlayStream イベントを受信します。
PlayFab ゲーム サーバー SDK の統合
詳細情報:「ゲーム サーバーの PlayFab ゲーム サーバー SDK (GSDK) との統合」
PlayFab Game Server SDK (GSDK) は、C++、C#、Java などの複数のプログラミング言語で提供されます。 GSDK はユーザーのゲーム サーバーを、VM にインストールされているローカル エージェントに接続します。 このエージェントによって、PlayFab 制御インフラストラクチャとサーバーとの主な対話が容易になります。
ユーザーのゲーム サーバーが初期化されると「準備」状態になり、PlayFab はゲーム サーバーが ReadyForPlayers()
を呼び出すのを待機します。
その関数が呼び出されると、ゲーム サーバーは「スタンバイ」状態になり、マッチメイキング サービスから PlayFab への RequestMultiplayerServer メソッドによる割り当て要求を待機します。
次の図に、PlayFab マルチプレイヤー サーバーの状態を示しています。
ゲーム サーバーが実行されて動作し続けるための要件は、表向きは ReadyForPlayers()
の呼び出しだけです。 ですが、最適なユーザー エクスペリエンスを提供するために、いくつかのコールバックやイベントの処理が必要になることがあります。
サーバー スクリプトおよび PlayFab が構成する環境変数
コンパイル済みゲーム サーバー実行可能ファイルを起動する CMD、PowerShell、または bash のスクリプト (「bootstrapper」) をゲーム サーバーで実行することもできます。 このスクリプトでは、コンテナーの内部環境を構成したり、実行可能ファイルにコマンド ライン引数を渡したり、ゲーム サーバー実行可能ファイル自体で実行したくない他のタスクを実行したりできます。
利便性を考慮して、PlayFab では、一部のビルド情報がコンテナーでの以下の環境変数として構成されます。 これらの情報には、GSDK を使用してアクセスすることもできますが、スクリプトでは環境変数を使用する方が簡単です。
- PF_TITLE_ID - セッション ホストのタイトル ID
- PF_BUILD_ID - セッション ホストのビルド ID
- PF_REGION -セッション ホストの Azure リージョン
- PUBLIC_IPV4_ADDRESS - VM のパブリック IP アドレス
- PF_VM_ID - VM の一意識別子 (例: 'xcloudeau4u4yyxj4xymu:AustraliaEast:1E03_6f27ad88-9bc3-4ea3-8d16-75480aba4637:tvmps_0e05c37e0bbdca298a09fb0d597bd666eb7c5fd0ebcf1fed4c52e608a39a7c9c_d')
- CERTIFICATE_FOLDER - ゲーム証明書を含むフォルダー
- PF_SERVER_LOG_DIRECTORY - ゲーム ログを含むフォルダー
- PF_SERVER_INSTANCE_NUMBER - サーバーのインスタンス番号。 VM 上の最初のサーバーは 0、2 番目は 1、3 番目は 2 などです。