《饥荒联机版》(Don't Starve Together)的专用服务器(Dedicated Server)支持将地面世界(Master)与地下洞穴(Caves)拆分为两个独立的进程运行,可分别管理两个世界;只要服务端继续运行,房主退出客户端不会结束小队会话。本文介绍集群配置、分片通信、Token 校验与模组加载的标准规范。
一、双分片架构与端口原理
DST 专用服务器由**一个集群(Cluster)和多个分片实例(Shards)**构成。每个分片是独立进程,监听各自的通信端口;CPU 调度由操作系统负责:
| 架构层级 | 默认端口 | 协议 | 作用说明 |
|---|---|---|---|
| 集群内部通信 (Master) | 10888 |
UDP | 地上进程监听的集群内部通信端口(Caves 通过此端口同步状态) |
| 地上玩家连接端口 (Master) | 10999 |
UDP | 客户端玩家连接地面世界的直接游戏端口 |
| 洞穴玩家连接端口 (Caves) | 10998 |
UDP | 客户端玩家通过虫洞/落水洞切换到洞穴时的通信端口 |
| Steam 列表端口 | 27018 ~ 27019 |
UDP | 与 Steam 后端同步服务器列表与心跳 |
二、SteamCMD 安装与 Klei 认证准备
1. 服务端拉取
专用服务端 AppID 为 343050:
steamcmd +login anonymous +app_update 343050 validate +quit
2. 获取 Klei 服务器令牌(Cluster Token)
面向在线服务的专服需要与 Klei 账户绑定的 Token;不要把令牌贴进公开日志或仓库:
- 访问 Klei 账户中心并使用 Steam 登录:
https://accounts.klei.com/account/game/servers?game=DontStarveTogether - 在页面底部点击“添加新服务器”,输入显示名称;
- 复制生成的长字符串令牌,将其存为
cluster_token.txt。
三、配置文件与分片目录结构
服务端集群数据默认保存于:
- Windows:
C:\Users\<用户名>\Documents\Klei\DoNotStarveTogether\MyDediServer\ - Linux:
~/.klei/DoNotStarveTogether/MyDediServer/
1. 根目录 cluster.ini(集群全局参数)
[GAMEPLAY]
game_mode = survival
max_players = 8
pvp = false
pause_when_empty = true
[NETWORK]
cluster_name = LanGame DST Private Server
cluster_description = Welcome to Don't Starve Together!
cluster_password = your_password
cluster_intention = cooperative
[MISC]
console_enabled = true
[SHARD]
shard_enabled = true
bind_ip = 127.0.0.1
master_ip = 127.0.0.1
master_port = 10888
cluster_key = replace_with_your_cluster_secret
2. 地上分片 Master/server.ini
[NETWORK]
server_port = 10999
[SHARD]
is_master = true
name = Master
[STEAM]
master_server_port = 27018
authentication_port = 8768
3. 洞穴分片 Caves/server.ini
[NETWORK]
server_port = 10998
[SHARD]
is_master = false
name = Caves
[STEAM]
master_server_port = 27019
authentication_port = 8769
同时在 Caves/worldgenoverride.lua 中声明洞穴世界属性:
return {
override_enabled = true,
preset = "DST_CAVE",
}
四、创意工坊模组(MOD)配置规范
模组的自动化挂载分为两步:
1. 服务端下载注册:dedicated_server_mods_setup.lua
位于服务端安装目录的 mods/ 文件夹下,添加需要下载的创意工坊 ID:
ServerModSetup("378160970") -- 例如:显示食物属性的经典模组
ServerModSetup("375859599") -- 例如:几何种植
2. 分片激活与参数配置:modoverrides.lua
分别放入 Master/ 和 Caves/ 文件夹下:
return {
["workshop-378160970"] = { enabled = true },
["workshop-375859599"] = { enabled = true }
}
五、用 LGSM 管理日常维护
地面能进、洞穴却连不上,通常需要一起检查两套分片配置。LGSM 支持地表与洞穴的协同启停,把集群、Token 和分片设置放到同一实例下维护。
- 设置集群令牌与密码,分别检查 Master、Caves 的端口和日志。
- 配置服务端模组下载与各分片启用项,确保两边规则一致。
- 按需启用游戏的空服暂停,并安排集群备份;恢复时核对地面与洞穴来自同一次备份。
六、长期运维高频故障处置
1. 洞穴加载无限卡死或无法跳转
- 原因:Caves 无法连接 Master 的集群内部端口(
10888),或cluster_key不一致。 - 解决:检查
cluster.ini中的cluster_key是否一致,同机运行时使用回环地址;跨主机部署时将 master_ip 改为可达的 Master 地址,并限制内部端口的访问来源。
2. 提示“Token 无效 / Invalid Server Token”
- 原因:
cluster_token.txt文件内包含多余回车、空格,或 Klei 页面上该 Token 已被删除吊销。 - 解决:在 Klei 账户管理页重新生成,确保文本文件仅有一行纯字符内容。