Don’t Starve together官方文档[Link] Fandom[Link] Fandom_zh-cn[Link]

app_id: 343050

准备配置文件先新建服务器, 在网页这边可以直接 Configure Server. 不用写配置文件还是不错的, 不过只有一些基础设置, 高级设置后续会提到

配置内容说明:

Server Token = # 不用管

Maximum Players = # 最大人数

Server Playstyle = # 世界类型: Servival (生存), Relaxed (休闲), Endless (无尽), Wilderless (荒野), Lights out (永夜)

Cluster Name = # 服务器名称

Cluster Description = # 服务器简介

Cluster Password = # 密码

下载得到一个 MyDediServer.zip, 解压后得到以下文件

.

└── MyDediServer

├── Caves # 洞穴相关文件夹

│ ├── server.ini # 洞穴服务器配置文件

│ └── worldgenoverride.lua # 洞穴地图生成配置文件

├── Master # 主世界相关文件夹

│ ├── server.ini # 主世界服务器配置文件

│ └── worldgenoverride.lua # 主世界地图生成配置文件

├── cluster.ini # 服务端配置文件

└── cluster_token.txt # Token

这里来解释几个可能需要使用/修改/添加的参数

文件名配置项参数数据类型说明MyDediServer└ cluster.ini[GAMEPLAY] -> pause_when_emptybool在无人时是否停止MyDediServer└ cluster.ini[GAMEPLAY] -> vote_kick_enabledbool投票踢人功能MyDediServer└ cluster.ini[NETWORK] -> tick_rateint每秒通信次数,越高游戏体验越好, 服务器负载也会变大MyDediServer└ cluster.ini[NETWORK] -> whitelist_slotsint白名单人员保留数目, 小于等于最大人数MyDediServer└ cluster.ini[MISC] -> max_snapshotsint最大快照数, 默认一天一个快照MyDediServer└ cluster.ini[SHARD] -> bind_ipstring服务器监听的地址Caves└ server.ini[SHARD] -> master_ipstringMaster 服务器的地址Caves└ server.ini[SHARD] -> master_portint监听 Master 服务器的 UDP 端口Caves└ server.ini[SHARD] -> cluster_keystring连接密码解释一下 server.ini 中的 master_ip、master_port、cluster_key 的作用:

饥荒服务器分为主世界与洞穴世界, 这两个世界的服务端是独立运行的. 洞穴世界的服务器可以架设到另一台服务器上, 与主世界服务器依靠 master_ip, master_port, cluster_key 这三个参数来进行通讯, ip 端口和密码, 这很好理解. 这也使得多世界成为可能(大概吧).

启动服务器将修改配置文件后的 MyDediServer 文件夹复制粘贴到服务器的 ~/.klei/DoNotStarveTogether/ 下

服务端启动指令:

cd /bin64 && ./dontstarve_dedicated_server_nullrenderer_x64 [args]

其中 dontstarve_dedicated_server_nullrenderer_x64 为服务端二进制文件

[args] 可选:

args说明-port [1024 .. 65535]强制服务器使用特定端口-tick [15 .. 60]强制服务器以特定的 tick 速率运行-players [1 .. 64]强制服务器中允许的最大玩家数, 最大64-console启用命令行, 可执行 Lua 代码-lan局域网模式, 不出现在服务器列表, 无法拆礼物-persistent_storage_root 设置永久存储的根目录, 默认为 $HOME/.klei 配合 conf_dir 使用控制存档位置-conf_dir 强制服务器从备用目录加载保存和设置数据-cluster 存档文件夹的名字-shard 世界的文件夹名称如洞穴世界默认为Caves主世界默认为Master存档最终将指向 //

然后再运行服务器即可, 推荐使用 screen 或 tmux, 命令示例:

cd ~/Steam/steamapps/common/Don\'t\ Starve\ Together\ Dedicated\ Server/bin64 && ./dontstarve_dedicated_server_nullrenderer_x64 -console -cluster MyDediServer -shard Master

MOD MOD 文件获取假如你想下载 简易血条DST , 在对应创意工坊网页, 右键复制网页URL, 得到 https://steamcommunity.com/sharedfiles/filedetails/?id=1207269058. 复制id=后的那串数字, 得到 1207269058.

编辑 ~/Steam/steamapps/common/Don't\ Starve\ Together\ Dedicated\ Server/mod/dedicated_server_mods_setup.lua 文件

添加 ServerModSetup("1207269058") 即可

最终结果如下:

--There are two functions that will install mods, ServerModSetup and ServerModCollectionSetup. Put the calls to the functions in this file and they will be executed on boot.

--ServerModSetup takes a string of a specific mod's Workshop id. It will download and install the mod to your mod directory on boot.

--The Workshop id can be found at the end of the url to the mod's Workshop page.

--Example: http://steamcommunity.com/sharedfiles/filedetails/?id=350811795

--ServerModSetup("350811795")

--ServerModCollectionSetup takes a string of a specific mod's Workshop id. It will download all the mods in the collection and install them to the mod directory on boot.

--The Workshop id can be found at the end of the url to the collection's Workshop page.

--Example: http://steamcommunity.com/sharedfiles/filedetails/?id=379114180

--ServerModCollectionSetup("379114180")

ServerModSetup("1207269058")

--开头的为注释, 阅读并掌握以后删掉即可

MOD 启用在 / 文件夹下新建 modoverrides.lua

此种方法可以独立设置每个存档启用的 mod

模板如下

return {

["workshop-MOD_ID_1"]={ configuration_options={ }, enabled=true }, -- 有几个mod就需要几个

["workshop-MOD_ID_2"]={ configuration_options={ }, enabled=true }

}

结果如下:

return {

["workshop-1207269058"]={ configuration_options={ }, enabled=true }

}

你可以导出本地存档中的 modoverrides.lua, 复制本地的 mod 源文件到服务器, 这样其实更方便, 网络上教程很多, 也可以直接在上方提到的 Fandom_zh-cn[Link] 中查看

防火墙端口相关默认只需要放行 //\server.ini 中 [NETWORK] -> server_port 端口, 默认为11000, 协议为udp

路径按照本文设置来的话就是 $HOME/.klei/DoNotStarveTogether/MyDediServer/Master/server.ini

到此, 已经完成饥荒服务器的基本设置, 下面会提到一些高级设置

高级设置 管理员、黑白名单在运行服务器的时候你可能会注意到这三行日志:

[00:00:00]: OnLoadPermissionList: $HOME/.klei//DoNotStarveTogether/MyDediServer/blocklist.txt (Failure)

[00:00:00]: OnLoadPermissionList: $HOME/.klei//DoNotStarveTogether/MyDediServer/adminlist.txt (Failure)

[00:00:00]: OnLoadUserIdList: $HOME/.klei//DoNotStarveTogether/MyDediServer/whitelist.txt (Failure)

它们分别是黑名单、管理员名单和白名单

黑名单与白名单不需要解释。可以通过白名单人员保留数目 (MyDediServer cluster.ini 中的 [NETWORK] -> whitelist_slots) 将服务器配置为仅白名单人员可加入, 配合密码双重保险

黑名单在游戏内按 Tab, 里面就可以直接 ban 人

饥荒服务器的部分指令可以无视权限执行, 比如回档, 为了防止恶意操作可添加自己为管理员

这三个文件的使用方式也很简单, 以添加自己为管理员为例:

当然你得在 $HOME/.klei/DoNotStarveTogether/MyDediServer/ 下新建对应文本文件

打开网站并登录账号, 找到 Klei User ID 下面的 ID, 格式为 KU_*****_** , 直接复制粘贴到 adminlist.txt 即可, 一行填入一个ID

服务器内其他人的UserID可以在日志中查询

游戏内指令按 ` (通常叫飘号键) 唤出控制台

指令可选参数类型/格式解释c_save()/立刻保存世界c_shutdown()bool为真时保存游戏后关闭服务器, 为假时不保存直接关闭c_rollback()int回档, int为回到倒数第几个存档c_regenerateworld()/删档重开c_announce()“string”发送公告, 内容需用引号括起来c_connect()“ip”,”port”,”psw”链接到指定服务器, 无需搜索TheNet:Kick()TheNet:Ban()Klei User ID踢人封禁人