メインコンテンツへスキップ

LocalMultiplayerAgent を使用してプロセスモードでゲーム サーバーを実行する方法

このチュートリアルでは、次の手順について説明します。
  • Wrapper サンプルを使用したビルドの作成
  • MultiplayerSettings.json の構成
  • LocalMultiplayerAgent の実行
  • ゲーム接続のテスト

ゲームビルドの作成

LocalMultiplayerAgent (LMA) を使用してゲーム サーバーをテストするには、ゲームビルドを作成し、アーカイブ形式で保存する必要があります。 より簡単にするために、手順と PowerShell スクリプトを含む Wrapper サンプルを提供しています。 次に、「wrapper アプリを使用して既存のゲーム サーバーをラップする」の手順に従い、このチュートリアル用にゲーム サーバーを準備します。

MultiplayerSettings.json の構成

LMA ツールセットを解凍したフォルダーに移動し、MultiplayerSettings.json ファイルを開きます。このファイルは、MPS 上のビルドをシミュレートするビルド構成のモックファイルです。 LMA MultiplayerSettings.json Generator を使用して json を作成できます。 Generator は、選択したオプションに基づいて json を生成するシンプルな Web ページです。Generator は LMA の解凍済みフォルダー内にあります。 以下は、プロセスモードで LMA を実行するための Wrapper サンプル用 MultiplayerSettings.json の例です。
プロセスモードで LMA を実行するには、MultiplayerSettings.json の次のフィールドを正しく更新してください。
  • LocalFilePath - 先ほど作成したゲーム サーバーのアセット zip ファイルへのフル ローカル パス(ワークステーション上)。例: D:\MyAmazingGame\asset.zip(JSON フォーマットではバックスラッシュをエスケープする必要があることに注意してください)。
  • StartGameCommand - プロセスの StartGameCommand パスは相対パスです。作業ディレクトリはゲームアセットが解凍される場所となります。
  • PortMappingsList - 実行中のゲームで使用可能なポートです。
    • NodePort はワークステーション上で開かれるポートです。
    • GamePort.Number はプロセスモードでは必要ありません。ゲーム サーバーの実行中に、GSDK 経由でポート番号が Node Port にバインドされます。実際のシナリオでは、MPS が各プロセスベースのゲームセッションごとに動的にポートをバインドします。
    • GamePort.Name はゲーム サーバーで定義したものと同じ値に設定してください。実行時に、キー GamePort.Name で GSDK 構成の値を確認できます。Wrapper サンプルを使用している場合、ポート名は既に “game_port” として定義されているので、ここでも同じ値を設定する必要があります。
    • GamePort.Protocol - プロトコル タイプを指定します: TCP または UDP
  • OutputFolder - 出力と構成ファイルが生成されるドライブまたはフォルダーへのパス。ゲーム サーバーがこのパスの下に解凍されるため、十分な空き容量があることを確認してください。指定しない場合、agent フォルダーが使用されます。
  • AgentListeningPort - これは LMA がゲーム サーバーと通信するためのポートです。空いているポートであれば何でも使えますが、デフォルト値は 56001 です。他のプロセスが 56001 にバインドされている場合は、この値を変更するか、ポート 56001 上の他のプロセスを終了する必要があります。
  • ResourceLimits - プロセスモードでは必要ありません。
  • MountPath - プロセスモードでは必要ありません。
  • SessionCookie (オプション) - RequestMultiplayerServer API 呼び出しの一部としてゲーム サーバーに渡されるセッション Cookie。MPS の実際のシナリオでは、接続が確立された後、サーバーはクライアントに SessionCookie から対応するリソースを読み込むよう通知します。

LocalMultiplayerAgent の実行

これで LocalMultiplayerAgent を実行する準備ができました。
  • PowerShell ウィンドウで: LocalMultiplayerAgent.exe を含む LMA 配下のディレクトリに移動します。
  • LocalMultiplayerAgent.exe を実行します。 この時点で、LMA は http リスナーをセットアップし、ゲームアセットを解凍し、別プロセスとしてゲーム サーバーを起動します。
    プロセスとしてゲーム サーバーを実行している場合、指定した NodePort へのトラフィックを許可するかどうかを尋ねる Windows Firewall のポップアップが表示される場合があります。これを避けたい場合、LocalMultiplayerAgent を管理者モードで実行するか、ファイアウォールでポートを有効にすることができます。
LMA は、ゲーム サーバーに統合された GSDK からのハートビートを待機します。 GSDK が正しく統合されていれば、LMA は次の順序で出力を表示します。
  1. CurrentGameState - Initializing (ゲーム サーバーが GSDK::ReadyForPlayers を直接呼び出し、GSDK::Start を呼び出さない場合、これは表示されないことがあります)
  2. CurrentGameState - StandingBy
  3. CurrentGameState - Active
  4. CurrentGameState - Terminating
ゲーム サーバーの状態について詳しくは、「What is Game Server Lifecycle of PlayFab Multiplayer Server」を参照してください。 シャットダウン コールバックが正しく設定されていれば、状態が terminating に設定された直後にゲーム サーバーは終了します。 PlayFab プラットフォーム上での不正なシャットダウンを避けるため、ゲーム サーバーが確実に終了することを確認することが重要です。 LMA もゲームと共に終了します。

ゲームへの接続テスト

LMA が CurrentGameState - Active を表示したら、IP アドレス 127.0.0.1 と、ゲーム サーバーがリッスンしているポート NodePort を使用してゲーム サーバーに接続できます。 Wrapper サンプルを使用している場合は、ブラウザーに http://127.0.0.1:56100/Hello を入力して GET リクエストをテストできます。 詳細については、Wrapper サンプルを確認してください。 MultiplayerSettings.json 内の NumHeartBeatsForActivateResponse と NumHeartBeatsForTerminateResponse の値を更新することで、standing-by/active 状態の期間を調整することもできます。
最終更新日 2026年10月20日