《森林之子》專用服務(wù)器搭建官方文檔

(嘗試漢化一下給需要的朋友,其中有一些自己搭建踩的坑。)

使用?SteamCMD
您可以直接從Valve的網(wǎng)站上安裝SteamCMD工具。
SteamCMD工具鏈接為:https://developer.valvesoftware.com/wiki/SteamCMD。該頁面還包含了該工具的完整文檔,但您只需要按照本指南中的內(nèi)容進(jìn)行操作即可。
要安裝或更新游戲,請(qǐng)啟動(dòng)SteamCMD,然后鍵入以下內(nèi)容(如果需要修改安裝目錄,請(qǐng)進(jìn)行相應(yīng)修改。在我們的示例中,我們將把服務(wù)器安裝到c:/sons-dedicated目錄):
對(duì)于更加熟悉搭建服務(wù)器的用戶,也可以通過直接在Windows命令行中鍵入(或從批處理文件中鍵入)來組合這些命令。這在您想要設(shè)置自動(dòng)游戲更新等情況下可能會(huì)很有用。
(PS:這里需要將steamcmd.exe的路徑加入到系統(tǒng)變量的Path中,或者需要CD到steamcmd的路徑執(zhí)行該命令。)

服務(wù)器連接互聯(lián)網(wǎng)
為了讓其他玩家能夠連接到您的服務(wù)器,您需要確保您的機(jī)器正確配置以允許以下三個(gè)不同端口的流量,并在配置文件中進(jìn)行相應(yīng)設(shè)置。
通常所需的步驟包括:
在路由器或托管服務(wù)上設(shè)置適當(dāng)?shù)亩丝谵D(zhuǎn)發(fā)規(guī)則。
在操作系統(tǒng)防火墻中設(shè)置適當(dāng)?shù)囊?guī)則,或在路由器/交換機(jī)的內(nèi)置防火墻中設(shè)置適當(dāng)?shù)囊?guī)則。
所需端口:?
游戲端口(UDP):8766?
查詢端口(UDP):27016?
數(shù)據(jù)傳輸端口(UDP):9700
這些端口是默認(rèn)端口,可以在稍后將討論的配置文件中進(jìn)行更改。
在啟動(dòng)時(shí),游戲服務(wù)器會(huì)進(jìn)行自檢過程,檢查端口是否開放并可訪問。如果自檢失敗,服務(wù)器將無法啟動(dòng)。在這種情況下,您有兩個(gè)選擇:
修復(fù)端口轉(zhuǎn)發(fā)設(shè)置。
設(shè)置下面將討論的"LanOnly"標(biāo)志,它基本上將您的游戲從公共列表中排除在外。

服務(wù)器連接局域網(wǎng)
當(dāng)游戲連接至局域網(wǎng)時(shí),您需要考慮以下幾點(diǎn):
如果您希望將游戲從互聯(lián)網(wǎng)搜索中隱藏,可以選擇將"LanOnly"標(biāo)志設(shè)置為true。
在局域網(wǎng)中,如果您與其他客戶端在同一網(wǎng)絡(luò)中運(yùn)行,則通常不需要進(jìn)行任何端口重定向。但是,您仍然需要適當(dāng)?shù)卦O(shè)置防火墻。
您的本地網(wǎng)絡(luò)必須被操作系統(tǒng)信任并允許流量通過。為了做到這一點(diǎn),您的網(wǎng)絡(luò)配置文件必須設(shè)置為私有。
當(dāng)您有多個(gè)網(wǎng)絡(luò)適配器時(shí),可能會(huì)存在已知問題,有些情況下Steam會(huì)選擇錯(cuò)誤的適配器來進(jìn)行局域網(wǎng)游戲的發(fā)現(xiàn),并且沒有任何結(jié)果。如果遇到任何問題,您可以臨時(shí)禁用所有其他網(wǎng)絡(luò)接口,然后再次嘗試以確認(rèn)此問題。

數(shù)據(jù)文件夾
在運(yùn)行專用服務(wù)器時(shí),它將使用一個(gè)固定的用戶數(shù)據(jù)文件夾,用于:
讀取配置文件
保存和加載游戲存檔
寫入服務(wù)器日志
等等...
此文件夾可以配置為特定目錄,也可以使用默認(rèn)設(shè)置。用戶數(shù)據(jù)存儲(chǔ)的默認(rèn)位置為:?
(PS:該文件夾為隱藏文件夾,需要開啟“查看”中的”查看隱藏項(xiàng)目“。)
可以使用命令行參數(shù)覆蓋它:
如果未指定參數(shù),則將使用默認(rèn)目錄。
在本指南中,我們將使用 <數(shù)據(jù)文件夾>?來引用此文件夾。

配置文件的位置
如前一部分所述,所有在本文檔中討論的配置文件可以在游戲的<數(shù)據(jù)文件夾>中找到而且必然位于其中。
該文件夾包含以下內(nèi)容:
服務(wù)器所有者列表,文件名為ownerswhitelist.txt
游戲服務(wù)器配置,文件名為dedicatedserver.cfg
保存的游戲進(jìn)度(如果路徑未被覆蓋),文件夾名為Saves
游戲設(shè)置,文件名為SonsGameSettings
注意,這些文件在安裝后不會(huì)立即存在,必須先啟動(dòng)游戲才能創(chuàng)建默認(rèn)文件。并非所有這些文件都需要進(jìn)行干預(yù)來設(shè)置專用服務(wù)器。
(PS:也就是在安裝好服務(wù)端后必須先運(yùn)行一次,這些文件才會(huì)出現(xiàn)。并不是所有文件都需要我們?nèi)ヅ渲?,我們需要去修改和配置的文件后面?huì)有詳細(xì)的教程。)
您只需要操作以下文件:
ownerswhitelist.txt
dedicatedserver.cfg

服務(wù)器所有者
為了能夠直接在游戲中管理您的服務(wù)器,您需要使用ownerswhitelist.txt文件設(shè)置服務(wù)器所有權(quán)。這將允許您作為玩家完全訪問游戲內(nèi)的管理面板(暫停菜單/玩家),您將能夠:
將其他玩家升級(jí)為管理員
將其他玩家降級(jí)為訪客
踢出訪客
禁止和解禁訪客
如何創(chuàng)建默認(rèn)的服務(wù)器所有權(quán)文件?
在首次啟動(dòng)服務(wù)器時(shí),如果配置文件尚不存在,將在配置文件夾中創(chuàng)建默認(rèn)配置文件。您可以按照以下部分的描述創(chuàng)建它,或者簡(jiǎn)單地創(chuàng)建一個(gè)txt文件。
文件名和格式
為了設(shè)置服務(wù)器所有權(quán),您將需要在名為ownerswhitelist.txt的文件中按行提供所有 "服務(wù)器所有者" 的Steam ID。在首次啟動(dòng)服務(wù)器時(shí),如果配置文件尚不存在,將在配置文件夾中創(chuàng)建默認(rèn)配置文件。
服務(wù)器所有者基本上擁有與P2P服務(wù)器主機(jī)相同的權(quán)限,這是最高角色,并且可以訪問所有命令,因此請(qǐng)確保只向此列表中添加可信任的人員。以下是一個(gè)示例文件。
要查找您的SteamID,您可以直接導(dǎo)航到此頁面https://store.steampowered.com/account/,或者在Steam中單擊右上角的您的名稱,然后選擇"帳戶詳細(xì)信息"。

配置文件
專用游戲服務(wù)器可以通過配置文件夾中的JSON文件進(jìn)行配置,文件為dedicatedserver.cfg。
如何創(chuàng)建默認(rèn)配置文件
在首次啟動(dòng)服務(wù)器時(shí),如果配置文件尚不存在,將在配置文件夾中創(chuàng)建默認(rèn)配置文件。您可以按照以下方法創(chuàng)建配置文件,或者簡(jiǎn)單地創(chuàng)建一個(gè)JSON文件,如下所述。
文件名和格式
我們的配置文件采用JSON格式編寫。您可以在線找到許多資源,教您如何處理此類文件。我們將列出一些在編輯JSON文件時(shí)的基本錯(cuò)誤:
鍵始終用引號(hào)括起來,后跟英文的冒號(hào)
文本值始終在引號(hào)之間寫入“文本”
整數(shù)、浮點(diǎn)數(shù)和布爾值(true/false)將不帶引號(hào)寫入
每個(gè)設(shè)置(鍵值對(duì))后必須跟一個(gè)逗號(hào)(,)
注意:
某些設(shè)置可以設(shè)置為null,表示它們沒有值。結(jié)果取決于設(shè)置,并在下面的文檔中進(jìn)行了描述
沒有強(qiáng)制要求設(shè)置,如果設(shè)置不存在,則將被替換為其默認(rèn)值
順序無關(guān)緊要
(PS:這段熟悉json文件格式的朋友可能會(huì)理解,簡(jiǎn)單來說就是json文件是由很多鍵值對(duì)組合而來。
例如{"IpAddress": "0.0.0.0","GamePort": 8766},其中就有兩對(duì)鍵值對(duì),它們之間是由逗號(hào)分隔的,分別是"IpAddress": "0.0.0.0"和"GamePort": 8766。
鍵值對(duì),前者為鍵,后者為值。因此IpAddress和GamePort都屬于鍵。鍵需要始終用引號(hào)括起來,后跟英文的冒號(hào)。
對(duì)應(yīng)的值便是0.0.0.0和8766了,然而值如果是文本的話,例如這里的IP地址0.0.0.0很明顯為數(shù)字和符號(hào)組成的文本,那這自然需要用" "引用起來。而整數(shù)、小數(shù)和布爾值(true/false)將不帶引號(hào)寫入,所以這里的8766是不帶引號(hào)的。)
文件名必須是dedicatedserver.cfg,并包含一個(gè)JSON格式的文檔,定義了與游戲服務(wù)器配置相關(guān)的所有參數(shù)。它必須放置在配置文件夾中。以下是默認(rèn)文件的內(nèi)容。
IpAddress:游戲服務(wù)器的監(jiān)聽接口,通常為0.0.0.0,表示監(jiān)聽所有接口。任何格式為IPv4地址的字符串。(PS:這里需要填寫我們服務(wù)器的內(nèi)網(wǎng)IP地址)
GamePort:游戲網(wǎng)絡(luò)代碼(Bolt)使用的UDP端口,整數(shù)。
QueryPort:Steam用于列出服務(wù)器并啟用發(fā)現(xiàn)服務(wù)的UDP端口。整數(shù)。
BlobSyncPort:BlobSync系統(tǒng)使用的BlobSyncPort UDP端口,用于初始化游戲系統(tǒng)并交換數(shù)據(jù)。整數(shù)。(PS:2,3,4就是前面我們講的三個(gè)端口,我們的云服務(wù)器需要打開這三個(gè)端口的UDP協(xié)議,具體在自己的云服務(wù)器管理面板上調(diào)整。)
ServerName:服務(wù)器在服務(wù)器列表和Steam聯(lián)系人中可見的名稱。任意字符串。(PS:說人話就叫服務(wù)器的名字)
MaxPlayers:服務(wù)器允許同時(shí)連接的最大玩家數(shù)。整數(shù)(1-8)。
Password:為服務(wù)器添加密碼,使其成為“私有”服務(wù)器??蛻舳嗽谶B接時(shí)需要輸入此密碼才能繼續(xù)。任意字符串,長(zhǎng)度最多為40個(gè)字符。(PS:服務(wù)器密碼)
LanOnly:允許或限制服務(wù)器在局域網(wǎng)上可見。值為true或false。
SaveSlot:創(chuàng)建新保存時(shí),此數(shù)字將成為保存的ID。大于或等于1的整數(shù)。
SaveMode:游戲保存初始化模式。值為"continue"或者"new"。"continue":如果SaveSlot上的保存不存在,則創(chuàng)建一個(gè)新的保存,如果存在,則加載它。"new":創(chuàng)建一個(gè)新游戲,具有新的游戲ID,并覆蓋SaveSlot上先前保存的任何游戲。如果服務(wù)器停止并重新啟動(dòng),只要模式設(shè)置為"new",先前的保存將被覆蓋。
GameMode:創(chuàng)建新保存時(shí)設(shè)置的游戲難度模式。值為“normal”、“hard”、“hardsurvival”、“peaceful”、“custom”,分別對(duì)應(yīng)正常,困難,艱難生存,和平,自定義。需要注意的是:如果加載保存(保存模式設(shè)置為"continue",并且在存檔槽中含有存檔),則忽略此參數(shù)。如果游戲模式設(shè)置為"custom",則將從CustomGameModeSettings選項(xiàng)中讀取自定義游戲模式設(shè)置,稍后將對(duì)其進(jìn)行描述。
SaveInterval:游戲服務(wù)器自動(dòng)將游戲保存到SaveSlot的時(shí)間間隔,以秒為單位。整數(shù)。
IdleDayCycleSpeed:當(dāng)服務(wù)器處于空閑狀態(tài)(沒有玩家連接)時(shí),與正常游戲進(jìn)度相比,時(shí)間流逝速度的乘數(shù)。介于0和1之間的浮點(diǎn)數(shù),大于或等于0。
IdleTargetFramerate:當(dāng)服務(wù)器被視為空閑狀態(tài)(沒有玩家連接)時(shí)的目標(biāo)幀率。大于或等于1的整數(shù)。
ActiveTargetFramerate:當(dāng)服務(wù)器被視為非空閑狀態(tài)(一個(gè)或多個(gè)玩家連接)時(shí)的目標(biāo)幀率。大于或等于10的整數(shù)。
LogFilesEnabled:定義是否將日志寫入文件。日志將輸出到<數(shù)據(jù)文件夾>/logs文件夾中。值為true或false。
TimestampLogFilenames:?jiǎn)⒂萌罩疚募臅r(shí)間戳。
GameSettings:用于調(diào)整游戲的所有游戲設(shè)置的鍵值映射(在任何模式下)。所有參數(shù)將在后面的段落中列出,以及它們可能的值。如果值為null或空,則使用默認(rèn)設(shè)置。
CustomGameModeSettings:用于在自定義模式下自定義游戲的所有可用設(shè)置的鍵值映射。所有參數(shù)將在本指南的后面列出,以及它們可能的值。如果值為null或空,則使用默認(rèn)設(shè)置。如果游戲模式不是“custom”或加載了保存(保存模式設(shè)置為“continue”,并且在槽中存在存檔),則忽略此參數(shù),無論它是否為“custom”。
(PS:其實(shí)寫到這里,正常玩家的搭建流程已經(jīng)結(jié)束了,后面為自定義服務(wù)器相關(guān)問題。)

游戲設(shè)置
以下是可以在配置文件中的"GameSettings"參數(shù)中添加的額外設(shè)置。
Gameplay.TreeRegrowth 啟用樹木自動(dòng)再生,當(dāng)睡眠時(shí)觸發(fā)。?值為true, false
Structure.Damage 允許建筑物受到損壞。 值為true, false
自定義游戲模式設(shè)置
以下是可以在配置文件中的"CustomGameModeSettings"參數(shù)中添加的額外設(shè)置。如果游戲模式不是"custom"或者正在加載一個(gè)已經(jīng)存在的保存(保存模式設(shè)置為"continue"),這些設(shè)置將被忽略,因?yàn)樗鼈儍H在保存創(chuàng)建時(shí)設(shè)置一次。
GameSetting.Vail.EnemySpawn 啟用敵人生成。值為 true, false
GameSetting.Vail.EnemyHealth 調(diào)整敵人的初始生命值。 值為low, normal, high
GameSetting.Vail.EnemyDamage 調(diào)整敵人的傷害能力。 值為low, normal, high
GameSetting.Vail.EnemyArmour 調(diào)整敵人的護(hù)甲強(qiáng)度。 值為low, normal, high
GameSetting.Vail.EnemyAggression 調(diào)整敵人的攻擊性水平。 值為low, normal, high
GameSetting.Vail.AnimalSpawnRate 調(diào)整動(dòng)物生成速率。值為low, normal, high
GameSetting.Environment.StartingSeason 設(shè)置環(huán)境的初始季節(jié)。 值為spring, summer,autumn, winter
Structure.Damage 允許建筑物受到損壞。值為 true, false
GameSetting.Environment.SeasonLength 調(diào)整季節(jié)長(zhǎng)度。 值為short, default, long, realistic
GameSetting.Environment.DayLength 調(diào)整一天的長(zhǎng)度。 值為short, default, long, realistic
GameSetting.Environment.PrecipitationFrequency 調(diào)整雨和雪的頻率。 值為low, default, high
GameSetting.Survival.ConsumableEffects 在水分和飽食度不足時(shí)啟用受傷效果。 值為off,normal, hard
GameSetting.Survival.PlayerStatsDamage 從每個(gè)壞的或腐爛的食物和飲料中受到傷害。 off, normal, hard
GameSetting.Survival.ColdPenalties 調(diào)整寒冷對(duì)健康和體力恢復(fù)的影響程度。值為off, normal, hard
GameSetting.Survival.ReducedFoodInContainers 減少容器中的食物數(shù)量。 值為true, false
GameSetting.Survival.SingleUseContainers 容器只能打開一次。 值為true, false

特殊情況
如果配置中缺少參數(shù),將使用默認(rèn)值。
如果游戲在沒有配置文件的情況下運(yùn)行,將使用默認(rèn)配置。
所有參數(shù)也可以通過命令行參數(shù)進(jìn)行覆蓋(參見下面的段落)。
所有參數(shù)也可以通過命令行參數(shù)進(jìn)行覆蓋,以提供更大的靈活性。您甚至可以通過命令行創(chuàng)建完整的配置。格式如下: