CentOS的《饥荒》服务器的搭建全指南

发布于 2019-09-24  1594 次阅读


这篇文章太水了,我重写了一遍,现在在这里:

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,匿名登录即可

longin 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()安全关闭服务器


长风破浪会有时,直挂云帆济沧海。在这条路上一直走下去!