饥荒官方服务器经常无法连接,无法和小伙伴玩耍;如何搭建自己的饥荒服务器呢?和小伙伴随时随地,快乐联机。
饥荒这个游戏,虽然首发于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 用户密码:
之后,就可以远程连接服务器。你可以使用腾讯云的WebRDP(远程桌面):
因为后续我们需要上传本地饥荒客户端的配置给服务器使用,所以我们可以使用远程桌面的应用,比如:macOS使用Microsoft Remote Desktop。
并且创建一个共享的文件夹,用来文件交互:
使用Windows自带的远程:鼠标右击 开始菜单 >> 运行 ,输入 mstsc 命令,打升远程桌面对话框:
开始菜单
运行
mstsc
打开高级选项:
并且,对本地文件夹进行映射:
本章节目录,所有操作在Windows Server内操作,不是本地Windows,特此提醒
在Windows Server上,浏览器下载 Steam CMD
之后,注意⚠️: 一定要解压到空文件夹、一定要解压到空文件夹,不要没解压就直接在ZIP内使用SteamCMD!!!
最后,我们双击SteamCMD,开始初始化:
显示为 Steam> ,这个时候就是SteamCMD的交互模式,说明初始化完成了,在等待我们进行指令交互了:
Steam>
现在,我们需要使用SteamCMD,同步饥荒服务器原始文件到我们本地,很简单,在SteamCMD的交互模式下输入:
login anonymous
饥荒的服务器,并不需要我们登录就可以直接下载
如果出现连接超时:
就重新输入 login anonymous 进行登录一次,最后成功匿名登录结果:
最后,我们这个时候再同步饥荒服务器:
app_update 343050 validate
饥荒服务器的appid是 343050
343050
可以看到,最后成功,我们饥荒服务器同步就完成了,打开SteamCMD的相对路径 steamapps\common\Don't Starve Together Dedicated Server 就是我们的饥荒服务器。
steamapps\common\Don't Starve Together Dedicated Server
这个时候,我们SteamCMD的“黑窗”就可以关闭了
本章节目录,所有操作在Windows Server内操作,不是本地Windows,特此提醒。
并且,当前在 steamapps\common\Don't Starve Together Dedicated Server 目录内,以下相对路径需要注意
现在,我们开始饥荒服务器的初始化。进入配置文件地址 bin\scripts ,有这个执行文件,内容包含:
bin\scripts
# 启动世界 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
直接双击这个执行文件,是不能启动成功的:
这个主要是:
所以,服务器只是简单校验服务器后,就停止了。现在我们需要补全配置文件和Auth Token。
同步配置文件的方法很简单。首先,本地的饥荒服务器创建一个存档(当然,可以把洞穴生成也选中):
创建成功后,我们断开连接,并在首页选择 数据 :
数据
打开后, Cluster_X 就是存档存放的文件(比如:Cluster_1),这里的X对应你在游戏中按顺序创建的第X个存档。(请注意, X 是数字从小到大, 有空余则填充这样一个逻辑, 所以 新创建的存档并不一定是数字序最大的存档, 请查看文档修改时间选择对应存档):
Cluster_X
将其复制到共享文件夹内,共享给我们的Windows Server:
最后,服务器上打开 C:\Users\Administrator\Documents\Klei 文件夹,因为现在饥荒的本地客户端洞穴和主世界文件创建在一起,所以为了服务器和本地方便管理,我们创建一个 myDoNotStarveTogetherData 文件夹,并把刚刚的存档文件放入其中:
C:\Users\Administrator\Documents\Klei
myDoNotStarveTogetherData
同时,修改上文说到的配置文件,有这个执行文件,如果你和我一样,就改成这样即可:
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
最后,我们需要写入Auth Token,首先去获取,在客户端内,点击 账户 (可能需要回到上级并注册账户):
账户
之后,选择 游戏 :
游戏
并且创建游戏后,得到游戏服务器Token,比如:
我们复制Token后,在服务器上刚刚创建的地图文件夹内创建一个叫 cluster_token.txt 的文件,并粘贴Token保存:
cluster_token.txt
到此,Auth Token就创建完成了。
现在,再次点击执行文件,就可以创建服务器成功了。如果出现 CURL ERROR: (dst.metrics.klei.com) [28]Connection timed out after 5000 milliseconds 这样的问题。可以看看 Q&A 内的解决方案。
CURL ERROR: (dst.metrics.klei.com) [28]Connection timed out after 5000 milliseconds
最后成功运行服务器:
现在,我们需要对服务器防火墙进行放行。本着用那个端口就放行那个的原则,根据上文上次地图文件内的 cluster.ini 内的 master_port 进行放行,同时放 10999 端口:
cluster.ini
master_port
10999
比如:
所以,在腾讯云的后台放行UDP:
之后,就可以服务器连接了(可能需要重启一次饥荒服务器)。
本章节目录,所有操作在本地Windows内操作,不是服务器Windows Server了哦,特此提醒。
打开本地的饥荒联机版,选择 浏览游戏 :
之后,进行过滤:
在之后,选择进入即可,第一次加载,可能会极其缓慢。
加载完成:
饥荒服务器添加mod就太简单了(相当于Minecraft添加mod,经常会出现各种冲突问题……)
添加mod的方法很很简单;首先,我们在本地配置好mod,之后上传到服务器运行。这个时候把 Master (或者Caves)内的 modoverrides.lua 内mod,按照:
Master
modoverrides.lua
ServerModSetup("666155465")
这样的格式,追加到饥荒游戏服务器下的 mods/dedicated_server_mods_setup.lua 内即可(一行一个):
mods/dedicated_server_mods_setup.lua
考虑到普通用户用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
如图:
以 Steam 开头时,就是进入SteamCMD的交互模式了,我们使用:
Steam
即可匿名登录:
之后,进行饥荒服务器的拉取:
拉取成功:
最后,看了一下目录,就和Windows Server一模一样了,实际上的配置也是一样的:
但是,如果要启动,建议的配置是,首先创建一个地图配置目录:
# 当前是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 来后台运行饥荒洞穴和主世界。
在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: 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
./dontstarve_dedicated_server_nullrenderer: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
一般是因为你服务器是X86_X64的,你需要开启 i386 支持,并添加 i386 版本的 libcurl-gnutls.so.4 到其包内。 切换到root用户 运行:
i386
libcurl-gnutls.so.4
# 开启支持 sudo dpkg --add-architecture i386