Skip to main content

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 内の NumHeartBeatsForActivateResponseNumHeartBeatsForTerminateResponse の値を更新することで、standing-by/active 状態の期間を調整することもできます。
最終更新日 2026年8月25日