安装配置饥荒专用服务器
本篇介绍使用SteamCMD(Steam命令行版客户端)搭建饥荒专用服务器。
SteamCMD文档地址:
https://developer.valvesoftware.com/wiki/SteamCMD:zh-cn#.E4.B8.8B.E8.BD.BD_SteamCMD
安装篇
Windows下安装
-
下载
https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip
-
解压到一个单独目录并运行
steamcmd.exe首次运行会自动下载相应文件
-
在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 -
启动服务器
进入
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