為專用伺服器匯出

若想以獨立伺服器的模式在沒有 GPU 或顯示伺服器的機器上執行專案,則必須要使用伺服器建置版本的 Godot。

支援平台

若專案使用 C#,則必須使用有啟用 Mono 的伺服器二進位檔。

「無周邊」vs「伺服器」二進位檔

伺服器下載頁面 提供了兩種二進位檔,這兩種二進位檔有一些不同的地方。

  • Server (伺服器): 用於在專用伺服器上執行。不包含編輯器的功能,因此比較小,也更最佳化。

  • Headless (無週邊): 包含編輯器功能的二進位檔,目的是用來匯出專案。該二進位檔 可以 用來執行專用伺服器,但因為檔案比較大,也比較沒最佳化,所以不建議這樣用。

匯出 PCK 檔

有兩種方法可以為伺服器匯出專案:

  • 建立 Linux/X11 匯出預設設定,並定義指向伺服器二進位檔的自定 Release 匯出樣板,然後照往常一樣匯出專案即可。

  • 只匯出 PCK 檔,建議從 Linux/X11 匯出預設設定中匯出。

這兩種方法產生的結果都相同。下方說明了 PCK 檔的這個方法。

下載好伺服器二進位檔後,需要匯出包含專案資料的 PCK 檔。建立好匯出預設後,點擊 [匯出] 對話框下方的 [匯出 PCK/ZIP] 並選擇目標路徑。對話框中的 Export With Debug 勾選框不會影響最終的 PCK 檔,可以不動這個選項。

更多資訊請參考 匯出專案

備註

若從無周邊 (Headless) 編輯器中匯出專案,請在專案資料夾中使用 --export-pack 選項來呼叫無周邊編輯器以匯出 PCK 檔。

備註

PCK 檔案會包含一些在伺服器上通常不需要的資源,如紋理與聲音檔。這表示,PCK 檔可能比實際可能的大小還要大。從 PCK 檔中將伺服器不需要使用的資源移除的功能已計劃於未來的 Godot 版本中提供。

往好處想,這樣依賴就可以在用戶端與專屬伺服器建置中使用同一個 PCK 檔。這樣也適用於在用戶端與專用伺服器上使用同一個壓縮檔的情況。

準備伺服器發佈

下載或編譯伺服器二進位後,應將其放置於與匯出的 PCK 檔相同的資料夾中。伺服器二進位檔的檔名應與 PCK 檔相同 (除了副檔名)。這樣一來 Godot 才能自動偵測要使用的 PCK。若想用以不同名稱的 PCK 檔來啟動伺服器,則可以使用 --main-pack 命令行引數來指定 PCK 檔的路徑:

./godot-server --main-pack my_project.pck

開啟專用伺服器

若用戶端與伺服器端都屬於相同的 Godot 專案,則必須要加上能直接以命令行引數來開啟伺服器的方法。可以通過在主要場景 (或單例) 的 _ready() 方法中加上下列程式碼片段來實現:

if "--server" in OS.get_cmdline_args():
    # Run your server startup code here...
    # Using this check, you can start a dedicated server by running
    # a Godot binary (headless or not) with the `--server` command-line argument.
    pass

另外,也可以在偵測到無周邊或伺服器二進位檔時開啟專用伺服器:

# Note: Feature tags are case-sensitive! It's "Server", not "server".
if OS.has_feature("Server"):
    # Run your server startup code here...
    # Note that using this check may break unit testing scripts when
    # running them with headless or server binaries.
    pass

如果用戶端與伺服器端是分開的兩個 Godot 專案,則伺服器通常應該都設定好會在主要場景開啟時自動執行伺服器。

下一步

在 Linux 中,請確保專用伺服器會在當機或系統重開機的時候重新啟動,可以 建立 systemd 服務 (英文) 。這樣也可以更方便地檢視伺服器日誌,並且 systemd 會提供自動日誌切割 (log rotatioin)。

若有 Container 的使用經驗,也可以試試將專屬伺服器包裝在 Docker Container 中。這樣一來要設定自動縮放就更簡單了 (但這不在本教學的討論範圍內)。