搭建自己的饥荒Don't Starve服务器,摆脱联机卡顿和小伙伴快乐联机
原创![头图不能少呀~~](https://ask.qcloudimg.com/http-save/yehe-7704194/adbae175b11f05f024ecca451948ec37.jpeg)
饥荒官方服务器经常无法连接,无法和小伙伴玩耍;如何搭建自己的饥荒服务器呢?和小伙伴随时随地,快乐联机。
前言
饥荒这个游戏,虽然首发于2016年,但是贵在好玩呀。和Minecraft一样,可玩性很高,并且有很多mods,最近和小伙伴玩的过程中,就想着搭建一个服务器,方便在主机玩家不在线时候,也可以让其他玩家自由玩耍。
准备工具
目前,Don't Starve的服务器自建,支持Linux Server和Windows Server服务器,这两个就要看自己的取舍了: 理论上,Windows Server更容易上手,毕竟大多数人的操作系统是Windows,但是对资源的浪费很大,举个例子:一台2C 4G的服务器,Windows Server可能系统占用1G内存,而Linux才占100M不到。
不过,本文Linux和Windows Server上如何搭建Don't Starve都会讲哦,大家不用担心。 但是还是以Windows Server为主,照顾小白用户。
如果你并没有服务器设备,需要一个购买/租借,强烈推荐学生用户:
另外,为大家争取到优惠*(੭ˊᵕˋ)੭ଘ,本站专属优惠~~ (可能比学生优惠还优惠哦~) :
经过测试,一台2C 4G 6M配置腾讯云轻量应用服务器,可以流畅运行Don't Starve,且在6个人游玩时,带宽足够(没有更多小伙伴可以来测试了(・_・;
辅助视频
嘿嘿,做教程视频不易(B站根本不会推荐引流),请务必一键三连嗷~B站视频地址: https://www.bilibili.com/video/BV1LB4y1v7n3
云+社区视频镜像地址: https://cloud.tencent.com/developer/video/31976
服务器初始化
以 腾讯云服轻量应用服务器Lighthouse 为例,如果你购买的是Linux服务器(Debian、Ubuntu或CentOS等Linux发行版本服务器),如果想快速初始化,可以按 本文章搭建宝塔服务器 进行快速初始化。
如果你购买的是Windows Server(Windows Server2019、Windows Server 2022)。我们购买服务器后,切换到腾讯云服务器后台,重制我们的 Administrator 用户密码:
![重制密码](https://ask.qcloudimg.com/http-save/7704194/b21972b1f5696675ea2a25ac7ade4489.png)
![重制密码](https://ask.qcloudimg.com/http-save/7704194/7501f60684ed9e28ea03dc2ff1b558c0.png)
之后,就可以远程连接服务器。你可以使用腾讯云的WebRDP(远程桌面):
![VNC远程](https://ask.qcloudimg.com/http-save/7704194/dad5b65fda5e7166d7e52dd0d73fd158.png)
本地为macOS
因为后续我们需要上传本地饥荒客户端的配置给服务器使用,所以我们可以使用远程桌面的应用,比如:macOS使用Microsoft Remote Desktop。
![macOS远程](https://ask.qcloudimg.com/http-save/7704194/1cc0c89c87655fbf170240150e03e32b.png)
并且创建一个共享的文件夹,用来文件交互:
![设置本地交互目录](https://ask.qcloudimg.com/http-save/7704194/6fb2fa1efa2cc218a8e2b59e41943dc6.png)
![远程后效果](https://ask.qcloudimg.com/http-save/7704194/da380320e2359e9c0df59712abc830f5.png)
![进入文件夹](https://ask.qcloudimg.com/http-save/7704194/e873410ec0d60520f28c224d29b2e920.png)
本地为Windows
使用Windows自带的远程:鼠标右击
开始菜单
>>
运行
,输入
mstsc
命令,打升远程桌面对话框:
![初始化](https://ask.qcloudimg.com/http-save/7704194/b9cd2cc58b57e1bfab2e0fa6f9ff0921.png)
打开高级选项:
![设置高级](https://ask.qcloudimg.com/http-save/7704194/9f72454560a93c38be5327f174412d15.png)
并且,对本地文件夹进行映射:
![设置本地交互目录](https://ask.qcloudimg.com/http-save/7704194/ebc2ad8dc85d9e856e2b4dc5f59f1752.png)
![远程后效果](https://ask.qcloudimg.com/http-save/7704194/a6266953116e61d8cc490ffc0ac67d29.png)
![进入文件夹](https://ask.qcloudimg.com/http-save/7704194/aaa33fe0a93cc955df8f2f7dd6b3e3cd.png)
SteamCMD
本章节目录,所有操作在Windows Server内操作,不是本地Windows,特此提醒
在Windows Server上,浏览器下载 Steam CMD
之后,注意⚠️: 一定要解压到空文件夹、一定要解压到空文件夹,不要没解压就直接在ZIP内使用SteamCMD!!!
![下载CMD后解压](https://ask.qcloudimg.com/http-save/7704194/36fd4686808f7a55e7a2b89cd99d36c3.png)
最后,我们双击SteamCMD,开始初始化:
![SteamCMD初始化](https://ask.qcloudimg.com/http-save/7704194/0ceacae8f816d4b7c7f514425551ed81.png)
显示为
Steam>
,这个时候就是SteamCMD的交互模式,说明初始化完成了,在等待我们进行指令交互了:
![SteamCMD初始化完成](https://ask.qcloudimg.com/http-save/7704194/9d36d3aa775f6e13efc290b8bced1230.png)
同步饥荒服务器
本章节目录,所有操作在Windows Server内操作,不是本地Windows,特此提醒
现在,我们需要使用SteamCMD,同步饥荒服务器原始文件到我们本地,很简单,在SteamCMD的交互模式下输入:
login anonymous
饥荒的服务器,并不需要我们登录就可以直接下载
![匿名登录](https://ask.qcloudimg.com/http-save/7704194/95d20b770714359457622e76763c6a81.png)
如果出现连接超时:
![连接超时操作](https://ask.qcloudimg.com/http-save/7704194/f47dc453bd793e997a8c5b7ced87f93c.png)
就重新输入
login anonymous
进行登录一次,最后成功匿名登录结果:
![连接成功](https://ask.qcloudimg.com/http-save/7704194/68757af1fe68a2daa2a5ef2546f0800d.png)
最后,我们这个时候再同步饥荒服务器:
app_update 343050 validate
饥荒服务器的appid是
343050
![正在下载](https://ask.qcloudimg.com/http-save/7704194/d23cd077aa5d75fe793a709eb7cb68f6.png)
![下载成功](https://ask.qcloudimg.com/http-save/7704194/14272469c2dc375ca2bce3ad04df51da.png)
可以看到,最后成功,我们饥荒服务器同步就完成了,打开SteamCMD的相对路径
steamapps\common\Don't Starve Together Dedicated Server
就是我们的饥荒服务器。
![同步地址](https://ask.qcloudimg.com/http-save/7704194/24c701d5c05f3b0f77c3cf3847770d4d.png)
这个时候,我们SteamCMD的“黑窗”就可以关闭了
饥荒服务器初始化
本章节目录,所有操作在Windows Server内操作,不是本地Windows,特此提醒。
并且,当前在
steamapps\common\Don't Starve Together Dedicated Server
目录内,以下相对路径需要注意
现在,我们开始饥荒服务器的初始化。进入配置文件地址
bin\scripts
,有这个执行文件,内容包含:
![启动文件](https://ask.qcloudimg.com/http-save/7704194/46c029b089a76ce467527f2702023bce.png)
# 启动世界
start "Don't Starve Together Overworld" /D "%~dp0.." "%~dp0..\dontstarve_dedicated_server_nullrenderer.exe" -conf_dir DoNotStarveTogether_EasyConfigOverworld -console
# 启动洞穴
start "Don't Starve Together Caves" /D "%~dp0.." "%~dp0..\dontstarve_dedicated_server_nullrenderer.exe" -conf_dir DoNotStarveTogether_EasyConfigCaves -console
直接双击这个执行文件,是不能启动成功的:
![启动失败](https://ask.qcloudimg.com/http-save/7704194/e815a78a10aa281ffdf810f396d70668.png)
这个主要是:
- 没有服务器配置文件
- 没有Auth Token(账户认证Token)
所以,服务器只是简单校验服务器后,就停止了。现在我们需要补全配置文件和Auth Token。
同步配置文件
同步配置文件的方法很简单。首先,本地的饥荒服务器创建一个存档(当然,可以把洞穴生成也选中):
![本地开设文档](https://ask.qcloudimg.com/http-save/7704194/4426577869ebf202e776b2242ff4bb4f.png)
创建成功后,我们断开连接,并在首页选择
数据
:
![本地打开数据](https://ask.qcloudimg.com/http-save/7704194/d499394472e1366d79527537bdc0e271.png)
打开后,
Cluster_X
就是存档存放的文件(比如:Cluster_1),这里的X对应你在游戏中按顺序创建的第X个存档。(请注意, X 是数字从小到大, 有空余则填充这样一个逻辑, 所以 新创建的存档并不一定是数字序最大的存档, 请查看文档修改时间选择对应存档):
![存档文件](https://ask.qcloudimg.com/http-save/7704194/692d3af7c1a6fee9a4ba781a75ce28c1.png)
将其复制到共享文件夹内,共享给我们的Windows Server:
![共享成功](https://ask.qcloudimg.com/http-save/7704194/df627afe2bc8fb676b101c791b74df57.png)
最后,服务器上打开
C:\Users\Administrator\Documents\Klei
文件夹,因为现在饥荒的本地客户端洞穴和主世界文件创建在一起,所以为了服务器和本地方便管理,我们创建一个
myDoNotStarveTogetherData
文件夹,并把刚刚的存档文件放入其中:
![移动](https://ask.qcloudimg.com/http-save/7704194/9a7f4bd348da52e0ff1063912f0e23fe.png)
同时,修改上文说到的配置文件,有这个执行文件,如果你和我一样,就改成这样即可:
start "Don't Starve Together Overworld" /D "%~dp0.." "%~dp0..\dontstarve_dedicated_server_nullrenderer.exe" -conf_dir myDoNotStarveTogetherData -console
start "Don't Starve Together Caves" /D "%~dp0.." "%~dp0..\dontstarve_dedicated_server_nullrenderer.exe" -conf_dir myDoNotStarveTogetherData
![修改执行文件](https://ask.qcloudimg.com/http-save/7704194/9c996a07467f766fdb2dc5140c92e4e8.png)
Auth Token
最后,我们需要写入Auth Token,首先去获取,在客户端内,点击
账户
(可能需要回到上级并注册账户):
![登录Klei](https://ask.qcloudimg.com/http-save/7704194/3bc410c0a3c99feb9fd03b0b0d7efb29.png)
之后,选择
游戏
:
![选择饥荒服务器](https://ask.qcloudimg.com/http-save/7704194/74801030671dd13088bc5fe5f1d7d47d.png)
并且创建游戏后,得到游戏服务器Token,比如:
![创建Token](https://ask.qcloudimg.com/http-save/7704194/484ff0e33ca01242edd0ff24ae7d4285.png)
我们复制Token后,在服务器上刚刚创建的地图文件夹内创建一个叫
cluster_token.txt
的文件,并粘贴Token保存:
![填写Token](https://ask.qcloudimg.com/http-save/7704194/5d0e86c247a054637bd387c0feadfbf0.png)
到此,Auth Token就创建完成了。
启动服务器
现在,再次点击执行文件,就可以创建服务器成功了。如果出现
CURL ERROR: (dst.metrics.klei.com) [28]Connection timed out after 5000 milliseconds
这样的问题。可以看看
Q&A
内的解决方案。
最后成功运行服务器:
服务器防火墙
现在,我们需要对服务器防火墙进行放行。本着用那个端口就放行那个的原则,根据上文上次地图文件内的
cluster.ini
内的
master_port
进行放行,同时放
10999
端口:
比如:
-
我的
master_port
是10888
所以,在腾讯云的后台放行UDP:
![放行端口](https://ask.qcloudimg.com/http-save/7704194/e9922b7c25b70e5d85f3b7c11250716b.png)
之后,就可以服务器连接了(可能需要重启一次饥荒服务器)。
本地连接
本章节目录,所有操作在本地Windows内操作,不是服务器Windows Server了哦,特此提醒。
打开本地的饥荒联机版,选择 浏览游戏 :
![选择浏览游戏](https://ask.qcloudimg.com/http-save/7704194/4194a72b9957c63f2071bffb5c3cafdc.png)
之后,进行过滤:
![过滤服务器](https://ask.qcloudimg.com/http-save/7704194/10ac519c8597984630ffc17e368b746f.png)
在之后,选择进入即可,第一次加载,可能会极其缓慢。
加载完成:
![加载完成](https://ask.qcloudimg.com/http-save/7704194/eb45f48d57d1821770bb4101227bb5ca.png)
添加mod
饥荒服务器添加mod就太简单了(相当于Minecraft添加mod,经常会出现各种冲突问题……)
添加mod的方法很很简单;首先,我们在本地配置好mod,之后上传到服务器运行。这个时候把
Master
(或者Caves)内的
modoverrides.lua
内mod,按照:
ServerModSetup("666155465")
这样的格式,追加到饥荒游戏服务器下的
mods/dedicated_server_mods_setup.lua
内即可(一行一个):
![添加mod](https://ask.qcloudimg.com/http-save/7704194/92ab186520c7a916899f432f1c0d8beb.png)
Linux如何搭建
考虑到普通用户用Windows比较多,所以文章使用Windows Server进行主要演示,这里简单演示一下Linux Server上如何进行操作。
Linux服务器,我也推荐使用腾讯云轻量应用服务器,推荐使用Debian或Ubuntu发行版本,不推荐使用CentOS发行版本。(使用CentOS,可能会缺少i386依赖库,导致饥荒服务器无法初始化运行)。
如果你并没有服务器设备,需要一个购买/租借,强烈推荐:
首先,我们还是使用SteamCMD去同步饥荒服务器,但是观察 SteamCMD官方文档 ,SteamCMD需要用一个叫steam的用户,在“家”目录下的steam内操作。所以,我们提前创建:
# 创建一个用户叫steam
sudo useradd -m steam
# 给steam重置密码
sudo passwd steam
另外,steamcmd需要依赖包:
# Ubuntu/Debian
sudo apt-get install lib32gcc1
# CentOS
yum install glibc.i686 libstdc++.i686
初始化与拉取
下载SteamCMD并安装:
# 切换为steam用户
su - steam
# 创建steam目录
mkdir ~/Steam && cd ~/Steam
# 下载SteamCMD并解压
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -
# 运行steamcmd
./steamcmd.sh
如图:
![安装运行SteamCMD](https://ask.qcloudimg.com/http-save/7704194/688b59ecb5896d5a0cb140ee284e0354.png)
以
Steam
开头时,就是进入SteamCMD的交互模式了,我们使用:
login anonymous
即可匿名登录:
![安装运行SteamCMD](https://ask.qcloudimg.com/http-save/7704194/d7d8a5e0a8f3b199c43b760c330120e1.png)
之后,进行饥荒服务器的拉取:
app_update 343050 validate
![拉取饥荒服务器](https://ask.qcloudimg.com/http-save/7704194/cbe19a0247a4fe2124cf20e80118526a.png)
拉取成功:
![拉取饥荒服务器成功](https://ask.qcloudimg.com/http-save/7704194/0b3c0b7e62ab366c44954d994cdd827c.png)
最后,看了一下目录,就和Windows Server一模一样了,实际上的配置也是一样的:
![目录结构](https://ask.qcloudimg.com/http-save/7704194/467928e0658b103104da4c724825c9d6.png)
初始化定制
但是,如果要启动,建议的配置是,首先创建一个地图配置目录:
# 当前是steam用户
mkdir /home/steam/myDoNotStarveTogetherData
之后,创建地图启动脚本:
# 当前是steam用户
cd /home/steam/Steam/steamapps/common/Don't Starve\ Together\ Dedicated\ Server/bin
echo "./dontstarve_dedicated_server_nullrenderer -console -persistent_storage_root /home/steam -conf_dir myDoNotStarveTogetherData -cluster World1 -shard Master" > master_start.sh
echo "./dontstarve_dedicated_server_nullrenderer -console -persistent_storage_root /home/steam -conf_dir myDoNotStarveTogetherData -cluster World1 -shard Caves" > cave_start.sh
chmod +x master_start.sh cave_start.sh
之后,运行即可:
# 当前在饥荒目录内的bin文件夹下
## 启动主世界
./master_start.sh
## 启动洞穴
./cave_start.sh
注意:启动过程中,需要保持交互模式,配合 screen 来后台运行饥荒洞穴和主世界。
i386支持问题
在Debian/Ubuntu上如果出现
./dontstarve_dedicated_server_nullrenderer: error while loading shared libraries: libcurl-gnutls.so.4: cannot open shared object file: No such file or directory
或者
./dontstarve_dedicated_server_nullrenderer: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
![启动失败](https://ask.qcloudimg.com/http-save/7704194/cbd2ba4145865eddb45c34f51cd76655.png)
一般是因为你服务器是X86_X64的,你需要开启
i386
支持,并添加
i386
版本的
libcurl-gnutls.so.4
到其包内。
切换到root用户
运行:
# 开启支持
sudo dpkg --add-architecture i386