饥荒服务器的配置
生成配置文件
首先配置世界,网上以及官方最初的教程在这个环节都是给出一大片的配置文件,这很让人一头雾水,很凌乱。 在此我想到了一个办法。 由于饥荒的Dedicated服务器和游戏客户端里的服务器,都是一样的程序。因此,我们可以借助客户端来生成我们的世界配置。
打开游戏,像玩单机一样,创建一个世界吧。
首先,在左边选择一个槽位,从上开始数分别是 1、2 …… 5
记住现在创建的世界是第几个槽位。
然后尽情地配置服务器吧,类型选择public公共,设置密码、设置地图大小、打开地穴各种的。
这里先除了MOD不管,后面我再介绍怎么配置。
配置完后,点击生成世界,到了选择人物这个界面时,就可以退出关闭整个游戏了。当然你选人物进去也是没问题,只是没必要。
我是在Windows系统上玩饥荒的,去我的文档
那里,找到Klei
文件夹里面的DoNotStarveTogether
文件夹,我的路径是:
C:\Users\YYQ\Documents\Klei\DoNotStarveTogether
然后,看看刚才创建的世界在第几个槽位,这个文件夹里,以Cluster_
开头,后面的数字就对应你的槽位序号。
找到对应的这个Cluster文件夹后,把这个文件夹通过你喜欢的方式(FTP、SCP等)上传到服务器那边的.klei/DoNotStarveTogether
目录下
上传完后,就完成了整个世界的配置了。是不是很简单,不用去修改任何配置文件。
配置启动参数文件
然后,如果还按照我们之前的启动方式,不加任何参数的话,地穴是没办法用的,而且如果你的Cluster名后面序号不是1的话,也无法启动你刚刚生成的世界。 现在我们来设置启动参数。
服务器运行参数说明
首先看看dontstarve_dedicated_server_nullrenderer这个主程序的运行参数。
具体请见 官方资料
很多参数上面都有详细说明,我这里讲用到的几个介绍一下。
首先看看,我们存档目录在哪里
The default for this option depends on the platform: Windows: <Your documents folder>/Klei Mac OSX: <Your home folder>/Documents/Klei Linux: ~/.klei
/home/dst/.klei
这就是我们的存档目录。
-cluster
参数,该参数是指定我们的饥荒服务器节点的文件夹名
,也就是上面存档目录里Cluster_X
文件夹,X为槽位的序号
玩过单机的都懂,饥荒可以创建五个服务器,每个服务器里有地上世界和地下世界。
-cluster Set the name of the cluster directory that this server will use. The server will expect to find the cluster.ini file in the following location: < persistent_storage_root >/ < conf_dir >/< cluster >/ cluster.ini , where < persistent_storage_root > and < conf_dir > are the values set by the -persistent_storage_root and -conf_dir options. The default is “Cluster_1”.
-shard
指定地上或地下世界的目录名,通常是Master
和Caves
两个取值。
-shard Set the name of the shard directory that this server will use. The server will expect to find the server.ini file in the following location:< persistent_storage_root >/< conf_dir >/< cluster >/< shard > / server.ini The default is “Master”.
接下来,官方推荐的最简的启动命令如下
The recommended way to run a two level server is with the following commands: dontstarve_dedicated_server_nullrenderer -console -cluster MyClusterName -shard Master dontstarve_dedicated_server_nullrenderer -console -cluster MyClusterName -shard Caves
但为了确保地上和地下两个世界都启动,同时检查游戏版本升级到最新,以及方便以后每一次启动服务器,在dst用户的home目录下面,新建一个启动脚本文件。
cd ~
vi start.sh
写上下面的内容:
#!/bin/bash
steamcmd_dir="$HOME/steamcmd"
install_dir="$HOME/dstserver"
cluster_name="Cluster_2"
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: /' &
这个脚本,重点要关注开头几行的参数设置:
steamcmd_dir
Steam平台的目录
install_dir
饥荒服务器的安装目录
cluster_name
Cluster的名字,这个名字等同于之前复制到服务器上的那个Cluster文件夹的名字。我这里写的不一定和你服务器上的一样,这个千万要注意是否正确,不然就无法启动。
dontstarve_dir
存档目录
填写好以上的参数后,在执行这个脚本前,别忘了给它加上执行权限
chmod +x start.sh
启动服务器
然后就可以愉快地运行脚本启动服务器了。
./start.sh
这个脚本是后台运行的,在完成Steam的检查更新后,就会进入后台。所以即使关闭当前命令行窗口,游戏服务器也不会停止。 当看到有两个Sim paused出现,一个是Caves的,另一个是Master的,说明服务器就启动完成,并进入暂停状态。
服务器默认设置是如果没有人玩,就会暂停,天数不会走。
要想手动修改配置,请去Cluster目录下看那些.ini文件,相信很容易就可以看得懂的。
启动完成后,建议关闭当前ssh窗口,再使用其他命令,不然输出信息会打扰你输入命令。
关闭服务器
关闭服务器的话,直接kill对应的饥荒服务器进程的pid,注意不要使用-9参数
。-9 参数将导致服务器没有机会保存世界,没办法做完关闭前的要做的事,会产生不可预料的后果。
但每次寻找pid比较麻烦,为此,使用下面的脚本来关闭服务器会比较方便。
#bin/bash
kill $(ps -ef|grep 'dontstarve_dedicated_server_nullrenderer'|gawk '$0 !~/grep/ {print $2}' |tr -s '\n' ' ')
执行完后进程并不是马上就没有,也不能马上再次启动新的服务器,刷几次命令
ps -A |grep dontstarve
等到没有找到饥荒的进程后,就可以再次启动了。
查看服务器日志
饥荒世界分为地上世界Master
和地下世界Caves
,这两个世界都有各自的日志。他们在各自世界的文件夹目录下的server_log.txt
这个文件,在服务器运行过程中,产生的日志会立即写入此文件。
为了方便实时查看日志,使用以下脚本文件即可。
这是查看地上世界日志的脚本
#bin/bash
tail -f -n 300 ~/.klei/DoNotStarveTogether/Cluster_2/Master/server_log.txt
这是查看地下世界日志的脚本
#bin/bash
tail -f -n 300 ~/.klei/DoNotStarveTogether/Cluster_2/Caves/server_log.txt
值得注意的是,tail命令里的路径,请检查中间的Cluster_2
是不是你现在正在使用的Cluster,也就是启动脚本那里配置的cluster_name