跳轉到主要內容

如何以處理序模式使用 LocalMultiplayerAgent 執行遊戲伺服器

本教學課程說明如何:
  • 使用 Wrapper 範例建立組建
  • 設定 MultiplayerSettings.json
  • 執行 LocalMultiplayerAgent
  • 測試遊戲連線

建立遊戲組建

若要使用 LocalMultiplayerAgent (LMA) 測試遊戲伺服器,您需要建立遊戲組建並將其儲存為封存格式。 為了讓您更輕鬆,我們提供了 Wrapper 範例以及指示和 PowerShell 指令碼。 接著,請依照「使用 wrapper 應用程式包裝現有的遊戲伺服器」步驟,為本教學課程準備好您的遊戲伺服器。

設定 MultiplayerSettings.json

瀏覽至您解壓縮 LMA 工具組的資料夾,然後開啟 MultiplayerSettings.json 檔案。此檔案是一個組建設定模擬檔案,用來模擬 MPS 上的組建。 您可以使用 LMA MultiplayerSettings.json 產生器填入 json。 產生器是一個簡單的網頁,會根據您的選項建立 json。您可以在 LMA 的解壓縮資料夾下找到產生器。 以下是 Wrapper 範例以處理序模式執行 LMA 的 MultiplayerSettings.json 範例。
請務必在 MultiplayerSettings.json 中正確更新下列欄位,以處理序模式執行 LMA。
  • LocalFilePath - 先前建立之遊戲伺服器資產 zip 檔案的完整本機路徑 (在您的工作站上),例如:D:\MyAmazingGame\asset.zip (請注意,反斜線需要針對 JSON 格式進行逸出)。
  • StartGameCommand - 處理序的 StartGameCommand 路徑是相對路徑。工作目錄將是遊戲資產解壓縮的位置。
  • PortMappingsList - 這些是遊戲在執行時可用的連接埠。
    • NodePort 是在您的工作站上開啟的連接埠
    • 處理序模式不需要 GamePort.Number。遊戲伺服器執行時,連接埠號碼會透過 GSDK 繫結至 Node Port。在實際案例中,MPS 會為每個處理序型遊戲工作階段動態繫結連接埠。
    • 將 GamePort.Name 設定為與遊戲伺服器中定義的相同值。您可以在執行階段檢查 GSDK 設定中索引鍵 GamePort.Name 的值。如果您使用的是 Wrapper 範例,連接埠名稱已定義為 “game_port”,因此您應在此處設定相同的值。
    • GamePort.Protocol - 指定通訊協定類型:TCP 或 UDP
  • OutputFolder - 產生輸出和設定檔之磁碟機或資料夾的路徑。由於遊戲伺服器將解壓縮至此路徑下,請確定有足夠的可用空間。如果未指定,則會使用代理程式資料夾。
  • AgentListeningPort - 這是 LMA 與遊戲伺服器通訊的連接埠。任何開放的連接埠都可以使用,預設值為 56001。如果您有其他處理序繫結至 56001,則必須變更此值或終止連接埠 56001 上的其他處理序。
  • ResourceLimits - 處理序模式不需要。
  • MountPath - 處理序模式不需要。
  • SessionCookie (選用) - 作為 RequestMultiplayerServer API 呼叫的一部分傳遞給遊戲伺服器的任何工作階段 Cookie。在 MPS 上的實際案例中,建立連線後,伺服器會通知用戶端從 SessionCookie 載入對應的資源。

執行 LocalMultiplayerAgent

現在您已準備好執行 LocalMultiplayerAgent。
  • 在 PowerShell 視窗中:
    瀏覽至 LMA 下包含 LocalMultiplayerAgent.exe 的目錄。
  • 執行 LocalMultiplayerAgent.exe。 此時,LMA 會設定 http 接聽程式、解壓縮遊戲資產,並在個別的處理序中啟動遊戲伺服器。
    如果您以處理序的形式執行遊戲伺服器,Windows 防火牆可能會跳出視窗,詢問您是否要允許流向您所指定之 NodePort 的流量。如果您想避免這種情況,可以以系統管理員模式執行 LocalMultiplayerAgent,或在防火牆中啟用該連接埠。
LMA 會等待與遊戲伺服器整合之 GSDK 的活動訊號。 如果 GSDK 整合正確,LMA 會依下列順序列印輸出:
  1. CurrentGameState - Initializing
    (如果您的遊戲伺服器直接呼叫 GSDK::ReadyForPlayers 而未呼叫 GSDK::Start,則可能不會顯示此項)
  2. CurrentGameState - StandingBy
  3. CurrentGameState - Active
  4. CurrentGameState - Terminating
若要深入了解遊戲伺服器的狀態,請參閱 PlayFab 多人遊戲伺服器的遊戲伺服器生命週期是什麼。 如果關閉回呼設定正確,您的遊戲伺服器會在狀態設定為終止後很快結束。 請務必確認遊戲伺服器會結束,以避免在 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 的值,以調整待命/作用中狀態的持續時間。
最後修改於 2026年10月8日