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