目录

饥荒服务器的配置

注意
本文最后更新于 2017-02-16,文中内容可能已过时。

生成配置文件

首先配置世界,网上以及官方最初的教程在这个环节都是给出一大片的配置文件,这很让人一头雾水,很凌乱。 在此我想到了一个办法。 由于饥荒的Dedicated服务器和游戏客户端里的服务器,都是一样的程序。因此,我们可以借助客户端来生成我们的世界配置。

打开游戏,像玩单机一样,创建一个世界吧。

首先,在左边选择一个槽位,从上开始数分别是 1、2 …… 5

/posts/20170216215118/20170216210251.jpg

记住现在创建的世界是第几个槽位。

然后尽情地配置服务器吧,类型选择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 指定地上或地下世界的目录名,通常是MasterCaves两个取值。

-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_dirSteam平台的目录 install_dir饥荒服务器的安装目录 cluster_nameCluster的名字,这个名字等同于之前复制到服务器上的那个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