2015-05-05

Don't Starve Together Dedicated Server 架設教學 I

這篇是第一篇有關 DST Dedicated Seraver 的架設教學,有鑑於目前中文環境中似乎沒有一篇比較詳細的整理,所以小弟獻醜來提供一篇教學。

本文主要是針對 Windows 平台上的 Dedicated Server 的架設教學,並不是使用 DST 主程式所附帶的 Server 功能,且是假設讀者不具備資訊相關背景來寫作。Linux 平台使用者、或是英文能力夠的使用者,可參考底下的 Wiki 教學。

且本文提供的方式會牽涉到一點命令提示字元的使用,若是想以更簡單的方式來架設 Dedicated Server 的讀者,歡迎參閱筆者的第二篇教學。(見下方連結)

實用連結

Dedicated Server 架設教學 II
[Wiki] Guides/Don’t Starve Together Dedicated Servers Dedicated Server 的英文 wiki 架設教學
DST Dedicated Server服务器配置教程 (簡體中文)

注意事項

  • 本文並不介紹關於遊戲程式的購買、取得相關消息。
  • 必須有正版 Don't Server Together 執行權限才能取得運行 Dedicated Server 所必須的 Token 檔案。
  • 筆者目前沒有使用 Mod 相關經驗,此篇教學會略過不提 Mod 相關事項。
  • 目前 DST 仍處在 Beta 開發的狀態,所以這邊所寫的任何東西,其正確性皆會受到時間的考驗。 如有任何誤導之處還請大家多加包涵。
  • 本文採 CC BY-SA 4.0 方式分享。

名詞解釋

這邊先來解釋幾個本文會用到的名詞、縮寫及觀念:

  • DS: Don't Starve
    Don't Starve 單機版的遊戲程式
  • DST: Don't Starve Together
    Don't Starve 多人連線版的遊戲程式,其程式內附有開 Server 的功能
  • DST Dedicated Server: Don't Starve Together 的專用 Server 程式
    是一支純文字介面的 Server 程式,比起用 DST 來開 Server,可以進行更多細部的設定,以及節省不必要的效能消耗。
  • SteamCMD: Steam 的 command-line 客戶端
    本文會介紹如何用 SteamCMD 來下載及更新 DST Dedicated Server
  • Dedicated Server 安裝目錄
    擺放 Dedicated Server 執行檔及其他必要檔案的資料夾,本文採用 C:\dsts,可視需求更改。
  • Dedicated Server 資料目錄
    擺放地圖資料、世界生成設定以及其他 Server 設定檔案的資料夾,預設為 C:\Users\username\Documents\Klei\DoNotStarveTogether,不過此資料夾同時也被 DST 使用,本文改用 C:\Users\username\Documents\Klei\DoNotStarveTogetherServer 此資料夾。 其中的 username 請自行更改為自己的 Windows 帳戶名字。

Dedicated Server 架設教學

安裝 SteamCMD

首先要先到 SteamCMD 的官方頁面 去下載 SteamCMD。
下載下來之後,將壓縮檔內的檔案 steamcmd.exe 解壓縮至 C:\steamcmd 資料夾內。

安裝 Dedicated Server

接下來我們需要透過 SteamCMD 來安裝 Dedicated Server。

開啟檔案總管,進入 C:\steamcmdShift+右鍵 點擊空白處可以開啟 命令提示字元。開啟命令提示字元之後,輸入 steamcmd.exeenter 執行,讓它運作一下,等他跳出 Steam> 提示字串即可開始輸入指令。
接下來要分別在 SteamCMD 中輸入下列三個指令,一個指令跑完再輸入下一個,以下的指令格式為 指令文字 # 說明,只要複製指令文字部分,並貼上執行即可。

ps: SteamCMD 視窗環境並不能直接透過 Ctl+V 貼上文字,必須先右鍵點擊標題列、編輯、貼上。

login anonymous     # 匿名登入 Steam
force_install_dir C:\dsts   # 設定安裝目錄,這邊我們放在 C:\dsts
                            # 目前 steamcmd 不支援大寫英文的目錄
app_update 343050 validate  # 下載並驗證軟體,343050 是 DST Dedicated Server 的編號
quit    # 離開並關閉 SteamCMD

更新 Dedicated Server

目前 DST 仍然在 Beta 開發階段,最近都在以幾天一次的頻率更新,若是透過 DST 內建功能來架 Server ,DST 會在遊戲開啟時自動更新所有檔案。 但 Dedicated Server 必須手動更新,若不更新可能會遇上 Server 無法被 DST 遊戲程式搜尋到的問題。

更新的方式和安裝的方式一模一樣,詳細步驟請參閱 安裝 Dedicated Server 段落。

新增 Dedicated Server 資料目錄

Dedicated Server 預設的資料目錄,在 Windows 環境中是 C:\Users\username\Documents\Klei\DoNotStarveTogether中,不過此資料夾同時也會被 DST 內建的 Server 功能使用。 為了避免一些可能出現的資料衝突問題,筆者建議幫 Dedicated Server 另外新創一個乾淨的資料目錄 C:\Users\username\Documents\Klei\DoNotStarveTogetherServer。 實際的操作方式很單純,先到開啟檔案總管,到 C:\Users\username\Documents\Klei 資料夾中,接著新增資料夾,取名為 DoNotStarveTogetherServer 即可。

取得 Token

這邊我們要先暫停一下,開啟 DST 遊戲程式,不是要開始玩了,只是要取得一個必要 Token 檔案。 :D

開啟遊戲之後,按下 這個鍵 (在Esc下方),會跳出一個 commmand-line,接著輸入TheNet:GenerateServerToken(),完成後即可關閉 DST 遊戲程式。 這個動作會在C:\Users\username\Documents\Klei\DoNotStarveTogether內產生一個server_token.txt` 檔案,裡頭紀錄著開啟 Dedicated Server 必要的授權資訊。

接著從 C:\Users\username\Documents\Klei\DoNotStarveTogether 內複製 server_token.txtsettings.ini 兩個檔案至 C:\Users\username\Documents\Klei\DoNotStarveTogetherServer 中。

設定 Server 參數

用自己喜歡的文字編輯器開啟資料目錄 C:\Users\username\Documents\Klei\DoNotStarveTogetherServer 當中的 settings.ini 進行一些設定,其中 [MISC] [audio] [graphics] [account] 都可以忽略不看,對我們開 Server 比較重要的只有 [network] 底下的設定,請視個人需求修改。 :D
ps: settings.ini 此檔案只接受半形英文數字字元

[network]
default_server_name = Your Server Name
default_server_description = Your Server Description
server_password = Password 
server_port = 10999
pvp = true | false
game_mode = endless | survival | wilderness
max_players = 1 .. 64
pause_when_empty = true | false
enable_vote_kick = true | false

執行 Dedicated Server

如果前面的動作都有正確執行完成,該設定的也沒有設錯,沒意外我們應該可以順利開啟 Dedicated Server 了。

開啟檔案總管,進入 Dedicated Server 安裝目錄下的 bin 資料夾 C:\dsts\bin,裡頭應該會有一個 dontstarve_dedicated_server_nullrenderer.exe 執行檔,在這邊我們 Shift+右鍵 點擊空白處來開啟 命令提示字元

開啟命令提示字元之後,輸入下面這行指令

dontstarve_dedicated_server_nullrenderer.exe -conf_dir DoNotStarveTogetherServer -console

-conf_dir DoNotStarveTogetherServer 此參數代表我們想改用特定目錄來當我們的 Dedicated Server 資料目錄,此時 Dedicated Server 會改去使用 C:\Users\username\Documents\Klei\DoNotStarveTogetherServer 目錄下的檔案。
-console 是允許我們在 Dedicated Server 中輸入一些指令,方便我們操作 Server。

第一次執行時,Windows 可能會跳出一個防火牆視窗,問你是否允許 Dedicated Server 存取私人網路/公用網路,這邊記得要允許 Dedicated Server 存取網路,如此其他玩家才能連上 Server。

這時候就可以執行 DST 遊戲程式來檢查是否 Server 有正確運作了。

ps: Dedicated Server 中的常用指令

c_save()            # 使 Server 進行一個存檔的.. 動來動去的.. 動作
c_shutdown()        # 關閉 Dedicated Server
c_regenerateworld() # 重新生成世界

調整世界生成參數 自定義世界

這部分並不是必須動作,且調整生成參數可能會影響遊戲體驗,請小心使用。可調整的內容包括各項資源的出現頻率、怪物的出現率、季節長短等。

想要自訂世界生成的參數,必須在地圖目錄放置 worldgenoverride.lua 文字檔案,Dedicated Server 在產生新世界時會根據該檔案來覆蓋某些地圖生成的預設值,檔案內容請參閱下方,並自行調整。

return {
    override_enabled = true,
    animals={ --options are "never", "rare", "default", "often", "always"
        alternatehunt="default",
        angrybees="default",
        beefalo="default",
        beefaloheat="default",
        bees="default",
        birds="default",
        butterfly="default",
        frogs="default",
        hunt="default",
        penguins="default",
        perd="default",
        pigs="default",
        rabbits="often",
        tallbirds="default" 
    },
    misc={
        boons="default", --options are "never", "rare", "default", "often", "always"
        branching="default", --options are "never", "least", "default", "most"
        day="default", --options are "onlyday", "onlydusk", "onlynight", "default", "longday", "longdusk", "longnight"
        lightning="default", --options are "never", "rare", "default", "often", "always"
        loop="default", --options are "never", "default", "always"
        season="default", --options are "onlysummer", "onlywinter", "default", "longsummer", "longwinter", "longboth", "shortboth"
        season_start="autumn", --options are "winter", "spring", "summer", "autumn"
        touchstone="default", --options are "never", "rare", "default", "often", "always"
        weather="default", --options are "never", "rare", "default", "often", "always"
        world_size="default" --options are "default", "medium", "large", "huge"
    },
    monsters={ --options are "never", "rare", "default", "often", "always"
        chess="default",
        deerclops="default",
        hounds="default",
        krampus="default",
        liefs="default",
        lureplants="default",
        merm="default",
        spiders="default",
        tentacles="default",
        walrus="default" 
    },
    resources={ --options are "never", "rare", "default", "often", "always"
        flint="default",
        flowers="default",
        grass="default",
        marshbush="default",
        meteorshowers="default",
        meteorspawner="default",
        reeds="default",
        rock="default",
        rocks="default",
        sapling="default",
        trees="default" 
    },
    unprepared={ --options are "never", "rare", "default", "often", "always"
        berrybush="default",
        carrot="default",
        mushroom="default"
    }
}

區網中的 Port Forwarding 設定

若架設 Server 的環境是在透過 NAT 處理的區域網路環境 (透過 WI-FI AP IP分享器等),我們會需要把外側送到 port 10999 (Server 的預設 port) 的封包轉送進來,這樣遊戲程式才能正常的和 Dedicated Server 所在那台電腦連線。

這部分礙於設備種類繁多,無法一一說明,請大家自行上網查詢 Port Forwarding 相關教學。 XD

常見 Q&A

想到再補 XDD