饥荒服务器搭建 (docker)
本文最后更新于 2023年11月2日 下午
steam上玩饥荒如果是某一个人作为服务端的话, 那么其他人的延迟会取决于这个人的带宽和与他连接的延迟, 并且如果服务端掉线了, 其他人是无法继续游戏的, 总之是一个不怎么好的游戏体验
这时候就需要专用服务器 (Dedicated Server) 来进行配置, 这样无论何时, 几个人, 只要服务器处于运行状态就可以进行游戏.
然而官方的 server 配置过于复杂: https://dontstarve.fandom.com/wiki/Guides/Don’t_Starve_Together_Dedicated_Servers#On_Linux_(Debian)
这就驱动了第三方开发各种各样的脚本来方便部署, 其中 docker 就是一个特别好用的打包手段, 这里选择了 github 上 star 最多的一个仓库作为示例, 实际上其他的镜像也都大差不差: https://github.com/Jamesits/docker-dst-server
注: 本文面向对 linux 和 docker 有一定了解的人, 不对系统和依赖安装做过多介绍, 主要内容在于如何进行配置
0 - 预准备
系统: debian11 (linux系统应该均可)
docker 安装
直接参考官网教程就可以: https://docs.docker.com/engine/install
1 - 配置 docker compose
来源于官方示例: https://github.com/Jamesits/docker-dst-server/blob/master/docker-compose.yml
1 |
|
新建一个文件夹, 将上述文件保存为 docker-compose.yml
后启动 docker-compose up
, 这时就会在文件夹下生成如下所示的目录:
1 |
|
2 - 申请 token
- 客户端打开饥荒游戏
- 点击左下角
account
- 在弹出的浏览器中点击
游戏
- 点击添加服务器, 然后记住 token
- 到 docker 中将 token 黏贴到:
./data/DoNotStarveTogether/Cluster_1/cluster_token.txt
- 进行 cluster 和 mod 等配置 (见下文), 然后重启即可
3 - 对 cluster 进行配置
需要修改的文件:
./data/DoNotStarveTogether/Cluster_1/cluster.ini
, 是对服务端属性的一些通用配置, 具体示例如下:
1 |
|
4 - mod 安装 (重点)
需要注意的是, 此 docker 镜像在 mod 安装时有bug, 具体可以参考这个ISSUE: https://github.com/Jamesits/docker-dst-server/issues/53
简单来说就是有些 mod 会装不上, 因为 v1 和 v2 的 mod 会下载到不同的文件夹中, 而 docker 中只处理了一个版本的 mod
以下会对如何修复做出介绍
通用 mod 安装
mod 的安装需要服务端和客户端都进行配置, 具体如下:
服务端配置 :
编辑: ./data/DoNotStarveTogether/Cluster_1/mods/dedicated_server_mods_setup.lua
, 填写自己想安装的 mod id, 示例:
1 |
|
其中 mod id 就是点开 steam 的创意工坊, ?id=xxx
后跟的一串数字
注: mod 主要有 all_clients_require_mod , server_only_mod 以及 clients_only_mod, 服务器只需要安装前两个, 最后一个是客户端本地安装和配置的, 不需要在服务器上安装
上述配置主要是让服务端下载 mod, 然后对于 mod 的配置文件需要客户端进入游戏进行 ui 配置 (当然你能手写配置文件也行), 然后上传到服务器, 步骤如下:
客户端配置:
-
首先需要客户端安装同样的 mod, 并在配置中进行自己想要的配置, 然后按如下步骤将客户端的配置上传到服务器:
-
在 本地 上传
modoverrides.lua
文件到服务器对应目录- 本地保存位置: (mac 为例, windows 只是前缀不一样, 其他路径是一模一样的)
/Documents/Klei/DoNotStarveTogether/xxxxx/Cluster_1/Master/modoverrides.lua
- 服务器保存位置:
/data/DoNotStarveTogether/Cluster_1/Master/modoverrides.lua
- 本地保存位置: (mac 为例, windows 只是前缀不一样, 其他路径是一模一样的)
-
在服务器上重启
docker compose restart
即可
mod 安装不上的 bug 以及解决方案
在 mod 安装过程中, 我发现有几个 mod 死活装不上, 查看 ISSUE 后发现原因:
原因是mod有两个版本, 一个安装在 ~/Library/Application Support/Steam/steamapps/workshop/content
中, 而另一个安装在 ~/Library/Application Support/Steam/steamapps/common/Don't Starve Together/dontstarve_steam.app/Contents/mods
中
docker 版本只会下载第一种mod, 不会下载第二种
这时候就需要手动将第一种 mod 的安装文件上传到服务器, 经测试服务器重启后可以正确解析和安装 mod, 方法如下:
-
本地的 v2 mod 的位置:
Library/Application Support/Steam/steamapps/common/Don't Starve Together/dontstarve_steam.app/Contents/mods/workshop-*
-
服务器 v2 mod 的存放位置:
/data/DoNotStarveTogether/Cluster_1/mods/
以我自己为例, 直接 scp 上传即可:
1 |
|
然后重启就大功告成啦!