前引
饥荒联机是一个制作精良的“多人联机”生存游戏,游戏在可玩性上没得说,但是由于房主PC性能和网络等各种不确定性原因,导致联机体验特别糟糕。
对于联机卡顿的情况,可以通过搭建饥荒联机服务器来解决。
我会比较详细的介绍饥荒联机服务器搭建的过程,其中包括本地服务器搭建、云服务器搭建、通过两个服务器将地面和洞穴世界分开服务器搭建
KLEI服务器访问令牌
无论搭建什么类型的服务器此步骤都不能省略,获取到后可以暂时保存到记事本中,后面会用到
进入游戏
打开饥荒联机版,进入菜单界面
点击账号
找到饥荒服务器
在导航栏中选择 游戏 ,找到饥荒联机版的图标,选择《饥荒:联机版》的游戏服务器
添加服务器
名字可以随便取,取好名字之后就可以添加服务器
获取代码
其他的都不用配置,直接复制访问令牌就可以
创建新世界
根据自己的喜好创建一个新的饥荒世界,配置好人数,世界属性,以及添加需要的服务器模组之后就和平时玩一样创建一个新世界。
在选人界面直接退出
找到新世界存档,位置一般在C:\Users\mstzf\Documents\Klei\DoNotStarveTogether
文件夹下面的那个数字文件夹里面存放着不同世界的文件夹。文件以Cluster_1
来命名,找到新创建的世界文件夹点击进入。
在文件中添加新文件,命名为cluster_token.txt
,一定要注意扩展名为. txt如果默认不显示扩展名的要注意可能会出错。打开 cluster_token.txt
将上一步获取的服务器访问令牌粘贴在里面保存退出。
根据需求修改添加,其中必须要在默认的基础上加入 cluster_tooken.txt
才可以搭建联机服务器
- Cavers :饥荒联机版洞穴世界配置文件。
- Master :饥荒联机版主世界配置文件。
- adminlist.txt :管理员名单,在文件中写入玩家的KLEI ID可以将玩家变为服务器管理员,拥有控制台输入命令和踢人的权限。
- blocklist.txt :黑名单,加入KLEI ID的玩家无法加入游戏。
- cluster.ini :饥荒联机版配置文件,可以设置人数和世界模式等,可根据需要修改。
- whitelist.txt :服务器白名单,可写入玩家KLEI ID加入白名单,服务器会空出白名单人数的可加入人数。如果服务器可以有人,白名单中有一人,那么如果白名单中的人不在世界中的话,实际可加入的人数就只有5人。
做完这些,这个游戏存档就可以被做为饥荒的联机服务器存档了
饥荒本地联机服务器搭建
复制存档
将之前配置的游戏存档复制到他的上一级
C:\Users\mstzf\Documents\Klei\DoNotStarveTogether
中下载饥荒联机工具
打开Steam游戏库,将游戏软件那个下拉箭头中,将工具也勾上
在目录中找到
Don't Starve Together Dedicated Server
,并下载安装编辑启动文件
通过Steam直接打开服务器本地文件(也可以通过文件夹打开,路径为:Steam安装位置\steamapps\common\Don't Starve Together Dedicated Server
找到
bin/scripts/launch_preconfigured_servers.bat
文件修改
launch_preconfigured_servers.bat
文件内容为1
2
3
4
5
6
7
8@ECHO OFF
set SteamAppId=322330
set SteamGameId=322330
cd ..
start "Don't Starve Together Overworld" /D "%~dp0.." "%~dp0..\dontstarve_dedicated_server_nullrenderer.exe" -cluster 改为新建世界存档名 -console -shard Master -console
start "Don't Starve Together Caves" /D "%~dp0.." "%~dp0..\dontstarve_dedicated_server_nullrenderer.exe" -cluster 改为新建世界存档名 -console -shard Caves -console如果你的服务器不需要任何服务器mod,那么可以直接点击
launch_preconfigured_servers.bat
文件启动服务器添加mod
对于本地搭建服务器的mod,可以直接复制原本饥荒的mod文件夹中的mod文件到饥荒服务器文件夹中的mod文件夹中
找饥荒联机版文件的方法和之前一样,这里就不在赘述
另一种方法时编辑mod文件夹下面的
dedicated_server_mods_setup.lua
1
2ServerModSetup("350811795") --数字为mod的id号
ServerModCollectionSetup("379114180") --数字为合计的id号对于怎么获取mod和合集的id,可以在Steam的创意工坊中,在mod或者合集订阅页面复制网页URL,在获取的网址中的数字就是mod或者合集的id号
云服务器搭建
饥荒联机云服务器相比与本地,有更好的网络连接条件,我本人在用一个2核2G的云服务器,短期档10人左右基本不卡,长期档6人以内也可以支持。
对于服务器的话,如果是学生,可以在阿里云进行学生认证,有着不错的折扣。
我的环境是Ubuntu 20.04.5 LTS
安装依赖环境
1
2更新系统
sudo apt update && sudo apt upgrade -y安装依赖环境
1
sudo apt-get install lib32gcc1 libstdc++6 libgcc1 libcurl4-gnutls-dev -y
创建Steam安装目录
1
2mkdir ~/Steam
cd Steam下载SteamCMD安装软件
1
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
等待下载完成
对软件解压缩
1
tar -zxvf steamcmd_linux.tar.gz
运行SteamCMD
1
./steamcmd.sh
当看到Steam>
就说明安装配置已经成功
最有可能出现问题的就是在安装依赖的时候,多根据报错检查
指定游戏安装路径
我喜欢装在Steam文件夹下,可以根据自己喜好修改
1
force_install_dir /root/Steam/DSTServer
登录Steam下载饥荒服务器
1
2login anonymous
app_update 343050 validate等待游戏下载完成
完成后可以使用Ctrl + C 或者输入quit 退出SteamCMD
编辑启动脚本
可以通过直接运行文件来启动服务器
./root/Steam/DSTServer/bin/dontstarve_dedicated_server_nullrenderer
但是这样不方便管理
在启动时如果出现报错:
error while loading shared libraries: libcurl-gnutls.so.4: cannot open shared object file: No such file or directory
或者
error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
这里是个大坑。是由于缺少对应的库,开启i386支持再去安装对应的库
1
2
3
4
5
6
7
8
9开启i386支持
sudo dpkg --add-architecture i386
更新软件库
sudo apt update && sudo apt upgrade -y
安装缺少的库
sudo apt install libcurl4-gnutls-dev:i386
sudo apt install libstdc++6:i386启动脚本可以被放在任何位置,我习惯放在root下自建的bash文件下
1
2
3mkdir /root/bash
cd /root/bash
vim startDST.sh没有vim的可以用:sudo apt install vim -y 安装
启动脚本:
- steamcmd_dir为steamcmd.sh路径
- install_dir 为游戏安装路径
- cluster_name为存档名
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40#!/bin/bash
steamcmd_dir="/root/Steam"
install_dir="/root/Steam/DSTServer"
cluster_name="Cluster_1"
dontstarve_dir="/root/.klei/DoNotStarveTogether"
function fail()
{
echo Error: "$@" >&2
exit 1
}
function check_for_file()
{
if [ ! -e "$1" ]; then
fail "Missing file: $1"
fi
}
cd "$steamcmd_dir" || fail "Missing $steamcmd_dir directory!"
check_for_file "steamcmd.sh"
check_for_file "$dontstarve_dir/$cluster_name/cluster.ini"
check_for_file "$dontstarve_dir/$cluster_name/cluster_token.txt"
check_for_file "$dontstarve_dir/$cluster_name/Master/server.ini"
check_for_file "$dontstarve_dir/$cluster_name/Caves/server.ini"
check_for_file "$install_dir/bin"
cd "$install_dir/bin" || fail
run_shared=(./dontstarve_dedicated_server_nullrenderer)
run_shared+=(-console)
run_shared+=(-cluster "$cluster_name")
run_shared+=(-monitor_parent_process $$)
run_shared+=(-shard)
"${run_shared[@]}" Caves | sed 's/^/Caves: /' &
"${run_shared[@]}" Master | sed 's/^/Master: /'给脚本文件可执行权限
1
sudo chmod u+x /root/bash/startDST.sh
执行脚本用 :
./root/bash/startDST.sh
添加mod
1
vim /root/Steam/DSTserver/mods/dedicated_server_mods_setup.lua
编辑文件内容
1
2
3
4ServerModCollectionSetup("2606822598")
-- 括号内数字替换为自己需要订阅的合集id
ServerModSetup("1505270912")
-- 括号内数字替换为自己需要订阅的mod的id上传世界存档文件夹
上传服务器的方式有很多
软件方式可以使用FileZilla
上传到服务器后将文件夹保存到:
/root/.klei/DoNotStarveTogether/
下面,并修改启动脚本中cluster_name
的值找不到文件夹的可以先
./root/Steam/DSTServer/bin/dontstarve_dedicated_server_nullrenderer
运行一下完成后就可以运行启动脚本,启动饥荒联机服务器
后台运行
推荐使用screen
1
2
3
4
5
6下载
sudo apt install screen -y
启动
screen -S DST
关闭
Ctrl+A+D
双服务器分开地面和洞穴
要带一些大型模组的多人长期档,一个性能低的服务器可能无法满足,此时如果有多个服务器可以采用不同服务器跑不同部分的办法实现。
要使用这一方法,需要在每个服务器都安装饥荒服务器环境,并且都要上传饥荒游戏存档。
主要要编辑洞穴服务器的cluster.ini文件
对于启动文件,只需要将最后的两部分根据需要注释掉就可以了
如果是主世界的启动程序就注释带有Caves的那一行,如果是洞穴就注释带有Master的那一行,然后要保证主世界先运行起来再启动洞穴
暂无评论