(嘗試漢化一下給需要的朋友,其中有一些自己搭建踩的坑。)
(鏈接:https://www.bilibili.com/read/cv24590606)
使用 SteamCMD
您可以直接從Valve的網站上安裝SteamCMD工具。
SteamCMD工具鏈接為:https://developer.valvesoftware.com/wiki/SteamCMD。該頁面還包含了該工具的完整文檔,但您只需要按照本指南中的內容進行操作即可。
要安裝或更新遊戲,請啟動SteamCMD,然後鍵入以下內容(如果需要修改安裝目錄,請進行相應修改。在我們的示例中,我們將把服務器安裝到c:/sons-dedicated目錄):
對於更加熟悉搭建服務器的用戶,也可以通過直接在Windows命令行中鍵入(或從批處理文件中鍵入)來組合這些命令。這在您想要設置自動遊戲更新等情況下可能會很有用。
(PS:這裡需要將steamcmd.exe的路徑加入到系統變量的Path中,或者需要CD到steamcmd的路徑執行該命令。)
服務器連接互聯網
為了讓其他玩家能夠連接到您的服務器,您需要確保您的機器正確配置以允許以下三個不同端口的流量,並在配置文件中進行相應設置。
通常所需的步驟包括:
在路由器或託管服務上設置適當的端口轉發規則。
在操作系統防火牆中設置適當的規則,或在路由器/交換機的內置防火牆中設置適當的規則。
所需端口:
遊戲端口(UDP):8766
查詢端口(UDP):27016
數據傳輸端口(UDP):9700
這些端口是默認端口,可以在稍後將討論的配置文件中進行更改。
在啟動時,遊戲服務器會進行自檢過程,檢查端口是否開放並可訪問。如果自檢失敗,服務器將無法啟動。在這種情況下,您有兩個選擇:
修復端口轉發設置。
設置下面將討論的"LanOnly"標誌,它基本上將您的遊戲從公共列表中排除在外。
服務器連接局域網
當遊戲連接至局域網時,您需要考慮以下幾點:
如果您希望將遊戲從互聯網搜索中隱藏,可以選擇將"LanOnly"標誌設置為true。
在局域網中,如果您與其他客戶端在同一網絡中運行,則通常不需要進行任何端口重定向。但是,您仍然需要適當地設置防火牆。
您的本地網絡必須被操作系統信任並允許流量通過。為了做到這一點,您的網絡配置文件必須設置為私有。
當您有多個網絡適配器時,可能會存在已知問題,有些情況下Steam會選擇錯誤的適配器來進行局域網遊戲的發現,並且沒有任何結果。如果遇到任何問題,您可以臨時禁用所有其他網絡接口,然後再次嘗試以確認此問題。
數據文件夾
在運行專用服務器時,它將使用一個固定的用戶數據文件夾,用於:
讀取配置文件
保存和加載遊戲存檔
寫入服務器日誌
等等...
此文件夾可以配置為特定目錄,也可以使用默認設置。用戶數據存儲的默認位置為:
(PS:該文件夾為隱藏文件夾,需要開啟“查看”中的”查看隱藏項目“。)
可以使用命令行參數覆蓋它:
如果未指定參數,則將使用默認目錄。
在本指南中,我們將使用<數據文件夾>來引用此文件夾。
配置文件的位置
如前一部分所述,所有在本文檔中討論的配置文件可以在遊戲的<數據文件夾>中找到而且必然位於其中。
該文件夾包含以下內容:
服務器所有者列表,文件名為ownerswhitelist.txt
遊戲服務器配置,文件名為dedicatedserver.cfg
保存的遊戲進度(如果路徑未被覆蓋),文件夾名為Saves
遊戲設置,文件名為SonsGameSettings
注意,這些文件在安裝後不會立即存在,必須先啟動遊戲才能創建默認文件。並非所有這些文件都需要進行干預來設置專用服務器。
(PS:也就是在安裝好服務端後必須先運行一次,這些文件才會出現。並不是所有文件都需要我們去配置,我們需要去修改和配置的文件後面會有詳細的教程。)
您只需要操作以下文件:
ownerswhitelist.txt
dedicatedserver.cfg
服務器所有者
為了能夠直接在遊戲中管理您的服務器,您需要使用ownerswhitelist.txt文件設置服務器所有權。這將允許您作為玩家完全訪問遊戲內的管理面板(暫停菜單/玩家),您將能夠:
將其他玩家升級為管理員
將其他玩家降級為訪客
踢出訪客
禁止和解禁訪客
如何創建默認的服務器所有權文件?
在首次啟動服務器時,如果配置文件尚不存在,將在配置文件夾中創建默認配置文件。您可以按照以下部分的描述創建它,或者簡單地創建一個txt文件。
文件名和格式
為了設置服務器所有權,您將需要在名為ownerswhitelist.txt的文件中按行提供所有 "服務器所有者" 的Steam ID。在首次啟動服務器時,如果配置文件尚不存在,將在配置文件夾中創建默認配置文件。
服務器所有者基本上擁有與P2P服務器主機相同的權限,這是最高角色,並且可以訪問所有命令,因此請確保只向此列表中添加可信任的人員。以下是一個示例文件。
要查找您的SteamID,您可以直接導航到此頁面https://store.steampowered.com/account/,或者在Steam中單擊右上角的您的名稱,然後選擇"帳戶詳細信息"。
配置文件
專用遊戲服務器可以通過配置文件夾中的JSON文件進行配置,文件為dedicatedserver.cfg。
如何創建默認配置文件
在首次啟動服務器時,如果配置文件尚不存在,將在配置文件夾中創建默認配置文件。您可以按照以下方法創建配置文件,或者簡單地創建一個JSON文件,如下所述。
文件名和格式
我們的配置文件採用JSON格式編寫。您可以在線找到許多資源,教您如何處理此類文件。我們將列出一些在編輯JSON文件時的基本錯誤:
鍵始終用引號括起來,後跟英文的冒號
文本值始終在引號之間寫入“文本”
整數、浮點數和布爾值(true/false)將不帶引號寫入
每個設置(鍵值對)後必須跟一個逗號(,)
注意:
某些設置可以設置為null,表示它們沒有值。結果取決於設置,並在下面的文檔中進行了描述
沒有強制要求設置,如果設置不存在,則將被替換為其默認值
順序無關緊要
(PS:這段熟悉json文件格式的朋友可能會理解,簡單來說就是json文件是由很多鍵值對組合而來。
例如{"IpAddress": "0.0.0.0","GamePort": 8766},其中就有兩對鍵值對,它們之間是由逗號分隔的,分別是"IpAddress": "0.0.0.0"和"GamePort": 8766。
鍵值對,前者為鍵,後者為值。因此IpAddress和GamePort都屬於鍵。鍵需要始終用引號括起來,後跟英文的冒號。
對應的值便是0.0.0.0和8766了,然而值如果是文本的話,例如這裡的IP地址0.0.0.0很明顯為數字和符號組成的文本,那這自然需要用" "引用起來。而整數、小數和布爾值(true/false)將不帶引號寫入,所以這裡的8766是不帶引號的。)
文件名必須是dedicatedserver.cfg,幷包含一個JSON格式的文檔,定義了與遊戲服務器配置相關的所有參數。它必須放置在配置文件夾中。以下是默認文件的內容。
IpAddress:遊戲服務器的監聽接口,通常為0.0.0.0,表示監聽所有接口。任何格式為IPv4地址的字符串。(PS:這裡需要填寫我們服務器的內網IP地址)
GamePort:遊戲網絡代碼(Bolt)使用的UDP端口,整數。
QueryPort:Steam用於列出服務器並啟用發現服務的UDP端口。整數。
BlobSyncPort:BlobSync系統使用的BlobSyncPort UDP端口,用於初始化遊戲系統並交換數據。整數。(PS:2,3,4就是前面我們講的三個端口,我們的雲服務器需要打開這三個端口的UDP協議,具體在自己的雲服務器管理面板上調整。)
ServerName:服務器在服務器列表和Steam聯繫人中可見的名稱。任意字符串。(PS:說人話就叫服務器的名字)
MaxPlayers:服務器允許同時連接的最大玩家數。整數(1-8)。
Password:為服務器添加密碼,使其成為“私有”服務器。客戶端在連接時需要輸入此密碼才能繼續。任意字符串,長度最多為40個字符。(PS:服務器密碼)
LanOnly:允許或限制服務器在局域網上可見。值為true或false。
SaveSlot:創建新保存時,此數字將成為保存的ID。大於或等於1的整數。
SaveMode:遊戲保存初始化模式。值為"continue"或者"new"。"continue":如果SaveSlot上的保存不存在,則創建一個新的保存,如果存在,則加載它。"new":創建一個新遊戲,具有新的遊戲ID,並覆蓋SaveSlot上先前保存的任何遊戲。如果服務器停止並重新啟動,只要模式設置為"new",先前的保存將被覆蓋。
GameMode:創建新保存時設置的遊戲難度模式。值為“normal”、“hard”、“hardsurvival”、“peaceful”、“custom”,分別對應正常,困難,艱難生存,和平,自定義。需要注意的是:如果加載保存(保存模式設置為"continue",並且在存檔槽中含有存檔),則忽略此參數。如果遊戲模式設置為"custom",則將從CustomGameModeSettings選項中讀取自定義遊戲模式設置,稍後將對其進行描述。
SaveInterval:遊戲服務器自動將遊戲保存到SaveSlot的時間間隔,以秒為單位。整數。
IdleDayCycleSpeed:當服務器處於空閒狀態(沒有玩家連接)時,與正常遊戲進度相比,時間流逝速度的乘數。介於0和1之間的浮點數,大於或等於0。
IdleTargetFramerate:當服務器被視為空閒狀態(沒有玩家連接)時的目標幀率。大於或等於1的整數。
ActiveTargetFramerate:當服務器被視為非空閒狀態(一個或多個玩家連接)時的目標幀率。大於或等於10的整數。
LogFilesEnabled:定義是否將日誌寫入文件。日誌將輸出到<數據文件夾>/logs文件夾中。值為true或false。
TimestampLogFilenames:啟用日誌文件的時間戳。
GameSettings:用於調整遊戲的所有遊戲設置的鍵值映射(在任何模式下)。所有參數將在後面的段落中列出,以及它們可能的值。如果值為null或空,則使用默認設置。
CustomGameModeSettings:用於在自定義模式下自定義遊戲的所有可用設置的鍵值映射。所有參數將在本指南的後面列出,以及它們可能的值。如果值為null或空,則使用默認設置。如果遊戲模式不是“custom”或加載了保存(保存模式設置為“continue”,並且在槽中存在存檔),則忽略此參數,無論它是否為“custom”。
(PS:其實寫到這裡,正常玩家的搭建流程已經結束了,後面為自定義服務器相關問題。)
遊戲設置
以下是可以在配置文件中的"GameSettings"參數中添加的額外設置。
Gameplay.TreeRegrowth 啟用樹木自動再生,當睡眠時觸發。 值為true, false
Structure.Damage 允許建築物受到損壞。 值為true, false
自定義遊戲模式設置
以下是可以在配置文件中的"CustomGameModeSettings"參數中添加的額外設置。如果遊戲模式不是"custom"或者正在加載一個已經存在的保存(保存模式設置為"continue"),這些設置將被忽略,因為它們僅在保存創建時設置一次。
GameSetting.Vail.EnemySpawn 啟用敵人生成。值為 true, false
GameSetting.Vail.EnemyHealth 調整敵人的初始生命值。 值為low, normal, high
GameSetting.Vail.EnemyDamage 調整敵人的傷害能力。 值為low, normal, high
GameSetting.Vail.EnemyArmour 調整敵人的護甲強度。 值為low, normal, high
GameSetting.Vail.EnemyAggression 調整敵人的攻擊性水平。 值為low, normal, high
GameSetting.Vail.AnimalSpawnRate 調整動物生成速率。值為low, normal, high
GameSetting.Environment.StartingSeason 設置環境的初始季節。 值為spring, summer,autumn, winter
Structure.Damage 允許建築物受到損壞。值為 true, false
GameSetting.Environment.SeasonLength 調整季節長度。 值為short, default, long, realistic
GameSetting.Environment.DayLength 調整一天的長度。 值為short, default, long, realistic
GameSetting.Environment.PrecipitationFrequency 調整雨和雪的頻率。 值為low, default, high
GameSetting.Survival.ConsumableEffects 在水分和飽食度不足時啟用受傷效果。 值為off,normal, hard
GameSetting.Survival.PlayerStatsDamage 從每個壞的或腐爛的食物和飲料中受到傷害。 off, normal, hard
GameSetting.Survival.ColdPenalties 調整寒冷對健康和體力恢復的影響程度。值為off, normal, hard
GameSetting.Survival.ReducedFoodInContainers 減少容器中的食物數量。 值為true, false
GameSetting.Survival.SingleUseContainers 容器只能打開一次。 值為true, false
特殊情況
如果配置中缺少參數,將使用默認值。
如果遊戲在沒有配置文件的情況下運行,將使用默認配置。
所有參數也可以通過命令行參數進行覆蓋(參見下面的段落)。
所有參數也可以通過命令行參數進行覆蓋,以提供更大的靈活性。您甚至可以通過命令行創建完整的配置。格式如下: