这篇文章太水了,我重写了一遍,现在在这里:
https://www.vincehut.top/?p=192
《饥荒》作为已经是进入我们视线很久的一款游戏,赢得了不少玩家的青睐。本人目前在上大学,和舍友们一起玩的《饥荒联机版》,但由于各个原因,不知为何,本地创建的服务器存在不稳定的现象,经常搜不到,而且能否一起玩取决于宿主机是否在线,一旦宿主机下线,所有用户都要下线。最后我选择了搭建一个“专用服务器”来解决这个问题。
这里是官方的英语说明
借助方便,首先我是用的是阿里云的学生服务器,轻量应用服务器,10元一月,1核、2G、5Mbps(500G),对于不到6个人的小型《饥荒》服务器来说已经足够了。系统,一如既往的CentOS 7 x86_64。
关于系统:2G的内存并不大,所以我选择了,没有图形界面的Linux,去节省内存占用,并能稍稍降低一点CPU的负载。如果你是新手/内存足够,可以选择Windows,图形化的操作界面稍微有好一点。
关于steam:我们玩的是steam版的《饥荒》,如果你是Wegame用户,此篇文章可能不完全适合你!
首先连接到服务器,我们可以使用阿里云自带的网页版,非常方便!如果你不会连接服务器,自行百度吧!然后,更新系统
yum -y update
在完成后,我们需要安装SteamCMD,那么什么是SteamCMD呢?
简单来说和你在van♂游戏之前安装的steam是一个东西
在官方wiki里我们可以看到:
Steam命令行版客户端(SteamCMD)是一个命令行版本的Steam客户端。它的主要用途是在一个命令行界面的Steam客户端上安装和更新各种可用的专用服务端。它适用于使用SteamPipe内容分发系统的游戏。
如果你想了解更多有关steamcmd安装、运行的方式请去官方wiki查看。
首先安装运行环境
sudo yum -y install glibc.i686 libstdc++.i686
接着,在Wiki中提到:我们最好使用非root用户,否则会导致安全隐患。对于阿里云用户已经有了一个非root用户——admin。所以我们可以直接使用这个admin用户
接着创建一个文件夹用于安装SteamCMD,并进入(我们在当前用户的目录下创建)
cd
mkdir steamcmd
然后下载并解压
curl -sqL https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz | tar zxvf -
进入并执行安装程序
cd steamcmd
./steamcmd.sh
登录SteamCMD,匿名登录即可
login anonymous
上面的步骤是我们安装《饥荒联机版》服务器的准备部分。现在开始正式安装。首先,指定安装目录(我们以dst文件夹作为安装目录)
force_install_dir ./dst/
下载、验证并安装
app_update 343050 validate
(注:343050是《饥荒联机版》的Steam应用ID,点击查看所有ID列表)
等待下载完成后退出
quit
到了这里,《饥荒联机版》的下载已经完成了,现在我们需要自定义世界,并进入配置过程。有很多教程提到我们自己写世界配置文件,并给出了详细的配置过程,但我并不提倡这种费力的做法。我打算采取半自动的方法(自动配置游戏文件,手动配置MOD文件,保证简化并且MOD正常运行)如果用第一种方法,我们将面临:
- 耗时,配置过程繁琐,选项过多
- 稍不注意就容易犯错,不易于检查
所以,如果你现在手上有一个能玩《饥荒联机版》的电脑,我们可以直接利用它来来生成相应的配置文件。首先,从steam创意工坊订阅好需要使用的mod,正常打开游戏,接着以服务器创建一个游戏,在创建前选好自定义的世界类型,选择好需要开启哪些服务器mod,是否需要洞穴······最后打开游戏,生成地图(游戏配置文件)。
获取token
接着我们在游戏主界面,点击右下角找到账户图标,在打开的页面下部,找到 Generate Server Token 按钮,在右侧的输入框内输入相应描述,然后点击Generate Server Token,我们就有了一个不会失效的 token,把它复制、保存下来,退出游戏。
然后打开你的本地存档(默认在库文件夹的文档中 KleiDoNotStarveTogether中的*Cluster_1)修改服务器Cluster_1文件夹里cluster_token.txt中的内容为之前生成的Server Token
上传文件
接着我们需要进行复制文件到服务器上,如果你的服务器已经搭建好了FTP服务器,或者其它上传服务,可以直接使用,也可以像我一样,在xshell下使用lrzz,又或者运用ftps协议来传。
在下面的将游戏存档(默认在我的电脑\文档\KleiDoNotStarveTogether\一串数字\*Cluster_1)文件夹复制到~/.klei/DoNotStarveTogether/中
.klei是隐藏文件夹,如果要查看,需要在上级文件夹中使用ls -la命令
下载MOD
饥荒通过一个名为 dedicated_server_mods_setup.lua 的文件确认需要下载哪些 Mod。首先去创意工坊找些 Mod,并获得其id(注:打开你需要的MOD后看网址栏的网址,有一个id=xxxx),将 Mod id 按以下形式(换行复制粘贴)保存在该文件中。下面的地方是修改方式
--ServerModSetup takes a string of a specific mod's Workshop id. It will download and install the mod to your mod directory on boot.
--The Workshop id can be found at the end of the url to the mod's Workshop page.
--Example: http://steamcommunity.com/sharedfiles/filedetails/?id=350811
795
--ServerModSetup("350811795")--ServerModCollectionSetup takes a string of a specific mod's Workshop id. It w
ill download all the mods in the collection and install them to the mod directory on boot.
--The Workshop id can be found at the end of the url to the collection's Workshop page.
--Example: http://steamcommunity.com/sharedfiles/filedetails/?id=379114
180
--ServerModCollectionSetup("379114180")
ServerModSetup("378160973")
ServerModSetup("375859599")
ServerModSetup("362175979")
ServerModSetup("458587300")
启用MOD
之前的dedicated_server_mods_setup.lua文件是用于下载Mod,但是Mod是否启用及配置则是modoverrides.lua文件,这个文件需要在Master(地面)Caves(洞穴,如果开启的话)需要各有一份,也就是位于~/.klei/DoNotStarveTogether/MyDediServer/ 下面是和上面模组对应的配置文件,你可以使用你之前在本地的模组配置文件,也可以进行进一步编辑,在mod文件夹里的modinfo.lua有编辑指南。
["workshop-362175979"]={ configuration_options={ ["Draw over FoW"]="disabled"
}, enabled=true },
["workshop-363459814"]={ configuration_options={ }, enabled=true },
["workshop-375859599"]={
configuration_options={
divider=5,
random_health_value=0,
random_range=0,
send_unknwon_prefabs=false,
show_type=0,
unknwon_prefabs=1,
use_blacklist=true
},
enabled=true
},
["workshop-378160973"]={
configuration_options={
ENABLEPINGS=true,
FIREOPTIONS=2,
OVERRIDEMODE=false,
SHAREMINIMAPPROGRESS=true,
SHOWFIREICONS=true,
SHOWPLAYERICONS=true,
SHOWPLAYERSOPTIONS=2
},
enabled=true
},
["workshop-458587300"]={ configuration_options={ Ownership=false, Travel_Cost
=32 }, enabled=true }
}
配置管理员
首先,取得管理员的玩家的用户id(让该玩家点击游戏主页的Account按钮,在页面中有用户id)并放在adminlist.txt文件中(位于~/.klei/DoNotStarveTogether/MyDediServer/)
创建脚本文件
cd ~/dst/bin/
echo ./dontstarve_dedicated_server_nullrenderer -console -cluster MyDediServer -shard Master > dst_overworld.sh //出现Your Server Will Not Start后,按Ctrl+C终止进程
echo ./dontstarve_dedicated_server_nullrenderer -console -cluster MyDediServer -shard Caves > dst_caves.sh
sh dst_overworld.sh //出现Your Server Will Not Start后,按Ctrl+C终止进程
rm -rf ~/.klei/DoNotStarveTogether/Cluster_* //删除之前创建的默认文件
启动游戏
cd ~/dst/bin
screen sh ./dst_overworld.sh
手动,先同时按ctrl和a两个键,再按ctrl和d两个键,分离会话
screen sh ./dst_caves.sh
再来一遍ctrl a和ctrl d
当然你可以学习一下screen命令是怎么用的。
好啦,如果有一天玩着玩着,服务器突然没了,很可能是饥荒更新了,我们需要更新服务端
~/steamcmd/steamcmd.sh +login anonymous +force_install_dir ~/dst +app_update 343050 validate +quit
如果你修改了路径的话,别忘了更改路径!
既然你已经是一个“腐竹”了,那么,服务器管理你也得会,就像MC的控制台,饥荒也一样有控制台,游戏时,管理员用户按左上角的~按键呼出控制台,输入命令。具体命令在这里。
最后,如果不玩了,在控制台里使用c_shutdown()安全关闭服务器
进入并执行安装程序那里漏掉了steamcmd的安装地址
感谢提醒,现在已经补全!
登录steamCMD的时候login anonymous的login拼错了宝
啊!谢谢!
在我的新安装的CentOS上有一个dependency的报错:
./dontstarve_dedicated_server_nullrenderer: error while loading shared libraries: libcurl-gnutls.so.4: cannot open shared object file: No such file or directory
但是我用yum找了半天,没发现他们有提供这个library,于是我直接用:
ln -s libcurl.so.4 /usr/lib/libcurl-gnutls.so.4
建了一个symlink,最后成功运行
但是在我之前的VPS上是没有遇到过这个报错的