跳轉到主要內容
本文包含如何在 PlayFab 多人遊戲伺服器上使用容器和處理序建立 Linux 組建的詳細資料。

建立和部署 Linux 容器映像

本節概述協助您建立和部署 Linux 容器映像的具體步驟。 如建立虛擬機器 (VM) 中所述,使用我們的服務時,您可以設定 VM,使其根據您的預算和需求在全球自動啟動為遊戲伺服器。為此,您不需要明確建立 VM,而是定義參數來決定如何代表您建立 VM。此程序稱為部署或建立組建。 PlayFab 多人遊戲伺服器可以部署 Linux 型和 Windows 型遊戲伺服器。Linux 容器的組建部署方式與 Windows 容器類似,但有一些重要差異。若要深入了解,請參閱 Windows 和 Linux 容器映像的差異。如果您想要使用 PowerShell/API 管理 Linux 容器,請參閱使用 API 管理 Linux 容器映像。 使用 Linux 型遊戲伺服器時,您必須建立容器映像並上傳至容器登錄,而不是使用受控容器映像。為了讓您輕鬆上傳容器,您的帳戶附有一個 Azure 容器登錄。

必要知識

設定您的 Windows 開發裝置

只有在您想要使用 Windows 開發裝置建立 Linux 容器映像時,才需要此步驟。或者,您可以使用已安裝 Docker 的 Linux 作業系統裝置、VM 或雙作業系統。 Windows 子系統 Linux 版 (WSL) 可讓您在熟悉的 Windows 環境中使用開發裝置來撰寫和管理 Linux 容器映像。使用 WSL 表示您不需要承擔傳統 Linux 虛擬機器或雙重開機設定的額外負荷。
  1. 安裝 WSL 2。請確定您已重新啟動電腦並使用 WSL 2。您也需要安裝 Linux 核心更新套件。
  2. 安裝使用 WSL 的 Linux 發行版本。雖然我們的 VM 使用 Ubuntu,但您可以為容器映像選取任何想要的發行版本。請考慮使用 Ubuntu 20.04 長期支援 (LTS) 或更新版本。
  3. 使用 WSL 2 安裝 Windows 版 Docker Desktop。如需直接下載連結,請前往 Windows 版 Docker Desktop (外部)。
驗證 WSL 2 設定
  • 開啟 PowerShell
  • 執行 wsl -l -v,檢查 docker-desktop 和 ubuntu 應用程式是否都在執行 WSL 2 (版本 2)
驗證已為 WSL 正確設定 Docker
  • 開啟 WSL 終端機
  • 執行 docker version,確認已安裝 Docker 且使用的作業系統為 Linux
若要開發和偵錯 Linux C++ 應用程式,請使用 Visual Studio 2019 中的 WSL。

取得您的 PlayFab 容器登錄登入認證

Azure 容器登錄帳戶與您的 PlayFab 帳戶相關聯。只有您可以存取上傳至該處的容器。此 Azure 容器登錄是免費的。
  • 在 Game Manager 中,選取您的遊戲,然後選取 Multiplayer > Servers。選取 New build 以開啟組建建立頁面。
  • 選取 Linux 作為虛擬機器作業系統。
  • 記下登入認證—名稱、密碼和 customer5555555.azurecr.io,因為稍後需要這些資訊
已選取 Linux 平台的新組建 如果您想要使用 PowerShell/API,請呼叫 GetContainerRegistryCredentials API 以擷取容器登錄位址、使用者名稱和密碼。

建立 Linux 容器映像並推送至 Azure Container Registry

這些步驟可協助您建立並推送自訂 Linux 容器映像。

將遊戲伺服器應用程式與 GSDK 整合

與使用 Windows 伺服器類似,您必須將遊戲伺服器程式碼與 PlayFab 多人遊戲伺服器 SDK (GSDK) 整合。GSDK 整合可以是容器映像的一部分。 如需指示,請參閱撰寫遊戲伺服器組建和將您的遊戲與 PlayFab 遊戲伺服器 SDK (GSDK) 整合。

建立 Dockerfile

Dockerfile 是沒有副檔名的文字檔,包含建置指定容器映像所需的所有命令。
  1. 開啟__記事本__或任何合適的編輯器
  2. 新增執行和建置容器所需的特定命令。如需此檔案的範例,請參閱 Wrapper 範例中提供的 DockerFile。如需如何建立此檔案的詳細資訊,請參閱 Dockerfile 格式 (外部) 和建立 Dockerfile 時的最佳做法 (外部)
  3. 將檔案儲存為 Dockerfile,最好放在空的資料夾/目錄中。您應將建置容器映像所需的其他檔案新增至此資料夾。
使用__記事本__時的儲存指示:
  • 選取 File> Save as… 以開啟儲存選項
  • 前往您要儲存檔案的資料夾
  • 在 File name: 下,使用 “Dockerfile”,包括引號。
  • 對於 Save as type:,選取 All Files
  • 選取 UTF-8 編碼
  • 選取 Save

建置並上傳 Linux 容器映像

  1. 開啟已安裝 Docker 的 Linux 終端機。
  2. 使用先前步驟取得的登入認證執行下列 Docker 命令。然後依照螢幕上的指示輸入您的使用者名稱和密碼。
docker 登入會將您登入 Game Manager 中所示的 Azure 容器登錄。
  1. 建置容器映像
執行下列命令,使用目前目錄中的 Dockerfile 建置容器映像。docker build 命令結尾有一個 ”.”。 -t 旗標會指定新容器映像的 name:tag 資訊。如果建置成功,就會使用該名稱和標記。如果有建置錯誤,您必須先修正錯誤,才能繼續下一個步驟。 在下列範例中,存放庫名稱為 customer5555555.azurecr.io/pvp_gameserver,標記為 v1。如需詳細資訊,請參閱 docker build 命令參考 (外部連結) 和建置 Dockerfile (外部連結)。 使用 WSL 時,Windows C: 磁碟機會掛接在 /mnt/c。
  • 接著執行 cd /mnt/c/path/to/your/Dockerfile,切換至 Dockerfile 所在的路徑。 如需詳細資訊,請參閱存取 C 磁碟機。
使用 Linux 時,執行 pwd 可找出您目前所在的目錄。
  1. 上傳容器映像
執行命令,將映像推送至您的 PlayFab 容器登錄。為上傳的容器映像選取有意義且實用的 name:tag 組合。若要將容器上傳至 PlayFab 營運的登錄,請使用 docker push 或其他容器登錄用戶端。

檢查您的容器是否已上傳

上傳容器後,返回 Game Manager 中的 New Build 頁面,然後選取 Refresh Images。您將能在清單中看到並選取該映像。或者,您可以使用 ListContainerImages API 呼叫列出已上傳的容器映像。 現在您已準備好部署伺服器。如需指示,請參閱 PlayFab 入口網站—Game Manager 和使用 PowerShell/API。

Windows 和 Linux 容器映像的差異

對於許多開發人員來說,使用 Windows 受控容器是偏好的簡單預設選擇。不過,部署在虛擬機器上的 Linux 容器映像享有較便宜的每小時費率。
無論您使用 Windows 還是 Linux 容器映像,都可以完全自訂您的遊戲伺服器。使用 Windows 伺服器時,您可以透過上傳資產來自訂受控容器映像。
下表列出建立和使用它們時的一些差異。

使用 API 管理 Linux 容器映像

您可以使用 API 管理 Linux 容器映像。對於組建生命週期的其餘部分 (檢視使用量、更新區域和待命設定、刪除),請使用 Game Manager 進行管理。
  • GetContainerRegistryCredentials:擷取容器登錄位址、使用者名稱和密碼
  • ListContainerImages 和 ListContainerImageTags:確定已列出您的新映像和標記 (有時映像可能需要幾分鐘才能在系統中完全註冊)
  • CreateBuildWithCustomContainer:使用自訂容器建立組建。指定您先前上傳的已標記映像。確定要求上已設定下列屬性:
    • ContainerImageReference - 先前上傳的映像名稱和標記。這些值可在 ListContainerImages 和 ListContainerImageTags 中看到。
    • ContainerFlavor - “CustomLinux”
    • ContainerRunCommand (選用) - 如果您的容器沒有預設命令,請使用此屬性提供要執行的命令以及任何引數。

為 Linux 處理序型伺服器封裝資產

以處理序模式 (而非容器模式) 使用 Linux 時,您需要將遊戲伺服器上傳為資產封存,而不是容器映像。本節涵蓋重要的封裝需求。

支援的封存格式

資產應上傳為 .tar.gz 或 .tar 檔案,以便在解壓縮期間保留 Unix 檔案權限 (例如執行位元)。
**.zip 檔案在 Linux 上不會保留 Unix 檔案權限。**如果您將 Linux 遊戲伺服器可執行檔以 .zip 封存上傳,它會失去執行權限,並在啟動時失敗,出現 “Permission denied” 錯誤。若要因應此問題,請改用 .tar.gz,或將啟動命令設定為在啟動可執行檔之前對其執行 chmod +x 的殼層指令碼。

Tar.gz 和 tar 封存結構需求

解壓縮 .tar 或 .tar.gz 封存時,PlayFab 多人遊戲伺服器會移除封存中的第一層目錄 (相當於 tar --strip-components=1)。您的封存必須包含單一最上層包裝目錄,並將所有遊戲檔案放在其中。 正確的結構——檔案位於最上層目錄內:
使用下列命令建立封存:
如果您的檔案位於封存的根目錄而沒有包裝目錄,它們會在解壓縮期間被無聲略過。由於可執行檔從未寫入磁碟,您的遊戲伺服器會失敗並出現 “No such file or directory” 錯誤。

設定啟動命令

對於處理序型伺服器,啟動命令應相對於解壓縮後的根資產資料夾 (也就是相對於移除最上層目錄後檔案最終所在的位置)。 例如,如果您的封存包含 MyGameServer/MyGame.x86_64,解壓縮後該檔案會位於資產資料夾的根目錄。將啟動命令設定為:
如果您的可執行檔位於子資料夾內 (例如 MyGameServer/bin/MyGame.x86_64),請將啟動命令設定為:

使用 API 管理 Linux 處理序型組建

您可以使用 API 管理 Linux 處理序型組建。對於組建生命週期的其餘部分 (檢視使用量、更新區域和待命設定、刪除),請使用 Game Manager 進行管理。
  • CreateBuildWithProcessBasedServer:建立遊戲伺服器以處理序形式執行的組建。確定要求上已設定下列屬性:
    • OsPlatform - “Linux”
    • GameAssetReferences - 遊戲資產清單 (以 .tar.gz 或 .tar 檔案上傳)。每個資產都需要與上傳之資產名稱相符的 FileName。
    • StartMultiplayerServerCommand - 遊戲伺服器啟動時要執行的命令。路徑應相對於解壓縮後的根資產資料夾 (例如 MyGame.x86_64 -server)。
    • Ports - 要為組建對應的連接埠。
    • MultiplayerServerCountPerVm - 單一 VM 上要裝載的遊戲伺服器執行個體數目。
    • RegionConfigurations - 要部署至的區域,以及待命伺服器數和伺服器數上限。

另請參閱

最後修改於 2026年10月8日