1. 前言

  • 本文搭建过程所使用的环境:CentOS7.6

2. 搭建之前的准备工作

1.1 含有“饥荒联机版”的steam账户

后文中需要使用此账户生成服务器Token,有了Token后服务器才能正常出现在在线游戏列表中。同时也需要此账户中的游戏生成服务端的配置文件,后文中会提及。

1.2 一台有公网IP的服务器

选择阿里云或者腾讯云均可,但是要尽可能满足以下基本要求:

  • 地域上离你和你的小伙伴相对较近,这样可以大大降低游戏延迟
  • 带宽满足预计游玩人数需求,官方给出的数据是每个玩家8Kbytes/玩家/秒
  • 内存满足预计游玩人数需求,约65M Bytes/玩家
  • 处理器性能不要太低,一般1核cpu就够了
  • 在服务器的安全组中开放1099910998端口,供饥荒服务器主世界和洞穴使用。

1.3 SSH工具,用于连接服务端进行相关配置

我这里使用MobaXterm作为连接工具,下载地址见:MobaXterm官网,这个工具可以方便地进行文件上传和服务器配置。

3. 下载并安装游戏

首先更新yum,即linux中用于安装软件包的工具

yum update
yum upgrade -y

安装游戏运行环境和常用工具

yum install glibc.i686 libstdc++.i686 libcurl.i686 vim screen -y

创建steam账户(为了安全性,不建议直接使用root账户启动服务端)

useradd steam
su steam
cd ~
mkdir steamcmd
cd steamcmd

下载并解压steamcmd

wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -zxvf steamcmd_linux.tar.gz

启动steamcmd,并下载饥荒服务端,appid为343050

./steamcmd.sh +login anonymous +force_install_dir /home/steam/dst +app_update 343050 validate +quit

下载完成后,可以先尝试启动一次服务器,验证是否缺失依赖

cd /home/steam/dst/bin
~/dst/bin/dontstarve_dedicated_server_nullrenderer -cluster MyDediServer -shard Master

此时可能会提示找不到libcurl-gnutls.so.4,可以手动将改文件复制到饥荒服务端lib32目录下

cp /usr/lib/libcurl.so.4 ~/dst/bin/lib32/libcurl-gnutls.so.4 

若服务端正常启动,则可以按下ctrl+C关闭服务端,进行后续操作。

4. 存档配置

在本地启动饥荒联机版,登录成功后找到“账号”按钮并点击

image-20210228214201644.png

在弹出的窗口中即可看到用户的id:

image-20210228214302716.png

保存id后,不要关闭页面,切换到“游戏”选项卡并点击“饥荒联机版的游戏服务器”,在“添加服务器”栏输入服务器的名字(可随意设置)并点击“添加新服务器”按钮。

image-20210228214646735.png

添加成功后即可看到服务器的Token,保存这个Token以供后续使用。

image-20210228214813682.png

配置完成后,在本地创建一个世界,需要根据需要设置游戏模式、世界和模组等,设置完成后点击生成世界按钮,等待世界创建完成。

进入选择人物界面后即可退出当前服务器,并在文档\Klei\DoNotStarveTogether目录下找到刚刚创建的游戏存档文件夹,默认格式为Cluster_X。打开文件夹后可以看到文件目录如下:

Cluster_1--------------------------------存档根目录
    Caves--------------------------------洞穴文件夹
        backup---------------------------服务器日志及聊天日志存档
        save-----------------------------存档文件夹
        leveldataoverride.lua------------世界配置文件,可以修改这个文件改变世界的特性
        modoverrides.lua-----------------模组配置文件
        server_chat_log.txt--------------服务端本次启动玩家的聊天日志
        server_log.txt-------------------服务器本次运行日志
        server.ini-----------------------世界的配置信息,例如端口等
    Master-------------------------------主世界文件夹
        backup---------------------------服务器日志及聊天日志存档
        save-----------------------------存档文件夹
        leveldataoverride.lua------------世界配置文件,可以修改这个文件改变世界的特性
        modoverrides.lua-----------------模组配置文件
        server_chat_log.txt--------------服务端本次启动玩家的聊天日志
        server_log.txt-------------------服务器本次运行日志
        server.ini-----------------------世界的配置信息,例如端口等
    cluster_token.txt--------------------服务端Token
    cluster.ini--------------------------服务端名称、密码、模式等配置信息

大多数情况下我们只需要关注其中部分文件即可,接下来在本地对存档中的这些文件进行适当修改:

  • 编辑cluster_token文件,将其内容修改为之前保存的Token信息。
  • 打开cluster.ini文件,找到shared_enabled选项,并将其值设置为true
  • 在存档文件夹下(与cluster.ini同级)新建adminlist.txt文件,并将自己的id添加在文件中,如果需要添加多个管理员,可以使用回车分隔,一行一个id
  • 在存档文件集下新建blocklist.txt,作为服务器黑名单,操作方式与adminlist.txt一致。

至此本地存档的配置工作已经完成,使用上文中提到的工具将整个目录上传到/home/steam/.klei/DoNotStarveTogether/目录下,注意上传时用户要保证是上文创建的steam用户,否则会默认使用上传时使用的用户,会导致权限问题,如果已经使用root用户上传了也不必担心,下文将会给出解决办法。

上传完成后,还需要编辑服务端的mod配置文件:

vim ~/dst/mods/dedicated_server_mods_setup.lua

按下键盘上的i进入编辑模式,在文件中输入mod信息,具体格式如下:

ServerModSetup("1200745268")
ServerModSetup("2032577827")
ServerModSetup("375850593")
ServerModSetup("375859599")
ServerModSetup("378160973")
ServerModSetup("519266302")
ServerModSetup("569043634")
ServerModSetup("661253977")
ServerModSetup("666155465")
ServerModSetup("785009843")
ServerModSetup("786556008")

传递的参数值为服务器mod的id,即对应链接的最后一串数字,一行一个添加即可,也可以使用ServerModCollectionSetup("合集id")批量添加合集中的mod。

5. 启动服务器

5.1 直接启动方式

cd ~/dst/bin
# 启动地面世界
./dontstarve_dedicated_server_nullrenderer -console -cluster Cluster_1 -shard Master
# 启动洞穴世界
./dontstarve_dedicated_server_nullrenderer -console -cluster Cluster_1 -shard Caves
  • console:启动控制台,启用后可以在后台使用服务端指令
  • cluster:指定存档
  • shared:启动世界的名称,对应存档目录中的世界文件夹名称,即Master和Caves
  • -only_update_server_mods:仅进行Mod更新

5.2 脚本方式(推荐)

在steam目录下新建文件夹并进入

mkdir ~/dst_scripts
cd dst_scripts

新建三个脚本文件并授予执行权限

touch master.sh
touch caves.sh
touch update.sh

chmod a+x master.sh
chmod a+x caves.sh
chmod a+x update.sh

分别在三个脚本文件中添加指令:

master.sh:

#!/bin/bash
cd ~/dst/bin
screen -dmS "master" ./dontstarve_dedicated_server_nullrenderer -console -cluster Cluster_1 -shard Master

caves.sh:

#!/bin/bash
cd ~/dst/bin
screen -dmS "caves" ./dontstarve_dedicated_server_nullrenderer -console -cluster Cluster_1 -shard Caves

update.sh:

#!/bin/bash
#更新游戏
~/steamcmd/steamcmd.sh +login anonymous +force_install_dir /home/steam/dst +app_update 343050 validate +quit

脚本中使用screen命令启动对应进程,所以不会直接显示对应的界面,如果需要查看主世界进程,输入:

screen -r master

同理,查看洞穴则输入:

screen -r caves

隐藏控制台则按下Ctrl + A然后再按Ctrl + D即可。

启动游戏方式:

./master.sh
./caves.sh

等待服务器启动完成后即可在大厅列表中找到服务器。更新服务器在服务器关闭状态下输入./update.sh即可更新服务器。

6. 可能遇到的问题

如果在启动过程中遇到了权限问题,大概率是上传文件时使用了root账户,steam没有权限直接读写这些文件,解决办法(需先切换到root用户):

chown -R steam:steam /home/steam 
su steam
最后修改:2023 年 11 月 13 日
如果觉得我的文章对你有用,请随意赞赏