在 Linux 系统上搭建 饥荒联机版 专用服务器 教程

0

Loading

家用宽带总会有种种原因的不稳定,所以在自己的主机上建立的 饥荒服务器 ,不论是性能还是稳定性,总是不那么理想。最关键的,是要保持主机在线。这个时候,专用服务器显然是更好的选择。


1. 平台和配置需求

1.1 平台需求

这里更推荐使用 Ubuntu,我也是基于 Ubuntu x64 18.04.3 LTS 搭建的。不建议使用 CentOS / Fedora (可能出现无法在 CentOS  / Fedora 上登录 Steam 账号的故障,貌似已经修复),毕竟用包管理工具直接安装 SteamCMD 多好啊(笑)

软件方面,根据自己的情况选择 SSH 工具,我这里用的是 PuTTY 和 WinSCP 。

1.2 配置要求

RAM:官方要求 65MB / 玩家,实际测试服务器空载占用 600-700MB / 世界,因此同时开启主世界和洞穴的情况下,空载内存占用约 1.2GB,算上每个玩家可能占用的 RAM,建议 2GB RAM 以上。如有 Mod,视 Mod 规模和数量酌情增大 RAM。
CPU:官方无特别要求,建议使用高主频的 CPU,核心数并不重要(该游戏无多线程优化),但建议 核心数 >= 世界数
网络:官方要求 8KB / s / 玩家,对带宽要求并不高。但游戏基于 UDP 协议,对延迟和丢包率有较高要求。网上买到的 VPS 都是商用线路,在这方面都没有问题

 


2. 安装 SteamCMD

2.1 建立用户账户

建立用户的目的在于将 SteamCMD 与操作系统的其他部分做权限上的隔离,来保证安全性。
登录 SSH 控制台,下面的命令都将在控制台执行。
以 root 权限执行以下命令,创建用户名为 steam 的用户:

useradd -m steam

然后进入 steam 用户的主文件夹,为后续操作做准备:

cd /home/steam

2.2 安装依赖库

请注意不同架构的操作系统执行的命令不同。

32 位系统:

sudo apt install libstdc++6 libgcc1 libcurl4-gnutls-dev

64 位系统:

sudo add-apt-repository multiverse
sudo dpkg --add-architecture i386
sudo apt install libstdc++6:i386 libgcc1:i386 libcurl4-gnutls-dev:i386

2.3 安装 SteamCMD

Ubuntu / Debian 可以用 apt 方便地安装 SteamCMD:

apt install steamcmd

为了配合后面的 KLei 官方脚本,在 steam 用户的主文件夹下创建一个 steamcmd 文件夹并进入:

mkdir steamcmd
cd steamcmd

在这里创建一个软链接,链接到 SteamCMD 程序:

ln -s /usr/games/steamcmd steamcmd.sh

然后切换到 steam 用户:

su - steam

非 root 用户可以用下面的命令切换:

sudo -iu steam

 


3. 安装 饥荒联机版 专用服务器

3.1 获取服务器配置文件

打开 KLei 账户的 饥荒联机版服务器管理页面,按照要求添加一个新服务器:

在接下来的页面里根据页面的提示和你的需要配置服务器,然后点击“下载设置”:

下载下来的会是一个压缩包,里面已经包含了所有开服需要的信息。
解压这个压缩包,你将得到一个名为 “MyDediServer”的文件夹,在它里面还有“Master”和“Caves”两个文件夹以及两个服务器配置文件。

3.2 上传配置文件

在 SSH 控制台中,你目前的身份应该是 steam 用户,并且处于此用户的主文件夹下。如果你的控制台提示符是类似 steam@xxxxxx:~# 的样子,说明你目前的登录身份与位置都是正确的,可以进行下一步操作。否则,请切换到 steam 用户并进入到主文件夹之后再操作(这两个步骤在前面都有写)。
在 SSH 控制台输入以下命令,在默认位置创建存储配置和存档的文件夹:

mkdir .klei
cd .klei
mkdir DoNotStarveTogether

然后用文件上传工具(我用的是 WinSCP)将上一个步骤中解压的 MyDediServer 文件夹上传到刚刚创建的这个 DoNotStarveTogether 文件夹中。

3.3 安装、验证并运行服务器

如果需要对游戏中的世界生成、生物、资源等进行调整,可以利用游戏的“创建世界”功能创建一个调整好的世界,然后进入到本地保存的存档文件夹中(在游戏主页点击“数据”按钮:

找到刚刚创建的存档文件夹(即 Cluster_x 文件夹,x 为你的存档栏位),将每个世界文件夹中的 save 文件夹、leveldataoverride.lua 文件复制到服务器存档文件夹的相应位置即可。

因为我没有添加 Mod ,所以无法给出详细的添加 Mod 步骤,但可以参考这篇教程,已经非常详细了。

首先,回到 steam 用户的主文件夹:

cd /home/steam

然后,利用 wget 下载 KLei 官方的服务器启动脚本:

wget "https://accounts.klei.com/assets/gamesetup/linux/run_dedicated_servers.sh"

等待下载完成,给它加上执行权限:

chmod u+x run_dedicated_servers.sh

最后,执行这个脚本,一次性完成 饥荒联机版专用服务器 的安装、验证和运行:

./run_dedicated_servers.sh

这个过程需要下载几百 MB 的文件,视网络情况,可能需要较长时间。
如果是第一次运行,还会进行 SteamCMD 的初始化。这个过程的长短同样极大依赖于网络条件。
顺利的话,等待服务器启动完毕,你就可以在 饥荒联机版 的服务器列表中找到你的服务器了。

3.4 故障排除

在这个过程中有很大几率发生这样一个错误:

error while loading shared libraries: libcurl-gnutls.so.4: cannot open shared object file: No such file or directory

这是依赖配置的问题,不要担心,按以下步骤操作就行。
首先,用 dpkg 命令查看 libcurl4-gnutls-dev 的安装位置。

32 位系统:

dpkg -L libcurl4-gnutls-dev

64 位系统:

dpkg -L libcurl4-gnutls-dev:i386

我们要在结果中找到 libcurl-gnutls.so 这个文件(也可能为 libcurl.so.4 或其它类似的名称,请适当变通),并记住它的完整路径如上图,它的完整路径为 /usr/lib/i386-linux-gnu/libcurl-gnutls.so
建立一个软链接,让它能够在 /usr/lib/ 下直接访问到,命令格式如下:

ln -s 上面获取的完整路径 /usr/lib/libcurl-gnutls.so.4

对于我而言,就是执行下面的命令:

ln -s /usr/lib/i386-linux-gnu/libcurl-gnutls.so /usr/lib/libcurl-gnutls.so.4