Linux服务器饥荒联机版开服教程
首先确保有一个服务器建议至少2核2G,关于如何创建服务器方面就不过多讲了。我的配置是2核2G的Ubuntu18系统,其他系统可参考官方教程(https://developer.valvesoftware.com/wiki/SteamCMD:zh-cn)。

安装SDT
steam建议创建一个名为 steam的用户帐户以安全地运行 SteamCMD,并将其与操作系统的其余部分隔离。以 root 用户身份登录时请勿运行 steamcmd——这样做会带来安全风险。
创建steam用户
adduser -m steam
为用户添加密码
passwd steam
之后输入两次密码即可
进入steam用户目录
cd /home/steam
安装steamcmd及其依赖
sudo apt update && sudo apt upgrade
sudo apt install software-properties-common
sudo add-apt-repository multiverse
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install lib32gcc1 steamcmd
安装steamcmd时会出现协议,使用Tab键切换到OK并回车,然后选择I AGREE


链接steamcmd可执行文件:
sudo ln -s /usr/games/steamcmd steamcmd
安装饥荒联机版专用服务器依赖
sudo apt -y install libcurl4-gnutls-dev:i386
切换到steam用户,输入密码(建议用steam用户再开一个终端)
su steam
运行steamcmd
steamcmd
等待下载完成

使用匿名登录
login anonymous
可能出现登陆失败的情况,可以多重试几次

我们可以为我们的服务器设置一个安装目录,例如~/steamapps,我这里就不设置了,默认下载到~/.steam/steamapps/common/
force_install_dir ~/.steam/steamapps/common/
安装饥荒联机版专用服务器
app_update 343050 validate
等待下载完成

退出
quit
可以将上面启动steamcmd的过程写成一行命令,方便以后更新DST
steamcmd +login anonymous +force_install_dir ~/steamapps +app_update 343050 validate +quit
进入到DST目录
cd /home/steam/.steam/steamapps/common/Don\'t\ Starve\ Together\ Dedicated\ Server/bin
第一次运行脚本,生成配置文件
./dontstarve_dedicated_server_nullrenderer -console -cluster Cluster_1 -shard Master
出现下面情况证明可以成功运行,之后的操作与在Windows上相似

存档的默认路径是
/home/steam/.klei/DoNotStarveTogether/Cluster_1/
之后可以将存档放在该路径下运行即可
cd /home/steam/.klei/DoNotStarveTogether/Cluster_1/
./dontstarve_dedicated_server_nullrenderer -console -cluster Cluster_1 -shard Master
./dontstarve_dedicated_server_nullrenderer -console -cluster Cluster_1 -shard Caves
存档的配置
下面介绍关于存档的配置。非常建议大家先在饥荒联机版里新建一个世界把存档配置好了以后再发送到服务器。
windows系统存档存放位置为
C:\Users\用户名\Documents\Klei\DoNotStarveTogether\902843528
文件夹结构
Cluster_1
│ adminlist.txt
│ cluster.ini
│ cluster_token.txt
│
├─Caves
│ │ leveldataoverride.lua
│ │ modoverrides.lua
│ │ server.ini
│ │ server_chat_log.txt
│ │ server_log.txt
│ │
│ ├─backup
│ └─save
└─Master
│ leveldataoverride.lua
│ modoverrides.lua
│ server.ini
│ server_chat_log.txt
│ server_log.txt
│
├─backup
└─save
令牌
cluster_token.txt 文件内存放服务器令牌
token令牌的获取大家应该都知道,这里不再重复。
服务器配置
cluster.ini 服务器配置文件
[GAMEPLAY]
game_mode = survival
;游戏模式
max_players = 6
;最大玩家数
pvp = false
;是否开启PVP
pause_when_empty = true
;世界无人自动暂停
vote_kick_enabled = true
;投票踢人
[NETWORK]
cluster_password =
;房间密码
cluster_description =
;房间描述
cluster_name = 测试
;房间名字
cluster_intention = cooperative
;房间风格
offline_server = false
;是否离线服务器
lan_only_cluster = false
;是否局域网服务器
cluster_language = zh
;语言
[MISC]
console_enabled = true
;是否开启控制台
max_snapshots = 6
;最大快照,决定回档天数
;服务器设置选项,这部分通常不用改,如果要多个服务器开多个世界要更改,在后面会讲到
[SHARD]
shard_enabled = true
bind_ip = 127.0.0.1
master_ip = 127.0.0.1
master_port = 10888
cluster_key = defaultPass
世界配置
世界的配置建议用游戏开一个档,注意调整好世界和MOD选项,此部分只是讲解文件作用,可以跳到下一节。
Master 是主世界文件夹,Caves 是洞穴世界文件夹。
server_log.txt 是服务器启动日志,server_chat_log.txt 是聊天日志。
leveldataoverride.lua 是世界配置文件,modoverrides.lua 是mod配置文件。这两项在创建世界时已经自动生成
server.ini 世界服务器配置文件,
主世界:
[NETWORK]
server_port = 10999
;服务端口
[SHARD]
is_master = true
;是否为主世界,多世界只能有一个是主世界
[ACCOUNT]
encode_user_path = true
洞穴:
[NETWORK]
server_port = 10998
[SHARD]
is_master = false
name = Caves
;世界名称
id = 975359613
;id,保证唯一
[ACCOUNT]
encode_user_path = true
[STEAM]
master_server_port = 27017
authentication_port = 8767
save 里存放的是存档数据,目录结构为
save
│ boot_modindex
│ cached_userid
│ modindex
│ profile
│ shardindex
│ shardindex_time
│
├─client_temp
├─event_match_stats
├─mod_config_data
├─server_temp
│ server_save
│
├─session
│ └─778D7147518A3BBE
│ │ 0000000002
│ │ 0000000002.meta
│ │ 0000000003
│ │ 0000000003.meta
│ │
│ └─A7JFK3QJSMFH
└─world_presets
其中比较有用的是session文件夹里的,有一个随机文件名的文件夹代表世界存档,里面有多对由数字组成的文件如0000000002和0000000002.meta,这些文件表示存档,可以删除最大的进行回档。其他文件夹是进入过当前世界的人物数据,每进入一个人都会生成一个文件夹。
管理员、白名单、黑名单
adminlist.txt 管理员
whitelist.txt 白名单
blocklist.txt 黑名单
每行一个克雷ID,ID可以在你朋友加入后在控制台查看,或登录克雷官网查看。
MOD下载与更新配置
网上有很多教你如何装mod的,一半是直接复制文件,但是这样mod不会自动更新,当某个mod更新时,客户端自动更新但服务器未更新,就会导致进不去世界,更新办法也是更新一次重新复制一次文件,由于mod众多且用的编号,加上现在的mod有两个存放位置,会很麻烦。
正确的做法是在下载位置\steamapps\common\Don't Starve Together Dedicated Server\mods\dedicated_server_mods_setup.lua文件内进行mod更新设置。每次启动服务器会先检查mod是否最新,并更新。
例如
cd /home/steam/.steam/steamapps/common/Don\'t\ Starve\ Together\ Dedicated\ Server/mods
vim dedicated_server_mods_setup.lua
可以选择加入以下内容:
单独设置一个mod
ServerModSetup("350811795")
设置一个mod合集
ServerModCollectionSetup("379114180")
建议把开服时选的mod自己创建一个合集,方便修改。
合集可以在饥荒联机版创意工坊-浏览-合集-创建合集

创建完成后右键复制URL,里面就有合集id了
测试
添加好存档和mod后,可以测试以下能否使用。使用screen将进程在后台运行,不会使用的可以自行百度。
screen -R master
cd /home/steam/.steam/steamapps/common/Don\'t\ Starve\ Together\ Dedicated\ Server/bin
./dontstarve_dedicated_server_nullrenderer -console -cluster Cluster_1 -shard Master
使用`Ctrl+A`再按`D`返回终端
screen -R master
cd /home/steam/.steam/steamapps/common/Don\'t\ Starve\ Together\ Dedicated\ Server/bin
./dontstarve_dedicated_server_nullrenderer -console -cluster Cluster_1 -shard Caves
之后想要查看控制台也是screen -R master即可。

留个坑,关于分布式的配置,可以把不同世界开在不同的服务器上并连接,以后再说