(尝试汉化一下给需要的朋友,其中有一些自己搭建踩的坑。)
(本文刚开始写得比较仓促,现在对文章进行修改,并对一些引起歧义的表述进行修改。并将对每一步操作配上图片,以便于更多的朋友理解。)
(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