搭建饥荒专用服务器及常见问题解决方案

我不推荐用饥荒的一键搭建工具,这类工具功能越多,就越容易因为版本的更新而失去一些功能,如果工具得不到更新,那依赖这些工具来搭建的人想要使用新功能而工具并没有更新就不得不从头学习如何搭建,比如最近更新了世界的设定方式。

linux部分需要对linux能基本熟练各种命令,就算命令背不出来也应该知道有哪些命令要怎么做该怎么去查,linux小白要么换windows要么去学要么关掉。

steamcmd

windows

如果是服务器,图形界面会带来负担,推荐安装steamcmd,而且自动化更新什么的主要得靠命令行,如果使用家用电脑搭建,已经安装了steam,那么可以跳过这一步。

可以使用命令行一键安装,也可以手动安装

使用cmd运行命令:

CMD
md c:\steamcmd
cd c:\steamcmd
curl -o steamcmd.zip https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip
powershell "Expand-Archive -Path steamcmd.zip -DestinationPath .\\"
del steamcmd.zip
.\steamcmd.exe +quit
PowerShell

如果curl报错就开一下ie然后推荐的设置确定一下关掉就好了。

手动安装,下载地址

创建c:\steamcmd

把下载好的steamcmd.zip放进c:\steamcmd,然后解压缩

运行steamcmd.exe

linux

请注意从现在开始需要保持同一个用户执行,因为路径不是绝对路径,可以是root用户

SSH
mkdir -p ~/steamcmd/
cd ~/steamcmd/
wget "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz"
tar -xvzf steamcmd_linux.tar.gz

服务器基础配置

模组和改变世界选项后面再说,先把服务器成功运行起来,这步除了我是用中文以外几乎照搬官方文档,只改了一点点。

首先在科雷官网登录

然后依次点击游戏、饥荒联机版的游戏服务器

集群名中随意输入自己喜欢的名字,然后依次点击添加新服务器、配置服务器

设置自己喜欢的游戏基础设定,然后点击下载设置

然后得到一个压缩包,将压缩包解压,得到一个名为MyDediServer的文件夹。

windows:将这个文件夹放到C:\Users\%USERNAME%\文档\Klei\DoNotStarveTogether内,如果KleiDoNotStarveTogether文件夹不存在就自己新建,如果文档路径不在默认位置(如onedrive),请自行寻找自己移到哪儿了。

linux:将这个文件夹放到~/.klei/DoNotStarveTogether/中。

服务器设置

首先是基础配置文件MyDediServer\cluster.ini,大部分都是官方默认配置,其他的根据英文翻译也知道是做什么的,我只在第12行加了个语言,24-27行是steam群组设置,25行是群组管理员是否自动成为服务器管理员,26行是群组id,27行控制是否只有群组成员才能加入服务器

MyDediServer\cluster.ini
[GAMEPLAY]
game_mode = survival
max_players = 6
pvp = false
pause_when_empty = true

[NETWORK]
cluster_description = 描述
cluster_name = 房间名
cluster_password = password
cluster_language = zh

[MISC]
console_enabled = true

[SHARD]
shard_enabled = true
bind_ip = 127.0.0.1
master_ip = 127.0.0.1
master_port = 10889
cluster_key = supersecretkey

[STEAM]
steam_group_admins = true
steam_group_id = 11111111
steam_group_only = true
INI

管理员列表MyDediServer\adminlist.txt:一行一个管理员,类似于KU_xxxxxx这样的名称,可以在个人信息页查看,也可以在服务器运行日志里查看。

白名单列表MyDediServer\whitelist.txt:格式同上。

黑名单列表MyDediServer\blocklist.txt:格式同上。

运行服务器

windows:创建一个.bat文件,文件名随意,将以下内容复制到bat文件中,然后双击运行即可。

BAT (Batchfile)
c:\steamcmd\steamcmd.exe +login anonymous +app_update 343050 validate +quit
cd /D "c:\steamcmd\steamapps\common\Don't Starve Together Dedicated Server\bin64"
start dontstarve_dedicated_server_nullrenderer_x64 -console -cluster MyDediServer -shard Master -reglon China
start dontstarve_dedicated_server_nullrenderer_x64 -console -cluster MyDediServer -shard Caves -reglon China
BAT (Batchfile)

linux:这个文件(可以右键网页另存为)放到~/run_dedicated_servers.sh,授予执行权限chmod u+x ~/run_dedicated_servers.sh,然后运行~/run_dedicated_servers.sh即可。

mod和世界选项

在客户端把配置生成出来然后复制到服务器上就行了。先在客户端上把模组、模组设置、世界选项设置好,然后建立服务器,等到C:\Users\%USERNAME%\文档\Klei\DoNotStarveTogether\(一串数字)\Cluster_(某个数字)文件夹生成或文件夹内容更新,就可以关掉客户端了。

mod:把客户端的C:\Users\%USERNAME%\文档\Klei\DoNotStarveTogether\(一串数字)\Cluster_(某个数字)\Master\modoverrides.lua文件复制到服务端上的C:\Users\%USERNAME%\文档\Klei\DoNotStarveTogether\MyDediServer\Master\modoverrides.lua,洞穴caves同理。

世界选项:用记事本打开C:\Users\%USERNAME%\文档\Klei\DoNotStarveTogether\(一串数字)\Cluster_(某个数字)\Master\leveldataoverride.lua文件,其中overrides=后{}里的内容,复制到服务端C:\Users\%USERNAME%\文档\Klei\DoNotStarveTogether\MyDediServer\Master\worldgenoverride.lua文件中的overrides=后{}内,请注意文件名有更改,洞穴caves同理。

linux同理

自动安装/更新mod

mod分为两种,一种在饥荒文件夹(C:\steamcmd\steamapps\common\Don’t Starve Together Dedicated Server\mods)里,一种在steam文件夹(C:\steamcmd\steamapps\workshop\content\322330)里,判断方法可以到Steam Workshop Downloader中把创意工坊链接放进去,如果是直接下载的就是在饥荒文件夹里,可以不用下载,如果是给了一个类似于workshop_download_item 322330 1837053004这样的代码就是在steam文件夹里,更新方式有所不同。

饥荒文件夹

编辑服务端的文件,windows在C:\steamcmd\steamapps\common\Don't Starve Together Dedicated Server\mods\dedicated_server_mods_setup.lua,linux在~/dontstarvetogether_dedicated_server/mods/dedicated_server_mods_setup.lua,根据文件原本的注释很容易编辑,创意工坊链接最后几位数字。

dedicated_server_mods_setup.lua
ServerModSetup("350811795") --数字是mod链接后面的id,要更多的mod就多加几行
ServerModCollectionSetup("379114180") --数字合集链接后面的id,可以多加几个合集,注意合集不能设置成仅自己能查看,可以设置为无法被搜索到
Lua

这里有个坑,我给出的是官方的启动脚本,这个脚本会在每次启动服务器前更新并校验文件,在饥荒文件夹里的lua文件因为被修改过所以被认为是不完整的会被恢复原样,就算把校验部分去掉每次更新也一样会有这个问题,所以要在校验完成后,启动服务器前,在脚本中自动将lua文件替换掉,举个例子

windows(.bat)路径自己修改

BAT (Batchfile)
c:\steamcmd\steamcmd.exe +login anonymous +app_update 343050 validate +quit
copy /y "C:\dedicated_server_mods_setup.lua" "C:\steamcmd\steamapps\common\Don't Starve Together Dedicated Server\mods\dedicated_server_mods_setup.lua"
cd /D "c:\steamcmd\steamapps\common\Don't Starve Together Dedicated Server\bin64"
start dontstarve_dedicated_server_nullrenderer_x64 -console -cluster MyDediServer -shard Master -reglon China
start dontstarve_dedicated_server_nullrenderer_x64 -console -cluster MyDediServer -shard Caves -reglon China
BAT (Batchfile)

linux(.sh)我只放关键部分,路径自己修改

run_dedicated_servers.sh
./steamcmd.sh +force_install_dir "$install_dir" +login anonymous +app_update 343050 validate +quit
cp $HOME/dedicated_server_mods_setup.lua $install_dir/mods
SSH Config

steam文件夹

先在Steam Workshop Downloader中把代码显示出来,然后将代码插入到启动脚本中的某一段,举个例子,比如

windows(.bat):c:\steamcmd\steamcmd.exe +login anonymous +app_update 343050 validate +workshop_download_item 322330 1837053004 +quit

linux(.sh):./steamcmd.sh +force_install_dir "$install_dir" +login anonymous +app_update 343050 validate +workshop_download_item 322330 1837053004 +quit

通过这种方法更新mod也必须按照饥荒文件夹部分的方法将mod添加到lua文件中,即使不会自动更新。

常见问题

windows中无法自动更新mod(饥荒文件夹),日志是这样的
log
[00:00:01]: Your server will still start, but some Steam functionality may be missing.
[00:00:01]: Steam Workshop functionality will be disabled.
[00:00:01]: Steam ports can be configured through command line by adding:
[00:00:01]: -steam_authentication_port 12345 -steam_master_server_port 12346
[00:00:01]: or through settings.ini, under the [network] heading
[00:00:01]: steam_authentication_port = 12345
[00:00:01]: steam_master_server_port  = 12346
log

日志的大致意思就是steam连不上,要修改ini添加端口,或者启动参数里实现,我也试着打开防火墙,甚至全端口全协议全程序开放,但是这些都没用,真正的解决方法是安装一个图形steam客户端,当看到登录窗口时,然后就好了,可以直接关掉顺便再把开机启动关掉,这个问题是偶然间解决的,我先是steamcmd失败后我尝试了一下steam,发现没问题,我想可能是steamcmd的问题,我又试了下steamcmd,发现突然没问题了,我也就没管了,过了很久之后我换了个服务器发现steamcmd又出现了这个问题,然后我下载了steam都还没登录再试了一下,发现好了,经过我的尝试,这应该是国内网络的问题,steam图形客户端可能把服务器改到国内了。

服务器列表中延迟显示???

在服务器的防火墙里把端口打开,默认是UDP/11000,家用电脑我就不解释了,涉及到是否有公网ip,是否能做端口映射等等,而且这个没有实际用处,就只是好看而已。

服务器列表看不到自己的服务器

可能是令牌不对,如果是按照正确的流程操作下来这种可能比较小,令牌在cluster_token.txt中,可以去科雷官网看看是不是对的

还有一种可能是连不上科雷服务器,这就需要搭配翻墙代理来解决,我有相当多关于翻墙的文章我就不再介绍了,如果使用代理入站,命令行是不会走系统设置的代理的,需要在启动脚本中加入参数,端口号自己修改,windows:set http_proxy=http://127.0.0.1:7890 & set https_proxy=http://127.0.0.1:7890,linux:export all_proxy="socks5://127.0.0.1:7890",如果不知道代理是什么请不要这么做,这是clash的默认端口,linux我没有验证过方法行不行。

文章已创建 33

发表评论

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部

了解 njj's blog 的更多信息

立即订阅以继续阅读并访问完整档案。

继续阅读

了解 njj's blog 的更多信息

立即订阅以继续阅读并访问完整档案。

继续阅读