饥荒服务端与STEAM耦合程度比较高,虽然安装和配MOD过程变简单了,配置认证信息却不是那么方便。
1. 服务端安装
先把运行环境准备好
# 安装依赖库
sudo yum -y install glibc.i686 libstdc++.i686 libcurl4-gnutls-dev.i686 libcurl.i686 screen
cd /usr/lib
ln -s libcurl.so.4 libcurl-gnutls.so.4
安装steamcmd
cd ~ && mkdir steamcmd && cd steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xvzf steamcmd_linux.tar.gz
从steamcmd
匿名登录并安装
./steamcmd.sh
login anonymous
force_install_dir /usr/local/dst/dstserver
app_update 343050 validate # 等STEAM把饥荒装好
quit
创建启动主世界和洞窟服务器的sh
文件,注意这里我们使用的存档路径是/usr/local/dst/dstsave
echo "./dontstarve_dedicated_server_nullrenderer -console -persistent_storage_root /usr/local/dst/dstsave -conf_dir dst -cluster World1 -shard Master" > master_start.sh
echo "./dontstarve_dedicated_server_nullrenderer -console -persistent_storage_root /usr/local/dst/dstsave -conf_dir dst -cluster World1 -shard Caves" > cave_start.sh
chmod +x master_start.sh cave_start.sh
因此启动顺序如下
screen -S dst_master
/usr/local/dst/dstserver/bin/master_start.sh
screen -S dst_cave
/usr/local/dst/dstserver/bin/cave_start.sh
之后从原有的饥荒客户端上把存档迁移到/usr/local/dst/dstsave
下,直接把CLUSTER
文件复制过来就行唯一要多的就是根据KLEI官网上的服务器令牌写一个cluster_token.txt文件添加到存档下
接下来添加管理员,adminlist.txt也在/usr/local/dst/dstsave
下,一行一个KLEI用户ID
2. 服务端更新
比较方便的办法是通过 steam 进行,首先进入 steamcmd 并匿名登录
cd ~/steamcmd # STEAM CMD 主目录
./steamcmd.sh
login anonymous
切到饥荒服务器主目录下(这一步可能会要求在 login
之前进行,和 login anonymous
顺序对调即可)
force_install_dir /usr/local/dst/dstserver # DST 主目录
更新饥荒服务器
app_update 343050 validate
然后等更新进度走完就可以了
quit
3. 服务端MOD安装
服务端MOD本身是在 DST 主目录的 /mod
目录下,以 workhop-{id}
名字的文件夹形式存放,所有的 id
就是可订阅物品对应的 Steam 社区 ID,例如 http://steamcommunity.com/sharedfiles/filedetails/?id=350811795
的 MOD ,ID 就是 350811795
。同一目录下的 dedicated_server_mods_setup.lua
是 MOD 安装脚本,需要安装新 MOD 或者 MOD 集合都需要在里面进行追加——
ServerModSetup("1878212389") # 安装对应id的MOD
ServerModCollectionSetup("379114180") # 安装对应id的MOD集合
这个脚本文件会在服务器启动时被运行,因此只要追加MOD安装指令就行了。
接下来要解决的是MOD id问题。当然也可以一个一个去创意工坊查url,但是我们知道已经生成的存档中都会有对应的 MOD Config 脚本,主世界的叫 master/modoverrides.lua
,洞穴的叫 cave/modoverrides.lua
。所有 MOD 的 Config 都以JSON形式写在里面。
例如堆叠上限这个 MOD,对应配置就是:
["workshop-1878212389"]={ configuration_options={ MAXSTACKSIZE=99 }, enabled=true }
这个 MAXSTACKSIZE
就对应 MOD 配置时的最大堆叠上限值,每个 MOD 要生效都需要使能标志 enabled
写 true
。
因此,将这个配置脚本中的所有 MOD ,将 workshop-
后的 id 追加到前面的 dedicated_server_mods_setup.lua
后就行了。