搭建饥荒服务器
服务器镜像:centos 8.2
服务器相关文件准备#
建立游戏服务器文件夹#
- 在客户端建立一个在线的新世界
- 勾选并配置 mod,调整世界参数,创建世界连接成功后退出
- 生成对应的服务器文件夹如
Cluster_1
在游戏主页左下方数据按钮可以找到也即自己的存档位置。
获取cluster_token#
为确保游戏服务器能24小时在线,饥荒桌面客户端的自建本地服务器密钥需要更换为官方长期有效版。
- 主页点击进入账号选项,即会打开steam内置浏览器,按照下图指引,记下
klei用户ID
- 在网页顶部导航栏进入游戏选项卡,找到饥荒服务器新建一个
cluster_token
并复制
- 对之前创建好的饥荒服务器文件夹
Cluster_1
中的cluster_token.txt
内的密钥进行替换。
mod管理#
- 新建mod安装管理文件
dedicated_server_mods_setup.lua
,格式如下:
1 | ServerModSetup("378160973") |
其中括号中的数字为对应的 mod 的 ID,ID 可在浏览创意工坊时steam内置浏览器地址栏找到,保存至文件夹备用。此配置文件为 mod 安装更新使用,务必确保在先前创建的存档文件中所勾选的mod的ID引入此处,否则无法加载正常mod。
管理员添加#
- 新建管理员名单
adminlist.txt
- 将先前记录下的
klei用户ID
填入- 若需添加多个管理员,将用户对应的
klei用户ID
分别换行填入即可
- 若需添加多个管理员,将用户对应的
- 将
adminlist.txt
移至刚刚创建好的Cluster_1
文件夹
服务器安装和配置#
连接服务器#
输入服务器公网 IP 以管理员身份连接服务器
- 新建用户
1 | useradd klei |
- 设置密码
1 | passwd klei |
以上步骤创建一个普通用户是为了更好地专门管理饥荒服务器
游戏安装#
STEAMCMD安装#
- 在终端命令行下操作,安装必要依赖组件
1 | yum install glibc.i686 libstdc++.i686 libcurl.i686 --setopt=protected_multilib=false |
- 安装 screen 工具,以实现洞穴/地上切换
1 | yum install screen |
- 安装 steamcmd
1 | mkdir steamcmd #建立一个新文件夹 |
执行
./steamcmd.sh
未成功可能没有安装32位运行库,执行yum install xulrunner.i686
或yum install libXtst.i686
以上命令依次输入执行,运行成功后在终端提示变为Steam>
即为成功(提示 SDL not found 可以不予理会)。
饥荒服务端安装#
- 在上一步 Steam 会话中下载安装饥荒游戏服务器
1 | login anonymous #匿名登录 |
由于网络问题可能需要等上一段时间,不行就中断后再试,直到提示安装成功,输入
quit
或ctrl
+c
退出steam会话。如果没有设置强制安装到指定目录,正常情况是安装在
/klei/Steam/steamapps/common/Don't Starve Together Dedicated Server
,此时我们需要返回到该目录并试运行饥荒服务器。
- 添加centos下缺少的一个库的代替,并试运行
1 | cd ~ #返回根目录 |
当提示如下图所示即为安装成功,若启动不成功可以使用命令
dd ./dontstarve_dedicated_server_nullrenderer
来查看程序缺少的动态链接库。
按住
Ctrl
+c
键以关闭饥荒服务端会话窗口。
游戏文件配置#
- 将准备好的本地游戏文件夹
Cluster_1
上传至服务器
1 | cd /home/klei/.klei/DoNotStarveTogether #移至饥荒存档目录 |
Caves
和Master
分别对应洞穴和地上世界,其内含的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 | cd /home/klei/Steam/steamapps/common/"Don't Starve Together Dedicated Server"/bin #注意加上转义引号 |
当会话窗口提示sim paused即为完成
- 客户端尝试连接(此时只会启动地上世界),成功进入后在终端关闭(同时按住
Ctrl
+c
)。
此时默认运行 Cluster_1 存档,且只会运行地上世界,正式启动游戏服务器可关闭后使用下文的更新重启脚本。
游戏服务器运行#
创建更新重启脚本#
更新脚本#
为方便游戏后期更新需要创建更新重启脚本,在终端输入
cd
命令移动至klei用户的家目录输入
vi dst_update.sh
创建一个名为dst_update.sh
的脚本文件,终端会话框会进入 vi 模式按键盘的
insert
键,进入 vi 编辑模式,使用方向键移动光标,输入下列指令代码
1 | pkill screen |
- 再按
esc
进入 vi 命令行模式,输入:wq
,保存并退出
重启脚本#
- 类似的新建重启脚本
dst_restart.sh
1 | pkill screen |
注意:当无法启动时可使用screen -r dst1
用于恢复地上世界会话至前台查看报错信息,使用screen -d dst1
将地上世界会话切换至后台。
- 给予脚本文件权限
1 | chmod u+x dst_update.sh & chmod u+x dst_restart.sh |
之后每次游戏需要更新都可以执行该脚本来完成(mod 更新只需要执行重启脚本),以新建的终端默认 klei 用户为例,如下即可完成。
1 | ./dst_update.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
文件做好备份以便更新后备用。