参考文档:博客园
背景
笔记本性能不够,既要运行客户端,还要运行服务器,有点扛不住,内存只有16g,所以nas上开了个虚拟机来运行饥荒服务端。也就是分担性能压力的。
如果是为了解决网络问题,就需要部署到公网服务器上。
服务器性能要求
CPU 1-2核
CPU要求不高,由于我是NAS的虚拟机,8代i5处理器,所以分配了6核,实际运行时占用只有20%不到应该1-2核就够。
内存 4G
这个取决于装的mod多不多,如果服务器mod很多,有些mod很占用内存,就需要多分配些,正常估计2-3G就够用了。
我装了海洋之心、勋章、棱镜这些大型mod,所以分配了4G,运行时占用86%左右。
后面加了个GPS,内存占用接近100%了,所以我又加了1G。
1、安装SteamCMD
1.配置环境
sudo add-apt-repository multiverse
sudo dpkg --add-architecture i386
sudo apt update -y
sudo apt install lib32gc-s1 libcurl4-gnutls-dev:i386 lib32stdc++6 lib32z1 -y
最好再配置下代理,否则后面的mod可能会安装失败或不完整。
#编辑配置文件
vim ~/.bashrc
#添加代理地址,根据你自己的代理服务修改
export http_proxy="http://192.168.2.12:7890/"
export https_proxy="http://192.168.2.12:7890/"
2.下载steamCMD安装包
mkdir ~/steamcmd
cd ~/steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xvzf steamcmd_linux.tar.gz
3.运行安装包
./steamcmd.sh
运行后就会进入SteamCMD程序,首次运行会下载安装,比较慢。
2、安装饥荒服务器
在SteamCMD中执行
# 指定安装目录 这里指定的是steamcmd的目录的上级目录下的dstserver
force_install_dir ../dstserver
#匿名登陆steam
login anonymous
#下载饥荒服务器
app_update 343050 validate
#退出steamCMD
quit
安装完成后,在steamcmd的目录的上级目录会生成dstserver目录,里面就是饥荒服务器文件。
3、配置脚本
# 创建脚本文件
touch start_dstserver.sh
# 添加执行权限
chmod +x start_dstserver.sh
steamcmd_dir:steamcmd 的安装目录
install_dir:饥荒服务器的安装目录
cluster_name:cluster的目录名
dontstarve_dir:cluster的存放位置,这个是默认位置,服务器启动脚本会自动在这下面查找世界
#!/bin/bash
steamcmd_dir="$HOME/steamcmd"
install_dir="$HOME/dstserver"
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: /'
4、导入服务器(Cluster)
1、进入饥荒创建世界
生成世界进入游戏后直接退出,随后在创建游戏那可找到自己的世界,点击管理世界-打开世界文件夹,得到本地游戏地图资源。也就是Cluster的目录
2、获取服务器token
这里获取到的token,可以重复使用,更换新世界直接拷过来就行了。只有需要同时开多个服务器才需要创建多个token。
进入饥荒游戏,在首页点击左下角的账户信息,跳转到饥荒的官网。(或者直接访问)
点击游戏
找到饥荒联机版,点击服务器
起个名字,点击添加新服务器
然后就获取到了token,在世界的Cluster目录下创建cluster_token.txt文件,然后把token放进去。
3、拷贝Cluster目录到服务器
scp -r 饥荒目录/Cluster_1 cook@ip:/home/cook/clusters
4、配置mod
两种方式,一种是根据世界中引用的mod,分别引入。一种是直接引入创意工坊中的mod合集。
推荐引入合集,这样后面只需要在steam中维护合集即可,无需修改服务器的文件了。如果是分别引入,后续加mod,就需要在服务器也手动修改引入。比较麻烦。
1、引入合集
合集需要在steam上创建
在饥荒的创意工坊中浏览合集
创建合集
需要起个名字并且上传一个图标。
初始化合集
第二步可以选择已订阅的mod,然后点击全部添加。然后保存发布即可。
查看合集id
点击查看合集,排序最新合集,就可以看到自己的合集了
点进去就可以在浏览器中看到id了
可以收藏一下,不然不好找。收藏之后就可以在合集中的收藏筛选了。
后续添加mod到合集
在mod页面,点击添加到合集,然后选择创建的合集,就加入了。
导入合集
# 编辑服务器中的mod文件
vim ~/dstserver/mods/dedicated_server_mods_setup.lua
# 添加以下内容引入合集
ServerModCollectionSetup("合集id")
2、分别引入
查看世界中配置的mod id
打开 /Cluster_1/Master/modoverrides.lua
workshop-后面的数字就是mod id
把所有的id组装为:ServerModSetup("id"),每个id一行,然后填入服务器中的
~/dstserver/mods/dedicated_server_mods_setup.lua 文件
上面是注释不用管,粘贴到最后即可。
5、启动服务器
输出sim pause 就是启动成功了
./start_dstserver.sh
评论区