服务器镜像:centos 8.2

服务器相关文件准备#

建立游戏服务器文件夹#

  • 在客户端建立一个在线的新世界
  • 勾选并配置 mod,调整世界参数,创建世界连接成功后退出
  • 生成对应的服务器文件夹如Cluster_1

Snipaste_2021-11-29_10-13-03

在游戏主页左下方数据按钮可以找到也即自己的存档位置。

获取cluster_token#

为确保游戏服务器能24小时在线,饥荒桌面客户端的自建本地服务器密钥需要更换为官方长期有效版。

  • 主页点击进入账号选项,即会打开steam内置浏览器,按照下图指引,记下klei用户ID

Snipaste_2021-11-29_10-25-38

  • 在网页顶部导航栏进入游戏选项卡,找到饥荒服务器新建一个cluster_token并复制

Snipaste_2021-11-29_10-23-03

  • 对之前创建好的饥荒服务器文件夹Cluster_1中的cluster_token.txt内的密钥进行替换。

mod管理#

  • 新建mod安装管理文件dedicated_server_mods_setup.lua,格式如下:
1
2
3
ServerModSetup("378160973")
ServerModSetup("666155465")
ServerModSetup("922251350")

其中括号中的数字为对应的 mod 的 ID,ID 可在浏览创意工坊时steam内置浏览器地址栏找到,保存至文件夹备用。此配置文件为 mod 安装更新使用,务必确保在先前创建的存档文件中所勾选的mod的ID引入此处,否则无法加载正常mod。

管理员添加#

  • 新建管理员名单adminlist.txt
  • 将先前记录下的klei用户ID填入
    • 若需添加多个管理员,将用户对应的klei用户ID分别换行填入即可
  • adminlist.txt移至刚刚创建好的Cluster_1文件夹

image-20211129103311163

服务器安装和配置#

连接服务器#

输入服务器公网 IP 以管理员身份连接服务器

  • 新建用户
1
useradd klei
  • 设置密码
1
passwd klei

以上步骤创建一个普通用户是为了更好地专门管理饥荒服务器

游戏安装#

STEAMCMD安装#

  • 在终端命令行下操作,安装必要依赖组件
1
2
yum install glibc.i686 libstdc++.i686 libcurl.i686 --setopt=protected_multilib=false 
#安装依赖库(针对centos64位系统,设置多库设置多库保护关闭)
  • 安装 screen 工具,以实现洞穴/地上切换
1
yum install screen
  • 安装 steamcmd
1
2
3
4
5
6
7
8
9
mkdir steamcmd   #建立一个新文件夹

cd steamcmd #进入创建好的文件夹

wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz #下载相应的安装包

tar -xvzf steamcmd_linux.tar.gz #解压

./steamcmd.sh #执行命令

执行./steamcmd.sh未成功可能没有安装32位运行库,执行 yum install xulrunner.i686yum install libXtst.i686

以上命令依次输入执行,运行成功后在终端提示变为Steam>即为成功(提示 SDL not found 可以不予理会)。

饥荒服务端安装#

  • 在上一步 Steam 会话中下载安装饥荒游戏服务器
1
2
login anonymous   #匿名登录
app_update 343050 validate #饥荒服务端安装

由于网络问题可能需要等上一段时间,不行就中断后再试,直到提示安装成功,输入quitctrl+c退出steam会话。

如果没有设置强制安装到指定目录,正常情况是安装在/klei/Steam/steamapps/common/Don't Starve Together Dedicated Server,此时我们需要返回到该目录并试运行饥荒服务器。

  • 添加centos下缺少的一个库的代替,并试运行
1
2
3
4
5
6
7
cd ~   #返回根目录

cd Steam/steamapps/common/"Don't Starve Together Dedicated Server"/bin #注意加上转义引号

ln -s /usr/lib/libcurl.so.4 /usr/lib/libcurl-gnutls.so.4 #添加缺失的依赖

./dontstarve_dedicated_server_nullrenderer #试运行

当提示如下图所示即为安装成功,若启动不成功可以使用命令 dd ./dontstarve_dedicated_server_nullrenderer 来查看程序缺少的动态链接库。

image-20211128180904068

按住Ctrl+c 键以关闭饥荒服务端会话窗口。

游戏文件配置#

  • 将准备好的本地游戏文件夹Cluster_1上传至服务器
1
2
cd  /home/klei/.klei/DoNotStarveTogether   #移至饥荒存档目录
rm -rf Cluster_1 #删除试运行时系统自动生成的存档

CavesMaster分别对应洞穴和地上世界,其内含的modoverrides.lua为对应各自世界的 mod 配置选项,该文件决定了mod的启用与参数调整。

  • 将服务器/home/klei/Steam/steamapps/common/Don't Starve Together Dedicated Server/mods上的mod安装管理文件dedicated_server_mods_setup.lua先删除再上传本地的。也可以不删除直接在 VScode 编辑修改或终端使用 vi 命令修改。

最近 klei 更新 mod 架构后,新版v2架构的mod会被放在游戏安装目录的ugc_mods文件夹中。

  • 完成后如下在终端输入指令启动游戏服务器稍加等待
1
2
cd /home/klei/Steam/steamapps/common/"Don't Starve Together Dedicated Server"/bin   #注意加上转义引号 
./dontstarve_dedicated_server_nullrenderer #运行

当会话窗口提示sim paused即为完成

  • 客户端尝试连接(此时只会启动地上世界),成功进入后在终端关闭(同时按住Ctrl+c)。

此时默认运行 Cluster_1 存档,且只会运行地上世界,正式启动游戏服务器可关闭后使用下文的更新重启脚本。

游戏服务器运行#

创建更新重启脚本#

更新脚本#

  • 为方便游戏后期更新需要创建更新重启脚本,在终端输入cd命令移动至klei用户的家目录

  • 输入vi dst_update.sh创建一个名为dst_update.sh的脚本文件,终端会话框会进入 vi 模式

  • 按键盘的insert键,进入 vi 编辑模式,使用方向键移动光标,输入下列指令代码

1
2
3
4
5
6
7
pkill screen 
#关闭当前游戏服务器

cd /klei/steamcmd

./steamcmd.sh +login anonymous +app_update 343050 validate +quit
#steamcmd进行游戏更新
  • 再按esc进入 vi 命令行模式,输入:wq,保存并退出

重启脚本#

  • 类似的新建重启脚本dst_restart.sh
1
2
3
4
5
6
7
8
9
10
11
12
pkill screen
#关闭当前游戏服务器

cd /home/klei/Steam/steamapps/common/"Don't Starve Together Dedicated Server"/bin
#移至饥荒安装目录

screen -S dst1 -d -m ./dontstarve_dedicated_server_nullrenderer -cluster Cluster_1 -console -shard Master
#利用screen命令静默启动地上世界
#更改文件夹名称Cluster_1即可更改欲启动的不同存档文件夹。

screen -S dst2 -d -m ./dontstarve_dedicated_server_nullrenderer -cluster Cluster_1 -console -shard Caves
#利用screen命令静默启动洞穴世界

注意:当无法启动时可使用screen -r dst1用于恢复地上世界会话至前台查看报错信息,使用screen -d dst1将地上世界会话切换至后台。

  • 给予脚本文件权限
1
chmod u+x dst_update.sh & chmod u+x dst_restart.sh

之后每次游戏需要更新都可以执行该脚本来完成(mod 更新只需要执行重启脚本),以新建的终端默认 klei 用户为例,如下即可完成。

1
2
./dst_update.sh
./dst_restart.sh

后期mod管理和添加#

玩饥荒 mod 时必不可少的,前文已经解决了如何在本地设置好 mod 配置文件。

管理:当游戏服务器上线后想添加新的或禁用某个 mod,可以通过修改服务器Cluster_1中的地上世界和洞穴世界文件夹中的两个modoverrides.lua中”return{ “后面添加上 mod 描述如["workshop-375850593"] = { enabled = true },禁用的话改为false即可。

添加:将服务器/home/klei/Steam/steamapps/common/Don't Starve Together Dedicated Server/mods中的 mod 安装管理文件dedicated_server_mods_setup.lua中添加上ServerModSetup("375850593"),最后使用重启脚本dst_restart.sh即可完成 mod 的添加启用。

注意:最近的版本更新使得该 mod 安装管理文件每次游戏更新后重置,建议将dedicated_server_mods_setup.lua文件做好备份以便更新后备用。

参考文章#

klei官方教程

CentOS下安装和配置饥荒联机版服务器 | SumyBlog

饥荒联机版 Linux 服务器(地上世界与地下世界)搭建 - 知乎