文献

本文聚焦于我开服的时候遇到的疑惑,至于我开服的过程中没有疑惑的东西,自然也就没有深究, 本文的重点聚焦于饥荒开服需要的硬件选择以及服务器资源有限情况下使用HTTPS协议访问管理平台的方法,以及饥荒皮肤获得的渠道和应用方法。所以并不全面,见谅。

Steam

https://steamcommunity.com/sharedfiles/filedetails/?id=591543858https://steamcommunity.com/sharedfiles/filedetails/?id=635281092https://steamcommunity.com/sharedfiles/filedetails/?id=590685670https://steamcommunity.com/sharedfiles/filedetails/?id=590681995https://steamcommunity.com/sharedfiles/filedetails/?id=590565473

Wiki

https://dontstarve.fandom.com/wiki/Guides/Don%E2%80%99t_Starve_Together_Dedicated_Servers

Forums

https://forums.kleientertainment.com/forums/forum/83-dont-starve-together-dedicated-server-discussion/

服务端

选购

今天的饥荒独立服务器建服教程虽然众多,但是大部分的教程都忽略了建服的第一步:选购服务器。一般来说,饥荒建服务器有两种模式,第一个就是非专用服务器,只需要在客户端将存档设置为公开就可以了,第二种就是被广泛采用的专用服务器。这里我们讨论的是专用服务器的选购。毕竟服务器的配置都是寸土寸金的,闲置的性能越多越表明不必要的开销越多。

选购饥荒服务器主要考虑两个方面:CPU性能,主存大小,下边是标准的Linux饥荒服务器的基本情况:

  1. 饥荒一个世界占用一个核心,标准的森林和洞穴双世界两个核心就足够了,饥荒服务器二进制文件启动参数中的 tick_rate 参数的值越大,单个用户对于CPU的性能占用越大,tick_rate 可选的值有 15 30 45 60,tick_rate 15 时候,宝塔单核跑分每 500 分可以容纳一个人在线。tick_rate 30 的时候,则是宝塔单核跑分每 1000 分可以容纳一个人在线,t到了tick_rate 60 的时候则是宝塔单核跑分 2000分 可以容纳一个人在线。

  2. AMD EPYC 7402 24-Core Processor ,Intel(R) Xeon(R) Platinum 8269CY CPU这样的建站常用CPU不超开,并且开启超线程,他们的单核(vCPU)跑分就在3000左右,现在的腾讯云售卖的轻量主机跑分也在3000周围。而像新一点的CPU,比如 R9 9950X ,开启超线程,并且不超开的情况下,宝塔的单核(vCPU)跑分大约为 10000 左右。这是一个参考,如果你安装宝塔面板后发现跑分不合格后,就说明你购买的是超售的VPS,可以考虑换下一家了。我就见到群友吐槽有一家IDC服务商自家的9950X宝塔跑分只有3000,还是我之前文章提到的,小厂家,超售是实现低价盈利的关键措施。如果你的跑分比我给的高出约两倍,那么恭喜你,你购买了一个关闭了超线程的服务器,VPS的一个vCPU刚好对应了一个物理CPU核心,而不是对应了一个物理线程,所以服务器单核性能更加强悍。

  3. 内存方面,64位森林世界启动时占用1.45G内存,32位森林世界启动时占用0.85G内存,64位洞穴世界启动时占用1.15G内存,32位洞穴世界启动时占用0.65G内存。虽然64位应用程序拥有更强的内存寻址能力,可以使用更大的内存,但是饥荒的3层世界以内确实用不上超过4G的内存,所以,如果一定要在CPU和内存之间取舍,你可以只让服务器拥有2G内存启动32位饥荒,但是保证CPU性能,如果你开了虚拟内存,那么运行时内存占用还会进一步下降。同时服务器每添加一个游玩者,都会额外占用内存,15年书写的饥荒Wiki提到了一个Player需要占用 65 MBytes,我自己的测试,在开启了虚拟内存的情况下,5个人游玩并没有导致1%以上的额外占用(20M)。

  4. 网络方面,饥荒专用服务器高度依赖于UDP协议(无论是世界通信端口还是直连端口都是UDP协议),我看了许多的饥荒专用服务器文档,他们是这样描述的,但是这些文档普遍都是好多年前写的,科雷是否后来允许其他通信协议我就不清楚了,所以你购买服务器的时候应该仔细观看宽带部分是否标注了禁用UDP。同时每一个用户的加入都会导致每秒8kb的流量,这个是2015年没有添加洞穴的饥荒分支的文档中提到的,应该是按照tick_rate 15 的默认值表述的。1M带宽允许125 KBytes /s 的上传带宽,所以允许 125 / 8 =15人同时游玩,如果tick_rate =30 那么应该支持 7.5 人同时在线游玩。所以服务器的带宽要求并不高,即使是最次的带宽1M也可以容纳足够多的人游玩了。

安装

饥荒服务端的搭建,你不必像一个原始人一样事无巨细的搞定任何事情,饥荒联机版已经上线很久了,Github上已经有了各种成熟的饥荒开服工具(但是如果你想,文献的Steam分段其中有三篇文章专门讲述Mac Linux Windows上像原始人一样搭建专用服务器,你可以按照上边的指示搭建专用服务器),下边我介绍最适合小白的饥荒专用服务器的搭建平台 - 饥荒管理平台,官网上提供了命令脚本,这里我就不再粘贴了,我提供一下安装教程链接:

https://docs.miraclesses.top/quick-start/install.html

安装方法官网讲解的十分清楚 - 只需要连接上ssh服务器后,然后运行官网提供的代码即可,我这里重点要说的是可以自定义的部分:

# --------------- ↓可修改↓ --------------- #
# dmp暴露端口,即网页打开时所用的端口
PORT=80

# 数据库文件所在目录,例如:./config
CONFIG_DIR="./data"

# 虚拟内存大小,例如 1G 4G等
SWAPSIZE=2G

# 日志等级,例如:debug info warn error
LEVEL="info"

# 加速节点
ACCELERATION_SITE=(
	"gh.llkk.cc"
	"github.dpik.top"
	"ghfast.top"
)
# --------------- ↑可修改↑ --------------- #

官网上默认给的脚本上,饥荒管理平台默认监听80端口,如果你的服务器上还有其他的Web服务,那么一旦占用80端口,将导致饥荒管理平台无法启动的问题,此时你需要需修改这里的port为任意一个没有被占用的端口。

另外,有的时候你并不想直接通过IP访问饥荒管理平台,或者单纯就是看浏览器上的 “不安全” 不爽,你想要使用域名访问饥荒管理平台,并且因为某种原因不希望使用反向代理访问作为多个Web服务之一的饥荒管理平台服务,比如服务器性能有限,支撑不起Web防火墙以保证其他服务的安全,或者其他Web服务内存占用过大,比如我现在使用的9950 2H2G10M服务器,运行了饥荒32位双世界之后,只剩下400M空间,这样窄小的内存已经不足以运行太多的其他服务了。

这种情况下,饥荒管理平台运行在80端口或者其他任何端口,你仍然可以通过域名访问饥荒管理平台,我这里以腾讯云为例,打开EdgeOne控制台:

https://console.cloud.tencent.com/edgeone/package

IP直接填写服务器IP即可,然后这里的回源协议选择HTTP,因为饥荒管理平台的Port参数是80,而80是HTTP的默认端口,然后将回源端口设置为安装脚本中的 “PORT”的值即可,不一定是80端口,但是要注意的是,如果你购买的服务器是在国内,那么你这里的加速域名必须是需要备案的,否则按照国内监管要求,你的请求流量在经过VPS提供商的网关那里会被拦截,并且返回一个提示你进行备案的界面。然后就是上传SSL证书,仍然在域名管理的HTTPS下的配置中上传自己申请的证书即可。这里我建议你使用证书管理工具Certd自动部署证书,工具的方法看官网教程,我这里就不演示了。

客户端

个性化

饥荒中的免费皮肤的获取来源主要有三个,科雷官网积分兑换,或者定时登录赠送,另外就是分解已有的皮肤获得线轴,然后通过线轴合成。积分的获得方式也十分简单,完成科雷官网定期发布解密活动,或者点击科雷官网发布的领取积分的链接。付费皮肤可以在Steam DLC购买界面进行购买,或者使用饥荒游戏中的购买界面调用Steam支付接口进行购买。

皮肤的应用十分简单,饥荒的皮肤分为两类,一种是物品类别皮肤,这个皮肤你可以在进入服务器后使用扫帚自由的切换,但是人物皮肤,头像,人物背景之类,你只能在连接服务器前进行修改。或者游戏中科雷送你皮肤的时候立刻应用。