(嘗試漢化一下給需要的朋友,其中有一些自己搭建踩的坑。)
(本文剛開始寫得比較倉促,現在對文章進行修改,並對一些引起歧義的表述進行修改。並將對每一步操作配上圖片,以便於更多的朋友理解。)
(B站專欄鏈接:https://www.bilibili.com/read/cv24590606)
雲服務器基本配置及連接
CPU/內存/帶寬:4核心/8GB/12Mbps
操作系統: Windows Server 2012 R2 中文版
(推薦2核4G以上服務器,以防止硬件設備造成服務器重啟,帶寬則根據遊玩人數決定,總之越大越好。)
首先,Windows家庭版(Windows 10 Home或Windows 11 Home)通常不包括遠程桌面功能。
請您切換至Windows專業版再瀏覽以下內容。
具體步驟:
尋找 【搜索框】
打開 【桌面遠程連接】
打開 【詳細選項】
輸入 雲服務器 信息 進行連接
安全性驗證,未出現可直接忽略
輸入密碼 確認連接
證書驗證 直接選擇【信任】即可
成功連接到雲服務器
使用 SteamCMD
您可以直接從Valve的網站上安裝SteamCMD工具。
SteamCMD工具鏈接為:https://developer.valvesoftware.com/wiki/SteamCMD。該頁面還包含了該工具的完整文檔,但您只需要按照本指南中的內容進行操作即可。
SteamCMD Windows版下載地址:https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip
注意:請直接將SteamCMD下載到雲服務器!!!將上述地址直接粘貼至雲服務器瀏覽器下載並將其右鍵提取解壓到任意目錄!
通過運行對話框:
- 按下Win + R鍵來打開運行對話框。
- 在運行對話框中,輸入iexplore,然後按回車鍵來啟動 Internet Explorer。
打開 【瀏覽器】
下載 SteamCMD
保存 SteamCMD
解壓文件
- 鍵入以下內容(如果需要修改安裝目錄,請進行相應修改。在我們的示例中,我們將把服務器安裝到c:/sons-dedicated目錄)
鍵入內容
鍵入指令
執行完命令後,等待SteamCMD安裝《森林之子》服務端,安裝完成後便可以退出雲服務器。
- 對於更加熟悉搭建服務器的用戶,也可以通過直接在Windows命令行中鍵入(或從批處理文件中鍵入)來組合這些命令。這在您想要設置自動遊戲更新等情況下可能會很有用。
steamcmd.exe +force_install_dir "c:/sons-dedicated/" +login anonymous +app_update 2465200 validate +quit
該種方法需要設置系統path路徑,使用第一種方法即可;當然第二種方法更加方便,如設置系統path成功,可自行使用第二種方法。
服務器連接互聯網
為了讓其他玩家能夠連接到您的服務器,您需要確保您的機器正確配置以允許以下三個不同端口的流量,並在配置文件中進行相應設置。
通常所需的步驟包括:
在路由器或託管服務上設置適當的端口轉發規則。
在操作系統防火牆中設置適當的規則,或在路由器/交換機的內置防火牆中設置適當的規則。
所需端口:
遊戲端口(UDP):8766
查詢端口(UDP):27016
數據傳輸端口(UDP):9700
(極端一點我們其實可以開發所有端口,問題不大,防火牆規則如下)
(注意:該端口在您的雲服務器控制檯 防火牆規則處添加)
防火牆規則
數據文件夾
在運行專用服務器時,它將使用一個固定的用戶數據文件夾,用於:
讀取配置文件
保存和加載遊戲存檔
寫入服務器日誌
等等...
此文件夾可以配置為特定目錄,也可以使用默認設置。用戶數據存儲的默認位置為:
C:\Users \AppData\LocalLow\Endnight\SonsOfTheForestDS
(PS:該文件夾為隱藏文件夾,需要開啟“查看”中的”查看隱藏項目“。)
在本指南中,我們將使用<數據文件夾>來引用此文件夾。
配置文件的位置
如前一部分所述,所有在本文檔中討論的配置文件可以在遊戲的<數據文件夾>中找到而且必然位於其中。
該文件夾包含以下內容:
服務器所有者列表,文件名為ownerswhitelist.txt
遊戲服務器配置,文件名為dedicatedserver.cfg
保存的遊戲進度(如果路徑未被覆蓋),文件夾名為Saves
遊戲設置,文件名為SonsGameSettings
注意,這些文件在安裝後不會立即存在,必須先啟動遊戲才能創建默認文件。並非所有這些文件都需要進行干預來設置專用服務器。
點擊運行
運行後關閉服務端
(PS:也就是在安裝好服務端後必須先運行一次,這些文件才會出現。並不是所有文件都需要我們去配置,我們需要去修改和配置的文件後面會有詳細的教程。)
您只需要操作以下文件:
ownerswhitelist.txt
dedicatedserver.cfg
服務器所有者
為了能夠直接在遊戲中管理您的服務器,您需要使用ownerswhitelist.txt文件設置服務器所有權。這將允許您作為玩家完全訪問遊戲內的管理面板(暫停菜單/玩家),您將能夠:
將其他玩家升級為管理員
將其他玩家降級為訪客
踢出訪客
禁止和解禁訪客
如何創建默認的服務器所有權文件?
在首次啟動服務器時,如果配置文件尚不存在,將在配置文件夾中創建默認配置文件。您可以按照以下部分的描述創建它,或者簡單地創建一個txt文件。
文件名和格式
為了設置服務器所有權,您將需要在名為ownerswhitelist.txt的文件中按行提供所有 "服務器所有者" 的Steam ID。在首次啟動服務器時,如果配置文件尚不存在,將在配置文件夾中創建默認配置文件。
服務器所有者基本上擁有與P2P服務器主機相同的權限,這是最高角色,並且可以訪問所有命令,因此請確保只向此列表中添加可信任的人員。以下是一個示例。
將 服務器 服主的steamID寫入即可
要查找您的SteamID,您可以直接導航到此頁面https://store.steampowered.com/account/,或者在Steam中單擊右上角的您的名稱,然後選擇"帳戶詳細信息"。
配置文件
專用遊戲服務器可以通過配置文件夾中的JSON文件進行配置,文件為dedicatedserver.cfg。
如何創建默認配置文件
在首次啟動服務器時,如果配置文件尚不存在,將在配置文件夾中創建默認配置文件。您可以按照以下方法創建配置文件,或者簡單地創建一個JSON文件,如下所述。
文件名和格式
我們的配置文件採用JSON格式編寫。您可以在線找到許多資源,教您如何處理此類文件。我們將列出一些在編輯JSON文件時的基本錯誤:
鍵始終用引號括起來,後跟英文的冒號
文本值始終在引號之間寫入“文本”
整數、浮點數和布爾值(true/false)將不帶引號寫入
每個設置(鍵值對)後必須跟一個逗號(,)
注意:
某些設置可以設置為null,表示它們沒有值。結果取決於設置,並在下面的文檔中進行了描述
沒有強制要求設置,如果設置不存在,則將被替換為其默認值
順序無關緊要
(上面這段話讀懂了嗎?沒懂沒關係。關鍵點在下面)
文件名必須是dedicatedserver.cfg,幷包含一個JSON格式的文檔,定義了與遊戲服務器配置相關的所有參數。它必須放置在配置文件夾中。以下是默認文件的內容
{
"IpAddress": "0.0.0.0",
"GamePort": 8766,
"QueryPort": 27016,
"BlobSyncPort": 9700,
"ServerName": "Sons Of The Forest Server (dedicated)",
"MaxPlayers": 8,
"Password": "123456",
"LanOnly": false,
"SaveSlot": 1,
"SaveMode": "Continue",
"GameMode": "Normal",
"SaveInterval": 600,
"IdleDayCycleSpeed": 0.0,
"IdleTargetFramerate": 5,
"ActiveTargetFramerate": 60,
"LogFilesEnabled": false,
"TimestampLogFilenames": true,
"TimestampLogEntries": true,
"SkipNetworkAccessibilityTest": true,
"GameSettings": {},
"CustomGameModeSettings": {}
}
此時該文件主要配置如下:
服務器文件名:Sons Of The Forest Server (dedicated)
服務器人數:8
服務器密碼:123456
遊戲難度:正常
複製 json 文件
再次運行服務器
服務器加載完成
服務端在客戶端被找到
此時,一個名字叫Sons Of The Forest Server (dedicated),密碼為123456,遊戲難度為正常的8人服務器就已經創建出來了
那看到這裡,相信大家也明白了上面json文件部分選項的含義了。
下面是json文件所有選項的含義,不熟悉json文件的朋友只需要修改加重加黑的部分即可,其他使用上面默認配置即可。
- IpAddress:遊戲服務器的監聽接口,通常為0.0.0.0,表示監聽所有接口。任何格式為IPv4地址的字符串。(PS:如果提示尋找不到ip,便需要填寫我們服務器的內網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”。
- SkipNetworkAccessibilityTest:選擇退出網絡可訪問性自檢測試:包括公共IP的檢索和在Steam主服務器上的列表,以及端口可訪問性檢查。請注意,官方僅支持IPv4。
這裡再舉一個例子:
{
"IpAddress": "0.0.0.0",
"GamePort": 8766,
"QueryPort": 27016,
"BlobSyncPort": 9700,
"ServerName": "My Server",
"MaxPlayers": 4,
"Password": "12345678qaz",
"LanOnly": false,
"SaveSlot": 1,
"SaveMode": "Continue",
"GameMode": "hardsurvival",
"SaveInterval": 600,
"IdleDayCycleSpeed": 0.0,
"IdleTargetFramerate": 5,
"ActiveTargetFramerate": 60,
"LogFilesEnabled": false,
"TimestampLogFilenames": true,
"TimestampLogEntries": true,
"SkipNetworkAccessibilityTest":true,
"GameSettings": {},
"CustomGameModeSettings": {}
}
此時該文件主要配置如下:
服務器文件名:My Server
服務器人數:4
服務器密碼:12345678qaz
遊戲難度:艱難生存
遊戲設置
以下是可以在配置文件中的"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