(尝试汉化一下给需要的朋友,其中有一些自己搭建踩的坑。)
(链接: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
特殊情况
如果配置中缺少参数,将使用默认值。
如果游戏在没有配置文件的情况下运行,将使用默认配置。
所有参数也可以通过命令行参数进行覆盖(参见下面的段落)。
所有参数也可以通过命令行参数进行覆盖,以提供更大的灵活性。您甚至可以通过命令行创建完整的配置。格式如下: