在 Linux 平台创建 DST 多人服务器

在此之前我在阿里云服务器上托管了我们的群机器人,这些天突然想到可以使用服务器剩余的算力进行开服,和小伙伴们一起玩一些游戏。

最先想到的就是《饥荒》(Don’t Starve) 这款游戏,在网上有很多相关教程,但是教程中 Linux 版本不同,《饥荒》游戏更新也比较快,其中有不少教程都稍有过时,在实践中往往碰到很多问题。

本篇 Post 会记录我在搭建饥荒服务器中遇到的一些问题,并给出解决方案,细致流程已经有很多前辈给出了,我在这里列出一些教程。

Update 2019.3.6 - 经过一些时间的测试,个人认为如果只是身边的几个小伙伴想要一起联机玩一玩的话,完全没有必要在云服务器托管这么一个服务器。

因为在云端的服务器各方面管理起来比较麻烦,而且如果云服务器配置不是很高的话开启洞穴双世界运行一段时间之后会出现卡顿。整体体验比较一般。尤其是阿里云的学生机,DST 加上八九个 Mods 的情况下无法负载三个人以上,算力不足的问题很严重。

另外在云服务器中管理 Mod 是个大问题,调整 Mod 参数需要直接修改 ini 文件,但是一些 Mod 开发者不提供相应的设置修改接口,就需要自己去寻找修改,会带来很多的麻烦。

正文

推荐教程:

Linux环境饥荒服务器手动搭建教程 - 幻想的羽毛 :该教程相较于后面的一些教程比较新,也更细致一些,只不过博主最近几个月没有继续更新内容。

CentOS下安装和配置饥荒联机版服务器 - SumyGG :我最初参考的教程,一直到服务器配置部分都可以很好的参考,服务器部分根据具体情况需要具体分析。

Centos7.2下建立饥荒服务器 - qhsong :靠脚本一键式配置,中间遇到问题可能不是很好解决,适度参考。获取服务器许可的方法已过时。

其他的很多教程都是大同小异,有上面几个参考,加上 Google 就可以解决几乎所有问题。下面部分是我在参考上面教程过程中遇到的问题与解决方案。

操作系统:CentOS 7

用户:magic_kurakun (非 root)

yum 安装出现 Error: Multilib version problems found

顾名思义,就是多版本冲突,Linux 默认保持单版本在你的主机上:64位或者32位。而 AliCloud 默认配置的 CentOS 中都是64位,饥荒服务器中需要32位的动态链接库。所以在上述教程中出现这种情况,需要手动设置允许多种版本共存:

yum install --setopt=protected_multilib=false libgcc (缺少的库)

关掉多重保护之后重新安装即可。

Steam CMD 登陆问题

现在版本的 Steam CMD 需要打开时先进行登陆,否则无法获取相关游戏信息。

// 未登录时请求 App 信息会 Error
Steam>app_update 343050 validate
ERROR! Failed to request AppInfo update, not online or not logged in to Steam.

// Login Steam CMD
Steam>login **********
passwd:**********
Logging in user '**********' to Steam Public...
password: Logged in OK
Waiting for user info...OK

路径打开问题

通过 Steam CMD 安装的饥荒服务端的路径中,游戏名文件夹是以空格分隔单词的,在 Linux 中很少这么用,这时候运行脚本、cd 文件夹、scp 文件等等操作在书写路径时别忘把整个路径用引号括起来。

我遇到这个问题就真的是自己菜了

缺少动态链接库问题

每个教程中都会提到这个问题,也有不同的解决方案,但其中依然会碰到很多问题,导致无法链接成功。

首先,可以通过 ldd ./dontstarve_dedicated_server_nullrenderer 来查看缺少的动态链接库,一般都是缺少 libcurl.so.4

教程中提供的方法就是软链接libcurl-gnutls.so.4libcurl.so.4

但是阿里云的 CentOS 是默认不安装 libcurl.i686 即32位 Libcurl 库,这里一定要手动安装,否则运行 ln -s /usr/lib/libcurl.so.4 /usr/lib/libcurl-gnutls.so.4 时没有效果。另外,在安装32位 Libcurl 库时会遇到版本共存冲突问题,参考上述解决方案。

另外就是在运行软连接时一定注意是将 DST 服务器文件夹下的 lib 链接过去,而不是 usr,路径方面可以参考上述第二个教程,比较清晰。

klei 文件与设置文件放置路径问题

对于服务器密匙的申请方法,很多地方都有提到,过去的方法 TheNet:GenerateServerToken() 已经不可用,需要在游戏中 Account 界面打开 Klei 网站进行申请,主要参考第一篇教程。

上述的教程中对申请到的服务器密匙放置位置描述的不是很清楚,经过现在版本的测试(2019-2-25),该密匙文件应该放在 .klei 文件夹下与 master 文件夹同目录。同样的,服务器世界配置等 .ini 文件亦要放在该目录下。

结尾

希望饥荒能给大家带来诸多欢乐。