跳轉到主要內容

ThirdPersonMP 範例專案本機部署和偵錯

本指南的目的是示範如何以符合 MPS 的方式在本機電腦上執行遊戲伺服器,讓您可以在將伺服器上傳至 PlayFab 之前進行測試和偵錯。

目標

  • 測試 ThirdPersonMP+GSDK 專案的本機部署選項。
  • 確認您的伺服器在使用 LocalMultiplayerAgent 執行時能正確執行
  • 確認您可以將偵錯工具附加至您的伺服器執行個體

需求

標記法

{depot} 指的是您下載 Git 專案之位置的完整 Windows 路徑。這些可以位於您喜歡的任何位置,例如:C:\depot、S:\depot、Z:\gitrepos,或任何對您方便的磁碟機和路徑。通常建議 (特別是對於 Unreal) 您的 {depot} 路徑越短越好。對於作者而言,{depot} 解析為:M:\depot\GSDK。例如,根據上方的需求清單,您可能會有下列部分或全部內容:
  • {depot}/ThirdPersonMP
  • {depot}/MpsAgent
  • [選用] {depot}/gsdk [這包含先前安裝至 ThirdPersonMP 的 PlayFab Unreal GSDK 外掛程式]
  • [選用] {depot}/UnrealMarketplacePlugin [這包含 PlayFab Unreal Marketplace 外掛程式,本指南不需要它,但大多數 PlayFab 功能都需要它]
並不要求您將所有這些內容放在相同的位置,但這樣做可能很有用,而且為了方便組織,本指南鼓勵您這樣做。

指示

本機執行,不使用容器

首先,您需要設定 LocalMultiplayerAgent 以執行您的伺服器專案。第一次反覆項目會直接在本機電腦上執行處理序,不進行任何隔離。 在檔案總管中,找到並開啟檔案:{depot}\MpsAgent\LocalMultiplayerAgent\MultiplayerSettings.json。此檔案的縮寫版本以及對本指南重要的部分如下 [請注意 json 中路徑的 \ 已逸出——這是 json 檔案,因此必須將所有 \ 逸出為 \\]:
就本指南而言,上方以 ... 遮蔽的 json 檔案部分只需使用專案預設值即可。重要欄位的用途和值如下:
  • RunContainer:對於本指南,此值一律為 false。將其設定為 true 需要 Docker。
    • 為 true 時,會忽略 ProcessStartParameters/StartGameCommand,改用 ContainerStartParameters/StartGameCommand
    • 為 true 時,所有內容都會在 docker 容器中建置和執行,而不是在本機電腦內容中
    • 本指南涵蓋 RunContainer 為 false 的案例,以便我們能更輕鬆地對伺服器處理序進行偵錯
    • 將其設定為 true 需要發行伺服器組建,以及額外的 Windows 版 Docker
  • OutputFolder:"<Local absolute path that will be used to store the required output artifacts>"
    • 此位置必須完整定義,且此位置必須存在有效的目錄。
  • AssetDetails/LocalFilePath:{PATH-TO-ZIP}
    • 此位置必須完整定義,且此位置必須存在有效的 zip 檔案
    • 此 zip 檔案應包含完整建構的 “Shipping Server” 組建
  • PortMappingsList:
    • 這相當於在 Game Manager 中定義連接埠的 LocalMultiplayerAgent 版本
    • GSDK 外掛程式以硬式編碼方式尋找名稱為 gameport 的連接埠
    • GSDK 外掛程式的 SetDefaultServerHostPort 方法會在內部覆寫內部 Unreal 伺服器裝載連接埠,使其與此連接埠相符
    • GSDK 外掛程式_只會_使用名為 gameport 的連接埠,使用 LocalMultiplayerAgent 時,此連接埠是在 PortMappingsList 中設定的。
    • 此 json 可讓您在本機測試由 MPS 驅動此連接埠號碼,並確保您的 GSDK 外掛程式能正確接收它
  • ContainerStartParameters/StartGameCommand:當 RunContainer 為 false 時,不會使用此項目。
    • 當 RunContainer==true 時,它會取代 ProcessStartParameters/StartGameCommand
    • 此路徑是 docker 容器內的內部路徑,將是 AssetDetails/MountPath 加上 AssetDetails/LocalFilePath 所定義之 zip 檔案中 exe 的內部路徑
    • 對於此範例,這可以是:C:\\Assets\\ThirdPersonMPServer.exe -log
  • ProcessStartParameters/StartGameCommand:此命令實際上將是您的 exe 路徑,以及用來啟動遊戲伺服器的任何命令列參數
    • -log 是 Unreal 命令,指示遊戲伺服器儲存執行記錄
    • {PATH-TO-EXE} 可以是下列兩個選擇之一:
      • 遊戲伺服器 exe (甚至是開發遊戲伺服器) 的任何絕對路徑,加上伺服器的任何命令列參數
        • 此選擇會忽略 zip 檔案的內容,而是執行任何位置的任意 exe
        • 這是本機偵錯選項,只能在您的本機電腦上用來對開發組建進行偵錯:它無法協助您驗證 zip 檔案是否已準備好上傳至 MPS
        • 測試開發伺服器時應使用此選擇,適合附加 VS 偵錯工具
        • 對於此範例,這可以是:{depot}\\ThirdPersonMP\\Binaries\\Win64\\ThirdPersonMPServer.exe -log
        • 對於作者而言,這是:M:\\depot\\GSDK\\ThirdPersonMPGSDK\\Binaries\\Win64\\ThirdPersonMPServer.exe -log
      • 相對路徑,應指出 zip 檔案中執行伺服器的相對路徑
        • 這是反映 MPS 雲端執行個體運作方式的標準工作流程
        • 測試發行伺服器時應使用此選擇,有助於驗證您的 zip 是否已準備好上傳至 MPS
        • 對於此範例,這可以是:ThirdPersonMPServer.exe -log
建立 zip 檔案並將所有這些行設定為適當的值後,您可以重新建置 LocalMultiplayerAgent,並準備對伺服器進行偵錯。

對伺服器進行偵錯

您可以使用 “Start New Instance” 命令 (有時繫結至 F5) 從 Visual Studio 執行 LocalMultiplayerAgent,或瀏覽至 {depot}\LocalMultiplayerAgent\bin\{configuration}\netcoreapp3.1 並按兩下 “LocalMultiplayerAgent.exe”。您也可以從 cmd 視窗內執行它,以觀察或擷取偵錯記錄資訊。 執行 LocalMultiplayerAgent.exe 應該會啟動您的遊戲伺服器。您通常會想要為此開啟工作管理員。您可以在工作管理員的 Details 索引標籤中找到遊戲伺服器處理序識別碼。 在工作管理員中看到 ThirdPersonMPServer 處理序正在執行後,您可以返回 Visual Studio,選取 Debug 下拉式清單 -> Attach to Process。在快顯視窗中,您可以搜尋處理序名稱:ThirdPersonMPServer,然後選取從工作管理員中識別出的正確處理序識別碼。 此時,您應該能夠對遊戲伺服器執行一般的偵錯。 注意:Unreal 提供多種組建設定和多種建置伺服器的方式。為了獲得最佳結果,請使用直接從 Visual Studio 建置的 “Development Server” 設定和輸出。發行組建或來自 Development Editor 的組建在其他情況下可能效果更好,但直接從 Visual Studio 建置的 “Development Server” 設定在 Visual Studio 中更容易附加和偵錯。

疑難排解

工作管理員中有許多 ThirdPersonMPServer 執行個體

如果列出多個執行個體 (通常 3 個以上),您可能需要使用工作管理員強制關閉先前嘗試遺留下來的執行個體。

LocalMultiplayerAgent 啟動兩個 ThirdPersonMPServer 執行個體

如果您的 LocalMultiplayerAgent _啟動_多個執行個體,請尋找記憶體使用量相對較高的處理序識別碼。遊戲伺服器的某些設定會產生兩個可執行檔,以配對方式執行。您會想要附加至記憶體使用量較高的那一個。

後續步驟

您現在已準備好將您的伺服器部署至雲端。 或者,您可以返回主要的 Unreal GSDK 外掛程式指南。
最後修改於 2026年10月8日