1. 前言
- 本文搭建过程所使用的环境:CentOS7.6
2. 搭建之前的准备工作
1.1 含有“饥荒联机版”的steam账户
后文中需要使用此账户生成服务器Token,有了Token后服务器才能正常出现在在线游戏列表中。同时也需要此账户中的游戏生成服务端的配置文件,后文中会提及。
1.2 一台有公网IP的服务器
选择阿里云或者腾讯云均可,但是要尽可能满足以下基本要求:
- 地域上离你和你的小伙伴相对较近,这样可以大大降低游戏延迟
- 带宽满足预计游玩人数需求,官方给出的数据是每个玩家
8Kbytes/玩家/秒
- 内存满足预计游玩人数需求,约
65M Bytes/玩家
- 处理器性能不要太低,一般1核cpu就够了
- 在服务器的安全组中开放
10999
和10998
端口,供饥荒服务器主世界和洞穴使用。
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. 存档配置
在本地启动饥荒联机版,登录成功后找到“账号”按钮并点击
在弹出的窗口中即可看到用户的id:
保存id后,不要关闭页面,切换到“游戏”选项卡并点击“饥荒联机版的游戏服务器”,在“添加服务器”栏输入服务器的名字(可随意设置)并点击“添加新服务器”按钮。
添加成功后即可看到服务器的Token,保存这个Token以供后续使用。
配置完成后,在本地创建一个世界,需要根据需要设置游戏模式、世界和模组等,设置完成后点击生成世界按钮,等待世界创建完成。
进入选择人物界面后即可退出当前服务器,并在文档\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