安装配置饥荒专用服务器

本篇介绍使用SteamCMD(Steam命令行版客户端)搭建饥荒专用服务器。

SteamCMD文档地址:
https://developer.valvesoftware.com/wiki/SteamCMD:zh-cn#.E4.B8.8B.E8.BD.BD_SteamCMD


安装篇

Windows下安装

  1. 下载

    https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip

  2. 解压到一个单独目录并运行steamcmd.exe

    首次运行会自动下载相应文件

  3. 在steam命令行运行以下指令

    # 匿名登录
    login anonymous
    # 设置存储游戏的目录
    # 如果不设置默认在<steamcmd.exe所在目录\steamapps\common\Don't Starve Together Dedicated Server>
    force_install_dir D:\Game\DST
    # 下载游戏。不知道把游戏下载好放入上面目录行不行,未测试。
    app_update 343050 validate
    # 退出steamcmd
    quit
    
  4. 启动服务器

    进入D:\Game\DST\bin,创建批处理文件dst_overworld.bat

    dontstarve_dedicated_server_nullrenderer -console -persistent_storage_root D:/Game -cluster DediServer
    

    -console参数允许在服务器命令行输入命令

    执行批处理文件启动服务器

    输入c_shutdown()关闭服务器

Ubuntu下安装

安装运行环境

Ubuntu/Debian 64位

sudo apt-get -y install lib32gcc1

RedHat/CentOS 32位

sudo yum -y install glibc libstdc++

RedHat/CentOS 64位

sudo yum -y install glibc.i686 libstdc++.i686

安装服务器

mkdir ~/steamcmd && cd ~/steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xf steamcmd_linux.tar.gz
./steamcmd.sh +login anonymous +force_install_dir /root/dst +app_update 343050 validate +quit

cd ~/dst/bin
apt-get update && apt-get -y install lib32stdc++6 libstdc++6 libcurl4-gnutls-dev:i386

echo ./dontstarve_dedicated_server_nullrenderer -console -persistent_storage_root ~/game -cluster DediServer > dst_overworld.sh
# 若想开启洞穴可以再多开一个服务器,注意-cluster名称不能相同

sh dst_overworld.sh
# 如果顺利,则会在~/game下形成目录结构,可以执行c_shutdown()关闭服务器。然后进行服务器配置后再启动。

配置篇

实际上,经过安装篇的步骤启动服务器后并不会成功启动,因为还需要配置Klei服务器令牌(获取令牌步骤本文不做说明)。

经过安装篇的操作后,会在-persistent_storage_root参数指定的目录下建立专用服务器目录结构,配置服务器都是在这个目录里进行的。

目录结构

. # 目录位置由启动指令的 -persistent_storage_root 参数指定
└── DoNotStarveTogether # 目录位置由启动指令的 -conf_dir 参数指定,此为默认
    └── DediServer # 目录位置由启动指令的 -cluster 参数指定
        ├── adminlist.txt 
        ├── blocklist.txt
        ├── cluster.ini
        ├── cluster_token.txt
        ├── Master  # 目录位置由启动指令的 -shard 参数指定,此为默认
        │   ├── modoverrides.lua
        │   ├── server.ini
        │   └── worldgenoverride.lua
        └── whitelist.txt

DoNotStarveTogether目录保存了专用服务器的所有配置和存档信息。

配置文件说明

cluster_token.txt:Klei服务器令牌(token),这个文件必须有,否者服务器无法成功启动。

adminlist.txt :管理员用户列表
blocklist.txt :黑名单用户列表
whitelist.txt :白名单用户列表
以上三个文件,里面的内容都为KU_开头的用户ID,一行一个。

cluster.ini:配置服务器基本信息。内容参考:

[GAMEPLAY]
game_mode = endless
max_players = 2
pvp = false
pause_when_empty = true

[NETWORK]
lan_only_cluster = false
cluster_intention = cooperative
cluster_password = password
cluster_description = desc
cluster_name = xxx_server
offline_cluster = false
cluster_language = zh
tick_rate = 15

[MISC]
console_enabled = true

[SHARD]
shard_enabled = false
bind_ip = 127.0.0.1
master_ip = 127.0.0.1
master_port = 10888
cluster_key = defaultPass

modoverrides.lua:配置启用的mod,修改后重启服务器生效。
要启用的mod需下载到本地,下面有详细说明。
内容参考:

return {
["workshop-1430042811"] = { enabled = true },
["workshop-1535331014"] = { enabled = true },
["workshop-375850593"] = { enabled = true },
["workshop-378160973"] = { enabled = true },
["workshop-362175979"] = { enabled = true },
["workshop-786556008"] = { enabled = true },
["workshop-666155465"] = { enabled = true },
["workshop-462372013"] = { enabled = true },
["workshop-543945797"] = { enabled = true },
["workshop-831523966"] = { enabled = true },
["workshop-347079953"] = { enabled = true },
["workshop-770901818"] = { enabled = true },
["workshop-398858801"] = { enabled = true }
}

worldgenoverride.lua:配置生成的世界属性。
这个文件只在生成世界时起作用,也就是说一旦世界已经生成,再修改,世界也不会变化。
内容参考:

return {
 override_enabled = true,
       unprepared = { -- "never", "rare", "default", "often", "always"
               berrybush = "often", --浆果
               cactus = "often", --仙人掌
               carrot = "default", --胡萝卜
               mushroom = "often", --蘑菇
       },
       misc = {
               task_set = "default", -- Biomes: "classic", "cave_default" --生物群落
               start_location = "default", -- Start: "plus", "darkness", "caves"
               autumn = "verylongseason", -- "noseason", "veryshortseason", "shortseason", "default", "longseason", "verylongseason", "random"
               boons = "default", -- "never", "rare", "default", "often", "always"   先辈
               branching = "default", -- "never", "least", "default", "most" 分支
               day = "longday", -- "default", "longday", "longdusk", "longnight", "noday", "nodusk", "nonight", "onlyday", "onlydusk", "onlynight"
               frograin = "rare", -- "never", "rare", "default", "often", "always" 青蛙雨
               lightning = "default", -- "never", "rare", "default", "often", "always" 闪电
               loop = "default", -- "never", "default", "always" 循环
               season_start = "default", -- "default", "winter", "spring", "summer", "random"
               spring = "longseason", -- "noseason", "veryshortseason", "shortseason", "default", "longseason", "verylongseason", "random"
               summer = "veryshortseason", -- "noseason", "veryshortseason", "shortseason", "default", "longseason", "verylongseason", "random"
               touchstone = "default", -- "never", "rare", "default", "often", "always" 复活石
               weather = "default", -- "never", "rare", "default", "often", "always" 雨
               wildfires = "rare", -- "never", "rare", "default", "often", "always" 野火
               winter = "veryshortseason", -- "noseason", "veryshortseason", "shortseason", "default", "longseason", "verylongseason", "random"
               world_size = "huge", -- "default", "medium", "large", "huge"
       },
       animals = { -- "never", "rare", "default", "often", "always"
               alternatehunt = "default", --追猎惊喜
               angrybees = "default", --杀人蜂
               beefalo = "often", --牛
               beefaloheat = "default", --牛发情
               bees = "default",
               birds = "default",
               butterfly = "often",
               buzzard = "default", --秃鹫
               catcoon = "default",
               frogs = "default",
               hunt = "default", --狩猎
               lightninggoat = "default", --羊
               moles = "default", --鼹鼠
               penguins = "default", --企鹅
               perd = "default", --火鸡?
               pigs = "often",
               rabbits = "often",
               tallbirds = "default", --高脚鸟
       },
       monsters = { -- "never", "rare", "default", "often", "always"
               bearger = "default", --熊大
               chess = "default", --发条
               deciduousmonster = "default", --毒山毛榉树?树精?
               deerclops = "default", --巨鹿
               dragonfly = "rare", --龙蝇
               goosemoose = "default", --鹿鸭
               houndmound = "default", --猎犬丘
               hounds = "rare", --狗
               krampus = "default", --小偷 坎普斯
               liefs = "default",  --毒山毛榉树?树精?
               lureplants = "rare", --食人花
               merm = "default", --鱼人或蚁狮贡品
               spiders = "default", --蜘蛛
               tentacles = "default", --触手
               walrus = "default", --海象
       },
       resources = { -- "never", "rare", "default", "often", "always"
               flint = "often", --燧石
               flowers = "often", 
               grass = "default",
               marshbush = "default", --芦苇
               meteorshowers = "default", --流星
               meteorspawner = "default", --流星区域
               reeds = "default", --尖灌木
               rock = "often",
               rock_ice = "default",
               sapling = "default", --树枝
               trees = "default",
               tumbleweed = "often", --风滚草
       },
}

下载mod

服务器可以配置启用哪些mod,但是启用的前提是mod需要下载到本地。下面介绍下载mod的方法。

在安装篇里,用steamcmd下载游戏前,使用force_install_dir命令指定了游戏安装目录(D:\Game\DST)。在此目录下有个mods文件夹,可以把下载好的mod放到里面去。

另外,也可以通过修改里面的dedicated_server_mods_setup.lua文件,在服务器启动的时候再下载相应mod。

dedicated_server_mods_setup.lua内容参考:

ServerModSetup("1430042811")
ServerModSetup("1535331014")
ServerModSetup("375850593")
ServerModSetup("378160973")
ServerModSetup("362175979")
ServerModSetup("786556008")
ServerModSetup("666155465")
ServerModSetup("462372013")
ServerModSetup("543945797")
ServerModSetup("831523966")
ServerModSetup("347079953")
ServerModSetup("770901818")
ServerModSetup("398858801")

后记

如果出现服务器开启成功,而客户端找不到的情况,尝试更新服务器端程序即可:

login anonymous
app_update 343050 validate