本文综合参考
博客【记录】饥荒联机版+个人云服务器搭建(2020.6.19)
B站视频:饥荒Linux专用服务器搭建详细教程
Ubuntu64位
#Ubuntu64位
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libstdc++6 libgcc1 libcurl4-gnutls-dev
#分屏工具,用户后台运行命令窗口
sudo apt install screen
#Ubuntu32位
sudo apt-get update
sudo apt-get upgrade
#这个32位的libcurl4-gnutls建议装一下
sudo apt-get install libstdc++6:i386 libgcc1:i386 libcurl4-gnutls-dev:i386
或者直接
sudo apt install -y libstdc++6:i386 libgcc1:i386 libcurl4-gnutls-dev:i386 screen
#在用户“家”目录下创建steamcmd目录并进入
mkdir ~/steamcmd && cd ~/steamcmd
#下载SteamCMD安装文件到新创建的目录
wget -P ~/steamcmd https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
#解压压缩包
tar -xf steamcmd_linux.tar.gz
理论开放 UDP10800 - 12000
就行了。
有问题就可以开放全部udp端口。
在steamcmd模式下
#运行Steamcmd
./steamcmd.sh
#以匿名帐户模式登录
login anonymous
#指定饥荒联机版服务器软件安装在当前myDSTserver目录(没有则自动创建)
force_install_dir myDSTserver
#更新软件
app_update 343050 validate
#更新完成后,退出steamcmd模式
quit
#先尝试运行服务器,生成一下必要的目录
cd ~/steamcmd/myDSTserver/bin
./dontstarve_dedicated_server_nullrenderer
#等出现下面的提示后就可以Ctrl+C停止了
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!! Your Server Will Not Start !!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
上传
用本地生成的新档或者老档放在服务器上的开服工具上的目录,
本地档位:
C:\Users\ab225\Documents\Klei\DoNotStarveTogether\479456079\Cluster_x
服务器开服工具目录:
\root\.klei\DoNotStarveTogether
放置后将存档命名为:MyDediServer
例如:
\root\.klei\DoNotStarveTogether\MyDediServer
修改服务器token
将存档目录下的cluster_token.txt
替换为获取到的服务器token。
workshop-xxxxxxx
D:\Steam\steamapps\common\Don't Starve Together\mods
;\root\steamcmd\myDSTserver\mods
。可以使用touch startup.sh
命令创建脚本,vi startup.sh
命令对脚本编辑,
里面的steamcmd_dir、install_dir、cluster_name、dontstarve_dir
是文件的路径。
#!/bin/bash
steamcmd_dir="$HOME/steamcmd"
install_dir="$HOME/steamcmd/myDSTserver"
cluster_name="MyDediServer"
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"
./steamcmd.sh +force_install_dir "$install_dir" +login anonymous +app_update 343050 validate +quit
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 Caves | sed 's/^/Caves: /' &
"${run_shared[@]}" -shard Master | sed 's/^/Master: /'
保存后,可以使用./startup.sh
启动脚本来启动饥荒。
在Cluster_1
目录下新增adminlist.txt
文件,里面填写科雷用户的ID,每行填写一个。
T:\root\.klei\DoNotStarveTogether\Cluster_7
路径下添加adminlist.txt
,里面填写KLEI用户ID即可。
whitelist.txt
,里面填写KLEI用户ID。
blocklist.txt
,里面填写KLEI用户ID。
协议类型:UDP(饥荒使用UDP协议)
端口范围:10800-12000(如果在浏览世界界面能点击进去,但在直连进不去,多半是因为端口没开放对。可以尝试把udp端口全部开放,试试能不能进去。)
授权对象:0.0.0.0/0
出现bad interpreter:No such file or directory的原因是Linux与Windows之间文件格式的问题。如果shell文件是在Windows下编写的,就会出现这种错误。因为Windows的换行方式与Unix不一样,但是在VI下面如果不Set一下又完全看不出来。
缺少SDL库。
SDL是Simple DirectMedia Layer(简易直控媒体层)的缩写。它是一个跨平台的多媒体库,以用于直接控制底层的多媒体硬件的接口。主要用在开发游戏上!
sudo apt install libsdl2-2.0-0:i386
#或者
sudo apt-get install SDL
原错误提示:
./dontstarve_dedicated_server_nullrenderer: error while loading shared libraries: libcurl-gnutls.so.4: cannot open shared object file: No such file or directory
(现在用的64位的Ubuntu)缺少32位的libcurl-gnutls.so.4
执行sudo apt-get install libstdc++6:i386 libgcc1:i386 libcurl4-gnutls-dev:i386
命令,下载安装一下就行了。
找不到来自num的动画生成,没事的,问题不大。
D:\Steam\steamapps\workshop\content\322330
# 饥荒地上和地下服务占用的端口通常是10999和10998
# 可以通过检查端口有没有被占用,判断世界有没有成功运行
netstat -nlp|grep 10999
netstat -nlp|grep 10998
# 给脚本赋值运行权限
chmod +x xxx.sh
1、mod目录问题,本地有些mod在D:\Steam\steamapps\common\Don't Starve Together\mods
,有些mod在D:\Steam\steamapps\workshop\content
,在服务器是否需要区分放置?