关于搭建饥荒专用服务器的记录
1、搭建饥荒专用服务器(云服务器)的准备工作:
1.1、云服务器的选择:
云服务器可以用来独立的运行饥荒联机版,而不使用图形化界面,从而节约客户端资源或者便于与他人联机。
云服务器可以搭建在 Windows/Linux 上,但一般建议搭建在 Linux 主机上而不是 Windows 上,以防 Windows 自动更新、系统占用过多等原因导致服务器无法长期运行。
云服务器配置
- 上行带宽:8KBps 一个玩家;
- 内存:差不多一个玩家 65Mbytes;
- CPU:没太大要求
需要注意的是,饥荒联机版的服务器对内存的要求其实挺大的,开 Mod 还会占用更多,所以还是要衡量一下机器的配置。根据实测,2g内存的机子勉强够用,推荐使用2核4g内存的机器。机器配置多多益善,服务商优先选择国内机器,例如腾讯云、阿里云、天翼云等。
1.2、软件安装:
Steam及饥荒安装不再赘述,需要安装服务器连接工具,这里推荐Xshell及Xftp两款软件。可以在官网选择家庭及学校免费授权版本使用,这里附上官网链接:https://www.xshell.com/zh/free-for-home-school/
2、搭建饥荒专用服务器:
2.1、服务器后台配置
这里以腾讯云为例,服务器购买成功后,我们打开服务器的管理后台。
重装系统,选择CentOS系统(以CentOS为例),记住公网IP地址、用户名,设置服务器登陆密码。重装完成后,打开防火墙,允许饥荒端口访问。具体需要开放的端口可以查看存档文件夹下的这几个文件:
# 饥荒端口,UDP协议 ~/.klei/DoNotStarveTogether/Cluster_1/cluster.ini 中的 master_port。 ~/.klei/DoNotStarveTogether/Cluster_1/Master/server.ini 中的 server_port。 ~/.klei/DoNotStarveTogether/Cluster_1/Caves/server.ini 中的 server_port # steam端口,TCP+UDP协议 ~/.klei/DoNotStarveTogether/Cluster_1/Caves/server.ini 中的 master_server_port、authentication_port
这里看不懂的话,可以参考如下进行设置(注意协议类型):
在监控栏里,我们可以看到服务器运行的内存、网络等情况:
2.2、连接服务器
打开Xshell软件,新建会话,主机栏里填写服务器公网IP地址,端口号22、协议SSH不变,用户身份验证里填写用户名和密码,弹出的主机密钥选择接受并保存。
2.3、安装编译环境及所需依赖
centos 7:
yum update -y
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm -y
yum install glibc.i686 libstdc++.i686 libcurl.i686 screen -y
这里给出其他Linux 系统安装代码:
ubuntu:
sudo add-apt-repository multiverse
sudo dpkg --add-architecture i386
sudo apt update -y
sudo apt install lib32gcc1 libcurl4-gnutls-dev:i386 lib32stdc++6 lib32z1 -y
centos 8:
yum update -y
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y
yum install glibc.i686 libstdc++.i686 libcurl.i686 screen -y
完成后截图如下:
2.4、安装 SteamCMD
创建steamcmd文件夹并进入:
mkdir ~/steamcmd
cd ~/steamcmd
下载 steamcmd程序:
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
解压steamcmd_linux.tar.gz文件:
tar -xvzf steamcmd_linux.tar.gz
启动steamcmd:
./steamcmd.sh
完成后截图如下:
2.5、安装饥荒联机版
通过steamcmd下载饥荒联机版:
前面的steam> 不需要输入,只是说明你在steam服务中
强制创建游戏目录:
steam> force_install_dir ../dontstarvetogether_dedicated_server
匿名登录steam(网络不好失败的话多试几次):
steam> login anonymous
安装更新饥荒联机版:
steam> app_update 343050 validate
退出steam服务:
steam> quit
app_update 343050 validate就是去steam中下载饥荒联机服务器的命令,需要等待一会,当执行完成后输入quit退出steam服务,完成后截图如下:
3、创建本地存档并上传服务器:
3.1、在本机创建世界:
在服务器上直接创建新地图的话后续配置会比较麻烦,一般都是在本地Windows上先创建地图,然后找到地图文件上传到服务器中。
在创建之前,首先整理好需使用的Mod,并记录Mod代码,即在steam网址栏中的id,建议在文本中记录。
在本机打开饥荒,创建游戏对世界进行配置,选择服务器模式,配置好密码,勾选并配置好要使用的MOD。
配置完成后,点击“生成世界”,等待世界创建完成,在进入选择人物界面后,就可以退出了。
3.2、将本机存档上传服务器:
在服务器中创建存档文件夹:
mkdir -p ~/.klei/DoNotStarveTogether/Cluster_1
点击工具栏绿色图标,打开Xftp软件:
在Xftp软件的工具栏上打开设置,勾选显示隐藏文件:
返回根菜单,依次双击进入.klei,DoNotStarveTogether,Cluster_1。
打开本地饥荒,选择数据,打开Cluster_1文件夹,编辑cluster.ini文件,更改房间信息。
然后将Caves、Master、cluster三个文件上传到服务器的Cluster_1文件夹内。
在本地新建txt文档,重命名为cluster_token.txt,注意文件名后缀不要重复。
打开饥荒,点击账号,记录自己的用户ID,点击游戏。
点击饥荒的游戏服务器,添加新的服务器,并记录令牌代码。
将令牌代码复制到cluster_token.txt文件,并将此文件上传到服务器的Cluster_1文件夹内。
3.3、为自己添加管理员权限
在本地创建管理员权限文件adminlist.txt,将刚才记录的klei ID复制到文件中,并上传服务器。
3.4、修改服务器MOD文件
返回根菜单,依次双击进入dontstarvetogether_dedicated_server,mods。将dedicated_server_mods_setup.lua文件拖到本地修改。
将之前记录的mod id,替换到此文件中,注意不加前面的--。
替换完成后,将此文件拖到服务器中,覆盖服务器文件。
3.5、编写启动脚本
在本地创建boot.sh文件(先创建txt文本,然后更改为.sh后缀),进行修改。
把下面的命令粘贴到boot.sh中:
32位游戏(建议低配服务器使用):
#!/bin/bash
steamcmd_dir="$HOME/steamcmd"
install_dir="$HOME/dontstarvetogether_dedicated_server"
cluster_name="Cluster_1"
dontstarve_dir="$HOME/.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: /'
64位游戏(推荐使用):
#!/bin/bash
steamcmd_dir="$HOME/steamcmd"
install_dir="$HOME/dontstarvetogether_dedicated_server"
cluster_name="Cluster_1"
dontstarve_dir="$HOME/.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/bin64" || fail
run_shared=(./dontstarve_dedicated_server_nullrenderer_x64)
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: /'
返回服务器根目录,将boot.sh上传到服务器,并右键修改权限为777。
3.6、运行后可能出现的问题:
1、找不到文件:
bash: ./start.sh: /bin/bash^M: bad interpreter: No such file or directory
因为文件的格式是dos,需要修改为unix:
返回根目录,输入编辑代码:
vim boot.sh
按 ESC键,再按Shift+冒号,输入 set ff ,回车 ,可以看见该文件的格式 fileformat=dos,按shift + 冒号,输入 set ff=unix ,回车。
输入冒号wq!退出编辑。
2、解决 lib 缺失,添加软关系:
32位饥荒:
cd ~/dontstarvetogether_dedicated_server/bin/lib32
ln -s /usr/lib/libcurl.so.4 libcurl-gnutls.so.4
64位饥荒:
cd ~/dontstarvetogether_dedicated_server/bin64/lib64
ln -s /usr/lib64/libcurl.so.4 libcurl-gnutls.so.4
4、游戏启动及关闭
4.1、启动游戏
输入cd回车, 返回根菜单,输入代码后台启动游戏:
nohup ./boot.sh>root.log 2>&1 &
执行后饥荒服务器会在后台运行,过一会就可以搜索到世界了,可以通过下面这个命令查看输出的日志:
tail -f root.log
4.2、关闭游戏
因为是后台运行,关闭服务器需要先找到服务器的PID,然后用kill命令杀死:
ps -ef | grep don
这两个一样的数字便是世界的id,分别是地上世界和地下世界,用kill命令结束进程(id随机,每次不一样):
kill 7443
再次查询便没有7443的世界了,游戏已经关闭。关闭后再启动游戏可以解决mod需要更新的问题。
5、游戏更新及其他
5.1、游戏更新
每次饥荒联机版更新后都需要同步更新服务器,不同版本之间不能在一起玩,而且搜索不到房间。
这里推荐一个查询饥荒服务器的网址,如果你在这个网址上能搜到自己的服务器,但是其他人搜不到,那应该就是版本不同导致的。
https://dst.liuyh.com/serverlist
更新饥荒游戏命令(更新游戏本体,如果是mod需要更新重启世界即可):
./steamcmd.sh +force_install_dir ../dontstarvetogether_dedicated_server +login anonymous +app_update 343050 validate +quit
5.2、修改服务器信息
服务器的名称的名称和密码在.klei/DoNotStarveTogether/Cluster_1/cluster.ini 文件中,修改后重启即可。
5.3、服务器卡顿排查
导致玩家在服务器上卡顿的原因有很多,比如
- 玩家到服务器连接不稳定
- 服务器CPU负载过高 或 内存不足
- 存在优化较差的MOD 或 相互不兼容
可以将服务器ip地址输入到这个网站查看延迟信息:
可以上传一个纯净存档(不开任何MOD)试试,如果不卡顿再一个个关掉MOD尝试。
5.4、本文参考链接
2、Ubuntu搭建饥荒服务器教程 by全栈程序员-用户IM
4、饥荒联机版独立服务器搭建踩坑记录 by半吊子全栈开发者的日常
5.5、游戏&交流
wechat:goldhbs
评论
暂无评论