目录
二、开始搭建饥荒服务器(Don't Starve Server)
6.多世界独立ugc_mods文件夹(这只会看起来更好看,或许有点用?)
1.mod管理文件及配置文件的作用、使用方法及注意事项,mod文件保存和调用说明:
引言
放假了,朋友说要玩饥荒。想着自己搭建一个服务器不会卡。就在网上找了很多攻略,但是没有很完整的那种,总是在东拼西凑。
所以,将我这段时间学习到的从服务器的搭建原理、搭建过程、以及运行原理和各种疑难杂症解决方案,等方面经验写成文章,供大家参考。(编程软件为Notepad++,系统为Window10)
(注:以下教程,凡是加“注”的,小白可略过,只针对有一定编程和网络基础的人讲解。)
辅助工具
- Notepad++(可用vscode替代)
百度网片分享:npp.7.5.8.bin.x64.zip
链接: https://pan.baidu.com/s/1epE9nDMM-_6WSWZ6hS4EuQ 提取码: ctwp
视频教学
懒~暂时没做~~
一、饥荒服务器搭建原理
1.运作原理
饥荒联机版服务器运作,是依靠Klei的令牌服务器(Authorization Server)颁发的服务器令牌进行验证登录。
- 首先是玩家,也就是饥荒联机版客户端(Client),在进入饥荒服务器(Resource Server)时,优先发送访问请求给Klei令牌服务器(Authorization Server)
- 接着令牌服务器(Authorization Server)给玩家(Client)下发访问令牌,玩家就可以通过访问令牌访问受保护的饥荒服务器(Resource Server),也就是进入饥荒服务器的过程。
- 期间饥荒服务器(Resource Server)也会和Klei令牌服务器(Authorization Server)交互,验证访问令牌。
- 最后验证通过,饥荒服务器(Resource Server)就会给玩家回应,让玩家(Client)进入游戏。
大致原理图如下:
另外,其他资源访问也会进行本序列操作,不过会相应简化验证过程,这个就是服务器在网络方面的运作原理,网上教程基本都是基于此原理做的饥荒服务器搭建教程。
2.搭建的大致过程
了解了服务器的运作机制,下面直接切入主题,如何搭建本地饥荒服务器(Don't Starve Server)。由上面运作原理可知,搭建本地服务器只需要搭建一个饥荒资源服务器(Resource Server)就可以。
因为令牌服务器只是用于验证玩家的合法性(支持正版啊喂!),所以只要时正常的联机版都可以免费获取官方给的令牌服务。
本地饥荒服务器(Don't Starve Server)搭建大致过程如下:
- 新建游戏存档(如果有心仪的存档可省略这步)
- 获取密钥
- 创建本地服务器存档
- 添加密钥
- 添加mod
- 修改服务器启动脚本加载世界
- 添加洞穴mod(有洞穴的存档,此步骤不可省略!)
- 再次加载世界
- 启动服务器,进入游戏
一共9个步骤。另外本篇文章全都是在本地操作,如果想搭建云服务器的也可以先看看本篇文章,因为操作原理基本相同。有基础且想搭建云服务器的话,可以观看另一篇文章。
再次强调!本文章搭建服务器为本地服务器,主机既是玩家(Client)又是资源服务器(Resource Server)。
二、开始搭建饥荒服务器(Don't Starve Server)
1.新建游戏存档
本篇共一步:
新的游戏新的开始,那么就开始新的存档把!当然!如果有心仪的存档,也可以不重新开始,这一步也理所应当的舍弃。
详细操作如下:
创建一个新的世界,在这里可以设置你的所有配置,但是无论如何都需要生成世界不是么?
为了讲解方便,这里添加了一个服务器mod和诺干个本地mod。
这里选人进入游戏,然后直接退出就行。服务器搭建需要这个生成的世界存档且不会保留玩家信息,所以不影响后续选人游玩!!!
2.获取密钥
本篇共三步:
- 在饥荒主页点击账号进入网页,然后点击网页中的游戏选项,之后点击饥荒服务器,自定义服务器名称,然后点击创建服务器。
- 点击配置刚刚创建的服务器,然后点击下载服务器配置,自定义文件存储位置和名称后,点击保存即可。
- 之后找到保存到本地的服务器压缩包,解压过后,在MyDediServer文件夹中找到cluster_token.txt即为本次服务器配置所需要的令牌服务器文本。
详细操作如下:
首先在主页中点击账号:
点击网页中的游戏:
点击《饥荒:联机版》的游戏服务器:
输入一个名称,然后点击创建服务器:
最后一步就是将这个服务器令牌给下载下来:
找到刚下载的服务器配置文件,然后点击解压,红框标注的为本次配置所需要的令牌文件。
3.创建本地服务器存档
本篇共一步:
- 将想要当作服务器存档的本地存档向上移动一个文档路径,然后修改服务器存档的文件夹名称。
详细过程及解释说明:
打开我的电脑,依次点开文件夹——文档--KIei--DoNotStarveTogether--ID文件夹(本地世界存档文件夹)。然后找到我们想要的存档文件,一般存档文件都是按照创建世界的先后顺序排列的。
本地存档文件格式为:
Cluster_[number]。number:代表创建的世界个数。
将想要当作服务器存档的世界向上移一个文档路径,然后修改服务器存档文件的文件夹名称为“Cluster_1”。
(注:启动饥荒服务器(Don't Starve Together Dedicate Server)时,索取的存档路径为本路径。启动时若本路径下没有存档文件,将会创建一个新的空存档文件,文件名称为“Cluster_1”)
详细操作如下:
首先打开KIei文件夹:
接着进入DoNotStarveTogether文件夹下的ID文件夹:
将想要的存档(Cluster_[number])复制到上一层目录,并修改存档的文件名为"Cluster_1":
Cluster_1
复制好后的服务器存档文件如下:
本存档用作映射,后续mod的增删改和更新都有可能用到,建议本地存档不要删除。
4.添加密钥
本篇共一步:
- 将之前下载好的服务器令牌文件(密钥)复制到服务器存档文件夹中。
详细操作如下:
5.添加mod
本篇共一步:
- 在mods文件夹中的dedicated_server_mods_setup.lua文件内添加modID。
详细过程及解释说明:
- 打开之前创建好的服务器存档文件夹(Cluster_1),再打开Master或者Caves,找到modoverrides.lua文件并打开备用。
- 打开steam库找到饥荒服务器(Don't Starve Together Dedicate Server),右键点击管理游览本地文件夹。(如果steam库中没有饥荒服务器:打开库中显示工具的选项)。接着打开mods文件夹找到dedicated_server_mods_setup.lua文件并打开。
- 将modoverrides.lua文件中的modID拷贝并应用到dedicated_server_mods_setup.lua文件中。
————以下将提到饥荒服务器文件夹的时候都会写为:饥荒服务器(Don't Starve Together Dedicate Server)。以此和饥荒服务器存档文件夹(Cluster_1)(路径为:..\Documents\Klei\DoNotStarveTogether\Cluster_1)作为区分。————
详细操作如下:
首先打开饥荒服务器(Don't Starve Together Dedicate Server)目录:
接着打开mods文件夹:
然后用编程工具Notepad++打开dedicated_server_mods_setup.lua文件:
找到之前的饥荒服务器存档文件夹(Cluster_1),打开Master文件夹下的modoverrides.lua文件:
将两个文件对照操作,将dedicated_server_mods_setup.lua文件内的以下代码,
ServerModSetup("")
--下载mod
ServerModCollectionSetup("")
--下载mod集合
--行前添加“--”为注释项。
复制到文本的最下方,如图所示:
注意事项:
- mod下载和集合下载都要添加,防止出现无法下载的情况。
- mod下载代码ServerModSetup("")。
- mod集合下载代码ServerModCollectionSetup("")。
- 每添加一个mod,就需要在mod管理文件中添加上面两行下载代码,更改为相应的modID。
————详情参考第四章第一篇《mod添加》中的“自动更新”————
(注:
- 文本上方链接为mod更新链接,可用于mod的自动更新。
- modoverrides.lua文件为mod的管理文件,游戏中mod配置文件为modoverrides.lua文件。
- dedicated_server_mods_setup.lua文件负责下载mod,以供modoverrides.lua文件调用配置。)
6.修改服务器启动脚本(第一次加载世界)
准备工作已经接近尾声,让我们启动服务器,加载一次我们配置好的服务器文档!!!(目的是为了让其余的文件自动补全、mod更新、排查错误。)
本篇共一步:
- 启动饥荒服务器(Don't Starve Together Dedicate Server),加载出ugc_mods文件夹,并排查错误。
详细操作如下:
在steam库中启动饥荒服务器(Don't Starve Together Dedicated Server):
启动成功后使用“Ctrl+C”退出服务器。(或者在命令行中输入"c_shutdown()"也可以实现关闭服务器。注意不要直接点击右上角关闭按钮,否则会有存档丢失之类的问题!!!)
(注:Server registered via geo DNS in ap-east-1说明成功通过geo DNS在ap区域注册,还记得之前的服务器令牌验证吗,说明已经通过服务器令牌的验证。
Sim paused表示服务器暂停,这个饥荒服务器在没有人进入的时候是暂停时间的,防止物品过期,也说明这个服务器启动成功,如今正在暂停。可以通过修改cluster.ini文件来关闭服务器无人自动暂停。)
接着修改服务器启动的脚本文件,详细步骤如下:
第一步:
依次打开饥荒服务器(Don't Starve Together Dedicate Server)下路径。
..\Don't Starve Together Dedicated Server\bin\scripts\launch_preconfigured_servers.bat
第二步:
launch_preconfigured_servers.bat文件最后两行文本如下:
start "Don't Starve Together Overworld" /D "%~dp0.." "%~dp0..\dontstarve_dedicated_server_nullrenderer.exe" -conf_dir DoNotStarveTogther_EasyConfigOverword -console
start "Don't Starve Together Caves" /D "%~dp0.." "%~dp0..\dontstarve_dedicated_server_nullrenderer.exe" -conf_dir DoNotStarveTogther_EasyConfigCaves -console
修改为:
start "Don't Starve Together Overworld" /D "%~dp0.." "%~dp0..\dontstarve_dedicated_server_nullrenderer.exe" -Cluster_1-shard Master
start "Don't Starve Together Caves" /D "%~dp0.." "%~dp0..\dontstarve_dedicated_server_nullrenderer.exe" -Cluster_1-shard Caves
修改后如图:
(注:将文本最后两行末尾部分,修改为指向我们创建的服务器文档的地上世界和洞穴世界。)
————launch_preconfigured_servers.bat脚本是我们以后启动服务器的脚本,可以创建一个快捷方式放到桌面,方便以后快速启动服务器。————
最后让我们启动一下服务器启动脚本:
脚本启动会分别开启两个部分,分别为地上和洞穴,需要两个都开启成功。(存档没有选择洞穴的只用看地上世界“Master”是否开启成功)
————本写法为最简化的写法,详情请参考第三章《世界多开》。————
7.添加洞穴mod(主世界之外的mod需手动添加)
上一步启动服务器成功后,关闭服务器。因为有些mod需要手动添加,所以这里需要关闭服务器,对服务器的mod存档做一些修改。
输入按键“Ctrl+C”或者命令行输入“c_shutdown()”关闭服务器。注意两个窗口都要执行此操作!!!
本篇共一步:
- 更新ugc_mods文件中,洞穴世界的mod文件夹(Caves)。
详细过程及解释说明:
打开ugc_mods文件夹,将Cluster_1径下的Master文件复制到此路径下,并更改文件名称为Caves。
————新下载饥荒服务器(Don't Starve Together Dedicate Server)可能没有ugc_mods文件夹问题:
的只有在第5步添加mod的步骤中,新添加modID并启动饥荒服务器(Don't Starve Together Dedicate Server)下载过mod后,系统才会自动加载出ugc_mods文件夹以其中的配置文件。————
(注:由于新制作的mod可能不在mods内调用,而是存在于ugc_mods文件夹中,但是服务器在更新mod时有可能不会将mod添加到ugc_mods文件夹,导致部分mod不可用,或者部分mod在洞穴中不可用。)
详细操作如下:
打开饥荒服务器(Don't Starve Together Dedicate Server)根目录,找到我们之前创建的ugc_mods文件夹,并在Cluster_1路径下复制Master文件夹,更改名称为Caves:
修改过后如图:
————此步骤可简化,详情参考第三章《脚本路径更改&mod更新简化》。————
8.第二次加载世界
我们已经把所有需要修改文件的操作全部都完成了!!!现在只需要加载一次饥荒服务器(Don't Starve Together Dedicate Server)验证完整性就可以启动你搭建的服务器世界了!!!
本篇共一步:
- 启动饥荒服务器(Don't Starve Together Dedicate Server)!!!
详细操作如下:
成功!!!
9.启动服务器,进入游戏
现在关闭饥荒服务器(Don't Starve Together Dedicate Server),正式打开你的服务器启动脚本(launch_preconfigured_servers.bat )启动你的服务器吧!!!
本篇共一步:
- 启动服务器,载入世界!!!
详细操作如下:
启动服务器启动脚本(launch_preconfigured_servers.bat ):
在饥荒联机版中输入你创建的世界名称找到并进入你的世界:
三、服务器的管理操作以及注意事项
1.服务器的开启和关闭
之前操作步骤中都有特别提醒服务器的关闭项,这里特别说明一下,服务器不能直接点击右上角的关闭窗口按钮,否则有可能导致存档丢失等问题。
正确的关闭方式为:
- 组合键Ctrl+C:鼠标选中窗口并按组合键即可,但是有些时候没有选中窗口,需要按住Ctrl连续按两次C键才能关闭。
- 命令c_shutdown():依旧是鼠标选中窗口,并在其中输入命令c_shutdown()然后按下回车即可。
注意事项:
- 想要游玩服务器存档时,需要先启动服务器脚本。如果不启动服务器,在浏览世界中就没有办法搜到你搭建的服务器。
- 关闭服务器的时候,需要同时关闭地上和洞穴两个窗口,不能只关闭一个。
- 关闭窗口时,会有关闭指令弹出,具体如下:
可以看出从最后Saving Dedicated Server data命令刷新出来时,服务器就开始了世界的保存和Shard集群的关闭和服务器的关闭。
2.服务器的配置文档及作用说明
服务器的配置文档为cluster.ini,也就是服务器世界存档(Cluster_1)内,其文件路径为:
...\Documents\Klei\DoNotStarveTogether\Cluster_1\cluster.ini
与总配置文档关联的两个世界(地上、洞穴)文档server.ini,其路径为:
Cluster_1/
├── Master/ -- 地面世界
│ ├── server.ini
│ └── modoverrides.lua
├── Caves/ -- 洞穴世界
│ ├── server.ini
│ └── modoverrides.lua
分片世界的服务器配置文档(server.ini)基本维持默认即可,只有多开世界的情况需要修改端口号,所以不做详细解释。
服务器配置文件如图:
具体作用如下:
[GAMEPLAY]
game_mode = survival ; 游戏模式,survival 表示生存模式
max_players = 6 ; 最大玩家数量,设置为 6
pvp = false ; 是否开启玩家对战(PvP),false 表示关闭
pause_when_empty = true ; 当服务器没有玩家时是否暂停游戏,true 表示暂停
[NETWORK]
lan_only_cluster = false ; 是否仅限局域网连接,false 表示允许外网连接
cluster_password = 147258369 ; 集群密码,连接服务器时需要输入
cluster_description = 这是第二个世界了!!! ; 集群描述信息
cluster_name = yexingxing的本地服务器 ; 集群名称,显示在服务器列表中
offline_cluster = false ; 是否为离线集群,false 表示需要在线验证
cluster_language = zh ; 集群语言,zh 表示中文
cluster_cloud_id = D96C7EC30D00E000 ; 集群的云 ID,用于云端服务器标识
[MISC]
console_enabled = true ; 是否启用控制台,true 表示启用
[SHARD]
shard_enabled = true ; 是否启用分片(Shard),true 表示启用
bind_ip = 127.0.0.1 ; 绑定 IP 地址,127.0.0.1 表示本地
master_ip = 127.0.0.1 ; 主服务器 IP 地址,127.0.0.1 表示本地
master_port = 10888 ; 主服务器端口号,设置为 10888
cluster_key = defaultPass ; 集群密钥,用于分片之间的通信验证
server.ini的作用:
-
定义分片配置:
server.ini
文件用于配置单个分片的网络、身份验证、日志等设置。 -
分片类型:通过
server.ini
可以指定分片的类型(例如主分片或从分片)。 -
端口绑定:定义分片绑定的 IP 地址和端口号。
在cluster.ini文件下基本可以更改所有的世界设置,因为服务器世界不能像本地世界一样,到饥荒联机版中选择创建世界的页面更改存档的世界设置,所以只能从这里更改世界设置。
当然,如果没有特殊的配置,也可以从本地已创建的世界中拷贝cluster.ini的配置,将其覆盖到服务器文档中。
————以下为部分为说明设置的值,布尔值仅为true(开启)和flase(关闭)。————
cluster.ini文件的设置分为四大类:
- 世界设置
- 网络设置
- 控制设置
- 集群设置
————
(1.世界设置
游戏模式(game_mode):
survival:生存模式,玩家需要在饥饿、生病和怪物的威胁下生存。
endless:无尽模式,没有任何限制和目标,玩家可以尽情探索和建造。
wilderness:荒野模式,没有玩家人数限制,每个玩家都在自己的孤岛上生存。
caves:洞穴模式,玩家需要在地下洞穴中生存,并面对洞穴特有的挑战。
————
————
(2.网络设置
局域网连接(lan_only_cluster):
1.什么是 lan_only_cluster
?
-
作用:
lan_only_cluster
用于控制服务器是否仅允许局域网内的设备连接。 -
取值:
-
true
:服务器仅允许局域网内的设备连接。 -
false
:服务器允许局域网和互联网上的设备连接。
-
2. 使用场景
-
局域网游戏:
-
如果你只想与同一局域网内的朋友一起玩游戏,可以将
lan_only_cluster
设置为true
。 -
这样,服务器不会暴露在互联网上,只有局域网内的设备可以连接。
-
lan_only_cluster = true
-
互联网游戏:
-
如果你想与互联网上的朋友一起玩游戏,可以将
lan_only_cluster
设置为false
。 -
这样,服务器可以通过互联网访问,任何知道服务器 IP 地址和端口的玩家都可以连接。
-
服务器密码、描述信息、名称:
- cluster_password
- cluster_description
- cluster_name
(3.控制设置
启用控制台(console_enabled):仅管理员可操作。
(4.集群设置
[SHARD]
shard_enabled = true ; 是否启用分片(Shard),true 表示启用
bind_ip = 127.0.0.1 ; 绑定 IP 地址,127.0.0.1 表示本地
master_ip = 127.0.0.1 ; 主服务器 IP 地址,127.0.0.1 表示本地
master_port = 10888 ; 主服务器端口号,设置为 10888
cluster_key = defaultPass ; 集群密钥,用于分片之间的通信验证
————本文案都是本地操作,所以服务器的ip地址(master_ip)和绑定ip(bind_ip)都为指向本机的ip(127.0.0.1)。————
————
集群分片(shard_enabled = true)通常用于分布式服务器或集群环境中,它用于控制是否启用 分片(Shard) 功能。
1. 什么是分片(Shard)?
-
分片是一种将服务器分割成多个独立部分的技术,每个部分可以运行不同的任务或处理不同的数据。
-
分片通常用于将游戏世界划分为多个独立的部分(例如地面世界和洞穴世界),每个部分由一个独立的服务器进程(Shard)处理。
-
分片之间可以通过网络通信,共享数据和状态。
2. shard_enabled
的作用
-
启用分片:当
shard_enabled
设置为true
时,表示当前服务器将作为分片运行,并与其他分片协同工作。 -
禁用分片:当
shard_enabled
设置为false
时,表示当前服务器是一个独立的服务器,不参与分片集群。
3.注意事项
主分片和从分片:
-
主分片(Master Shard)通常负责地面世界。
-
从分片(Caves Shard)通常负责洞穴世界。
-
主分片和从分片需要通过
master_ip
和master_port
进行通信。
集群密钥:
- 所有分片必须使用相同的
cluster_key
,否则无法加入同一个集群。
网络配置:
-
确保
bind_ip
和master_ip
配置正确,否则分片之间无法通信。
如果关闭集群分片(shard_enabled = false),就会出现以下情况:
两个世界同时连接DNS成功,并且搜索游戏就会发现:
唉?怎么出现了两个世界?这其实就是不分片,导致的地上世界和洞穴世界独立运行了,进去就会发现,一个是只有地上世界,一个是只有洞穴世界。
————
————
主世界端口号(master_port),它用于指定 主服务器(Master Shard) 的端口号,以便其他分片(Shard)能够连接到主服务器。
1. 什么是 master_port
?
-
作用:
master_port
定义了主服务器监听的端口号,其他分片(如洞穴世界)通过该端口与主服务器通信。 -
默认值:主服务器的默认端口通常是
10888
。 -
取值范围:端口号可以是
1024
到65535
之间的任意未被占用的端口。
2. 使用场景
-
主分片(Master Shard):
-
主分片通常是地面世界,负责管理整个集群的核心逻辑。
-
主分片的
master_port
是其他分片连接的入口。
-
-
从分片(Caves Shard):
-
从分片(如洞穴世界)需要知道主分片的 IP 地址和端口号(
master_port
),以便连接到主分片。
-
3. 注意事项
-
端口一致性:
-
所有从分片的
master_port
必须与主分片的master_port
一致,否则无法连接到主分片。
-
-
端口冲突:
-
确保
master_port
没有被其他程序占用,否则服务器无法启动。
-
-
多分片配置:
-
如果有多个从分片(如洞穴世界和额外世界),每个分片的
bind_ip
和bind_port
必须不同(本地服务器都为127.0.0.1),但master_ip
和master_port
必须与主分片一致。
-
具体情况如下:
端口的使用使相对的,服务端使用10888,与之相对的是游戏端的10998,但是由于使用了分片,所以服务端可以对应游戏端的两个端口,分别为10998、10999:
————
————
集群密钥(cluster_key),一般为默认值(defaultPass),但是这样并不安全,需要更改,这样需要同时将世界中的集群密钥更改为相同的值。
1.什么是集群密钥
-
集群密钥是一个字符串,用于验证服务器之间的通信。
-
在分布式服务器环境中,多个服务器(分片)需要协同工作,集群密钥用于确保只有合法的服务器可以加入集群。
-
如果集群密钥不匹配,服务器将无法加入集群,也无法与其他服务器通信。
2.cluster_key
的作用
-
身份验证:集群密钥用于验证服务器的身份,确保只有知道密钥的服务器可以加入集群。
-
安全性:通过设置集群密钥,可以防止未经授权的服务器加入集群,提高服务器的安全性。
-
通信加密:在某些实现中,集群密钥还可能用于加密服务器之间的通信。
3. 注意事项
-
密钥一致性:
-
所有分片的
server.ini
文件中的cluster_key
必须与cluster.ini
中的密钥完全一致。 -
如果密钥不匹配,分片将无法加入集群,导致服务器无法正常运行。
-
-
分片类型:
-
地面世界通常是主分片(Master Shard),洞穴世界是从分片(Caves Shard)。
-
主分片和从分片的
server.ini
配置可能略有不同,但cluster_key
必须一致。
-
-
端口配置:
-
地面世界和洞穴世界的
server_port
通常不同,以避免端口冲突。 -
例如,地面世界使用
10888
,洞穴世界使用10889
。
-
————未更改前,使用默认密钥,每个世界内的server.in文档中是没有cluster_key配置的,也就是默认数值。————
更改cluster_key,server.ini也要保持相同的值:
————
————
(5.server.ini文件内容说明
server.ini
文件的内容通常包括以下配置项:
[NETWORK] 部分
-
server_port
:-
作用:指定分片绑定的端口号。
-
示例:
server_port = 11000
-
-
bind_ip
:-
作用:指定分片绑定的 IP 地址。
-
示例:
bind_ip = 127.0.0.1
(绑定到本地回环地址)。
-
-
master_ip
:-
作用:指定主分片的 IP 地址(仅适用于从分片)。
-
示例:
master_ip = 127.0.0.1
-
-
master_port
:-
作用:指定主分片的端口号(仅适用于从分片)。
-
示例:
master_port = 10999
-
-
cluster_key
:-
作用:指定集群密钥,用于分片之间的通信验证。
-
示例:
cluster_key = MyClusterKey
-
[SHARD] 部分
-
shard_enabled
:-
作用:指定是否启用分片功能。
-
示例:
shard_enabled = true
-
-
is_master
:-
作用:指定当前分片是否为主分片。
-
示例:
is_master = true
(主分片)或is_master = false
(从分片)。
-
-
name
:-
作用:指定分片的名称。
-
示例:
name = Master
(主分片)或name = Caves
(从分片)。
-
[STEAM] 部分
-
authentication_port
:-
作用:指定身份验证端口。
-
示例:
authentication_port = 8766
-
-
master_server_port
:-
作用:指定主服务器端口。
-
示例:
master_server_port = 27016
-
[ACCOUNT] 部分
-
encode_user_path
:-
作用:指定是否对用户路径进行编码。
-
示例:
encode_user_path = true
-
配置示例
主分片(地面世界):
[NETWORK]
server_port = 10999
bind_ip = 127.0.0.1
cluster_key = MyClusterKey
[SHARD]
shard_enabled = true
is_master = true
name = Master
[STEAM]
authentication_port = 8766
master_server_port = 27016
[ACCOUNT]
encode_user_path = true
从分片(洞穴世界):
[NETWORK]
server_port = 11000
bind_ip = 127.0.0.1
master_ip = 127.0.0.1
master_port = 10999
cluster_key = MyClusterKey
[SHARD]
shard_enabled = true
is_master = false
name = Caves
[STEAM]
authentication_port = 8767
master_server_port = 27017
[ACCOUNT]
encode_user_path = true
注意事项
-
端口冲突:
-
确保每个分片的
server_port
和master_port
不冲突。
-
-
集群密钥:
-
所有分片的
cluster_key
必须一致,否则无法加入同一个集群。
-
-
主从分片配置:
-
主分片的
is_master
必须设置为true
,从分片的is_master
必须设置为false
。
-
-
IP 地址:
-
如果服务器运行在远程主机上,确保
bind_ip
和master_ip
配置正确。
-
总结
-
server.ini
用于配置单个分片的网络、身份验证、日志等设置。 -
每个分片都有自己的
server.ini
文件。 -
通过
server.ini
可以定义分片的类型(主分片或从分片)和端口绑定。
————
3.默认op及添加管理员
管理员项:
[MISC]
console_enabled = true
建议关闭,也就是值为false(这对管理员并没有影响,因为管理员为最高权限。)
- 默认op:创建世界使用的玩家密钥为指定的op,且为无法更改项,但是密钥项可供更改。
- 添加管理员(共三步):
- 在服务器世界存档(Cluster_1)内添加空白文本文档(adminlist.txt)。
- 然后进入游戏,在控制台输入(c_listallplayers())。
- 再然后退到桌面查看服务器启动脚本窗口,那里会显示玩家ID(一定是玩家ID而不是游戏ID)。
- 将想要添加管理员的玩家ID以单独一行的格式写入刚创建好的(adminlist.txt)文本中文档中。
具体操作如下:
添加空白文档(adminlist.txt):
进入游戏在控制台输入查看命令(一定要指定的玩家在服务器中才可以):
(注:由于创建的本地饥荒服务器相当于独立的服务器,在tab中可看到服务器属于独立出来的一个个体,我们在游戏中属于默认op玩家,也就是服务器底下的成员,所以控制台操作要选择远程。)
退到桌面,查看服务器启动脚本窗口,找到指定游戏ID的玩家ID,然后以单独一行的格式输入到adminlist.txt文本文档中:
- 输入命令的时候是地上世界,所以要在地上世界的窗口中(Overworld)中查看玩家ID
- 游戏ID为游戏中按tab键看到的游戏ID,于此对应的是查询到的玩家ID。
玩家ID格式为:(KU_xxxxx)
接着我们重新启动服务器,看玩家是否为管理员:
4.世界多开
世界的多开涉及以下内容:
- 脚本的设置内容。
- 各个世界端和服务器端使用的端口占用。
- 密钥(cluster_token.txt)文件的占用。
本章第二篇《服务器的配置文档及作用说明》,我们可以得到一个有趣的现象。只要开启分片,端口不冲突,那么启动脚本可以随意指定地上世界和洞穴的结合,或者世界的多开。
结合本篇对脚本参数应用的补充,完全可以玩转本地服务器的存档。
同理!!!其他的进阶应用请自行探索。
对脚本参数应用的补充如下:
参数使用:
- 使用
-conf_dir
指定配置文件目录。 - 使用-console开启控制台。
- 使用-config指定服务器配置文件(cluster.ini)路径。
- 使用-cluster指定启动世界文件夹名称(默认Cluster_1)。
- 使用
-shard
指定启动的世界(如Master
或Caves
)(必加项)。
假设你有以下文件结构:
C:\Documents\Klei\DoNotStarveTogether\Cluster_1
├── cluster.ini
├── cluster_token.txt
├── Master/
│ ├── server.ini
│ └── modoverrides.lua
└── Caves/
├── server.ini
└── modoverrides.lua
-
使用
-conf_dir
指定配置文件目录。(默认项,不需要添加,如果添加,必须添加目录项。不然会导致服务器启动失败)。
使用方法:
-
-conf_dir
:-
指定配置文件所在的文件夹名称(相对于
Documents/Klei/DoNotStarveTogether/
)。 -
例如:
-conf_dir
DoNotStarveTogether
-
-conf_dir DoNotStarveTogether -Cluster_1 -shard Master
-conf_dir DoNotStarveTogether -Cluster_1 -shard Caves
-
使用-console开启控制台。(使用时,一定要在参数最前面,不然会导致服务器端口错误)。
使用方法:
-
-console
:-
-console
参数应放在命令的开头。 -
-conf_dir
和-shard
参数必须正确指定。
-
-console -Cluster_1 -shard Master
-console -Cluster_1 -shard Caves
- 使用-config指定服务器配置文件(cluster.ini)路径。(默认路径,不需要添加。添加后可以不添加路径项。)
使用方法:
- -config
-
-config参数可以不加值。
-
默认情况下,服务器会从
Documents/Klei/DoNotStarveTogether/
文件夹中加载配置文件。
-
启动地面世界(Master Shard)的命令:
-config C:\path\to\your\config\folder\ -Cluster_1 -shard Master
启动洞穴世界(Caves Shard)的命令:
-config C:\path\to\your\config\folder\ -Cluster_1 -shard Caves
- 使用-cluster指定启动世界文件夹名称(默认Cluster_1)。
使用方法:
-
-cluster:
-
指定要启动的集群名称。
-
默认值:如果不使用
-cluster
参数,服务器会默认启动Cluster_1
。 -
多集群配置:如果你运行的是多集群服务器(例如地面世界和洞穴世界),确保每个集群的端口号不同。
-
多开配置:如果涉及到多开世界,此项为必选项。例如启动世界(Cluster_2)必须添加此项。
-
-cluster Cluster_2 -shar Master
-cluster Cluster_2 -shar Caves
-
使用
-shard
指定启动的世界(如Master
或Caves
)(必加项)。
使用方法:
-
-shard
:-
用于指定当前启动的世界(Shard)。
-
例如,启动地面世界时使用
-shard Master
,启动洞穴世界时使用-shard Caves
-console -Cluster_1 Master -console -Cluster_1 Caves
-
-Cluster_1 -shard Master
-Cluster_1 -shard Caves
指定(配置文件、路径、存档文件)的完整写法为(含有存档路径,请自行更改为自己的路径):
start "Don't Starve Together Overworld" /D "%~dp0.." "%~dp0..\dontstarve_dedicated_server_nullrenderer.exe" -console -conf_dir DoNotStarveTogether -config C:\Users\admin\Documents\Klei\DoNotStarveTogether\Cluster_1 -cluster Cluster_1 -shard Master
start "Don't Starve Together Caves" /D "%~dp0.." "%~dp0..\dontstarve_dedicated_server_nullrenderer.exe" -console -conf_dir DoNotStarveTogether -config C:\Users\admin\Documents\Klei\DoNotStarveTogether\Cluster_1 -cluster Cluster_1 -shard Caves
————
(1.服务器集群的应用
-
cluster_token.txt
文件存在与多个服务器集群(Cluster)。 -
一个服务器集群可以包含多个世界(Shard),例如地面世界(Master)和洞穴世界(Caves)。
-
如果你有多个独立的服务器集群(例如,两个完全独立的服务器,每个服务器有自己的地面和洞穴世界),那么每个集群都可拷贝同一个
cluster_token.txt
文件。
(2. 服务器集群(Cluster)的概念
-
一个服务器集群由多个世界(Shard)组成,例如:
-
地面世界(Master)
-
洞穴世界(Caves)
-
其他自定义世界(如火山、月亮岛等)
-
(3. 多个服务器集群的情况
-
如果你运行多个独立的服务器集群(例如,为不同的玩家群体或不同的游戏模式),每个集群都可拷贝同一个
cluster_token.txt
文件。 -
但是每个集群的
cluster_token.txt
文件必须放在对应的集群文件夹中,路径为:Documents/Klei/DoNotStarveTogether/Cluster_X/cluster_token.txt
其中
Cluster_X
是集群文件夹的名称(例如Cluster_1
、Cluster_2
等)。
(4. 如何生成 cluster_token.txt
-
打开《饥荒联机版》游戏。
-
进入“账户”页面。
-
点击“生成服务器令牌”按钮。
-
将生成的
cluster_token.txt
文件保存到集群文件夹中。
(5. 示例
-
单集群服务器:
-
文件夹:
Cluster_1
-
包含:
-
Master/
(地面世界) -
Caves/
(洞穴世界) -
xxx/ (其他世界)
-
cluster_token.txt
-
-
-
多集群服务器:
-
文件夹:
Cluster_1
-
Master/
-
Caves/
-
cluster_token.txt
-
-
文件夹:
Cluster_2
-
Master/
-
Caves/
-
cluster_token.txt
-
-
cluster_token.txt是相同的,因为密钥文件仅用来检测玩家的合法性。
-
(6. 注意事项
-
cluster_token.txt
文件用于客户端验证,主要验证其合法性,可共享使用。 -
确保
cluster_token.txt
文件放置在正确的集群文件夹中。 -
如果服务器无法启动或提示令牌无效,请检查
cluster_token.txt
文件是否正确生成并放置。
总结
-
cluster_token.txt
文件可共享到多个集群。 -
一个服务器集群可以包含多个世界(如地面和洞穴)。
-
如果需要运行多个独立的服务器集群,可将
cluster_token.txt
文件复制到其他集群中。
————
————
具体操作如下:
(7.cluster_token.txt共享
创建两个服务器世界存档:
将之前创建的cluster_token.txt文件,复制到另一个服务器存档中:
————
————
(8.重新编写服务器启动脚本
- 启动cluster_1脚本示例:
start "Don't Starve Together Overworld" /D "%~dp0.." "%~dp0..\dontstarve_dedicated_server_nullrenderer.exe" -cluster Cluster_1 -shard Master
start "Don't Starve Together Caves" /D "%~dp0.." "%~dp0..\dontstarve_dedicated_server_nullrenderer.exe" -cluster Cluster_1 -shard Caves
- 将参数Cluster_1改为Cluster_2我们就可以启动服务器Cluster_2。
start "Don't Starve Together Overworld" /D "%~dp0.." "%~dp0..\dontstarve_dedicated_server_nullrenderer.exe" -cluster Cluster_2 -shard Master
start "Don't Starve Together Caves" /D "%~dp0.." "%~dp0..\dontstarve_dedicated_server_nullrenderer.exe" -cluster Cluster_2 -shard Caves
————
如果运行出现报错或者无法运行脚本的问题可能原因:
- 命令格式编写错误。
- 路径编写错误。
两种错误都可以尝试本篇开头的补全命令。
————
接着将启动两个服务器的命令全部都添加进一个启动脚本中,如下所示:
@ECHO OFF
set SteamAppId=322330
set SteamGameId=322330
cd ..
start "Don't Starve Together Overworld" /D "%~dp0.." "%~dp0..\dontstarve_dedicated_server_nullrenderer.exe" -cluster Cluster_1 -shard Master
start "Don't Starve Together Caves" /D "%~dp0.." "%~dp0..\dontstarve_dedicated_server_nullrenderer.exe" -cluster Cluster_1 -shard Caves
start "Don't Starve Together Overworld" /D "%~dp0.." "%~dp0..\dontstarve_dedicated_server_nullrenderer.exe" -cluster Cluster_2 -shard Master
start "Don't Starve Together Caves" /D "%~dp0.." "%~dp0..\dontstarve_dedicated_server_nullrenderer.exe" -cluster Cluster_2 -shard Caves
————
————
(9.设置端口号
涉及端口的配置文件:
- cluster.ini
- server.ini
路径为:
..\Documents\Klei\DoNotStarveTogether\Cluster_1\cluster.ini
..\Documents\Klei\DoNotStarveTogether\Cluster_1\Master\server.ini
..\Documents\Klei\DoNotStarveTogether\Cluster_1\Caves\server.ini
————端口详解,请参考本篇第二章《服务器的配置文档及作用说明》中,第四节“(4.集群设置”中的“主世界端口号(master_port)”项————
具体操作如下:
配置两个世界,使用不同的端口,配置如下:
Cluster_1
cluster.ini
﹂master_port:10888
Master:
﹂server.ini:
﹂server:10998
Caves:
﹂server.ini:
﹂server:10999
-------------------------------------
Cluster_2
cluster.ini
﹂master_port:11000
Master:
﹂server.ini:
﹂server:11001
Caves:
﹂server.ini:
﹂server:11002
————
————
(10.启动验证
最后,启动世界(成功!!!):
打开游戏搜索(在cluster.ini中未做名称的修改,所以两个服务器名称一样):
(11.世界混开
操作步骤:
- 将想要的世界分片加入到服务器存档文件夹。
- 删除存档中相同的世界分片。
- 更改端口号,防止端口号冲突。
注意事项:
- 每个世界分片都相当于一个独立的世界。
- 需要注意的时,多分片的世界需要有一个世界为主世界。
- 一个独立服务器的所有分片世界只能在同一个存档文件夹下启动。
————
————
总结:
- 多开服务器需要注意服务器开启设备的配置,是否支持运行。
- 注意修改端口号,防止端口冲突。
- 注意启动的文件指向,参数-cluster的使用,防止异线同步加载。
- cluster_token.txt文档可多集群共享。
————
————
5.脚本路径更改&mod更新简化
前言:
其实ugc_mods的更新还可以在简化?
饥荒已经是一款老游戏了,新的ugcmod也是很早的事情了。但是每次更新mod还都要对比主世界(Master)进行mod的复制粘贴?并且如果有新的分片,如火山,还需要在创建新的mod文件?
在更新mod的时候突然发现一件事,那就是更新的时候打开的是饥荒服务器(Don't Starve Together Dedicated Server),然而启动的却是bin下的launch_preconfigured_servers.bat脚本。
作用:
- 不在需要创建ugc_mods文件夹中分片世界文件夹。
- 启动脚本可直接执行更新mod文件的操作,不再需要分步操作。
文件结构大致如下:
steam\steamapps\common\Don't Starve Together Dedicated Server:
├── bin/
│ └── dontstarve_dedicated_server_nullrenderer.exe
│ └── scripts/
└── launch_preconfigured_servers.bat
├── bin64/
│ └── dontstarve_dedicated_server_nullrenderer_x64.exe
│ └── scripts/
└── launch_preconfigured_servers.bat
仔细对比发现,脚本项启动的确确实实是启动了bin下的饥荒服务器,但是更新确实bin64下的饥荒服务器。
示例如下:
所以,我们是不是可以将脚本启动项的指向,从bin中指向到bin64中?
这样不仅解决了自动更新还要先启动服务器在启动脚本的问题。
还解决了分片世界创建的时候,手动创建的问题。
(再也不用麻烦的启动关闭在启动了!!!)
具体操作如下:
直接将脚本文件(scripts)移动到bin64,并更改脚本启动项指向的文件名:
更改前后对比:
更改后代码:
@ECHO OFF
set SteamAppId=322330
set SteamGameId=322330
cd ..
start "Don't Starve Together Overworld" /D "%~dp0.." "%~dp0..\dontstarve_dedicated_server_nullrenderer_x64.exe" -Cluster_1 -shard Master
start "Don't Starve Together Caves" /D "%~dp0.." "%~dp0..\dontstarve_dedicated_server_nullrenderer_x64.exe" -Cluster_1 -shard Caves
--行前添加“--”为注释行。
验证脚本可用性:
将mods中的mod文件全部删除,删除ugc_mods文件夹(只有启动脚本时mods文件中有mod的下载,ugc_mods文件夹才会更新):
然后启动bin64中的脚本:
同样的启动成功,然后看mod文件:
查看ugc_mods文件内结构:
两个文件均存在,无需在手动添加!!!
————
————
6.多世界独立ugc_mods文件夹(这只会看起来更好看,或许有点用?)
前言:
上面已经将自动更新变得更简洁,以下是让你mod管理看起来更像那回事(但是可能作用不大)。
关于所有mod文件见和mod文件:
- modoverrides.lua:决定了这个世界使用那些mod,且mod是如何配置的。
- dedicated_server_mods_setup.lua:自动更新、下载和安装mod文件。
- mods:mod文件的存放文件夹。
- ugc_mods:mod文件的另一个存放文件夹。
————
mod的使用是由modoverrides.lua文件控制的,所以和mod文件夹mod的数量无关。
————
作用:
- 自定义mod文件下载的ugc_mods文件夹。
- 自定义启动服务器时,调用的ugc_mods文件夹。
使用脚本参数:
- 使用-ugc_directory指定ugcmod的文件下载路径。
使用方法:
-
-ugc_directory:
-
-ugc_directory参数可不加值。
-
默认情况下,服务器会将ugcmod下载到ugc_mods\Cluster_1。
-
如果添加参数,不加值,则服务器会将ugcmod下载到data\Cluster_1。
-
添加参数示例:
start "Don't Starve Together Overworld" /D "%~dp0.." "%~dp0..\dontstarve_dedicated_server_nullrenderer_x64.exe" -ugc_directory ../ugc_mods/Cluster_2/Master -cluster Cluster_2 -shard Master
start "Don't Starve Together Caves" /D "%~dp0.." "%~dp0..\dontstarve_dedicated_server_nullrenderer_x64.exe" -ugc_directory ../ugc_mods/Cluster_2/Caves -cluster Cluster_2 -shard Caves
注意事项:
- 使用不同名称的存档时,需要添加参数-cluster作为脚本识别存档的依据。
具体操作如下:
- 只有mod文件更新时,才会重新加载生成ugc_mods文件夹,以及里面的配置文件。
然后启动服务器脚本,加载世界:
总结:
-
-ugc_directory
参数用于指定模组的下载和存储路径。 -
通过该参数,你可以将模组存储到自定义文件夹中,并在调用时,指定该文件夹。而不是默认的
cluster_1
文件夹。 -
使用除默认存档文件夹名称时,需要使用参数-cluster指定存档文件夹名称。
-
不同的世界分片需要使用不同的路径。
————
四、mod添加、修改、更新、删除
本章详细讲解mod的增、删、改、更新。关于mod的管理方法分为两种,分别是手动的更新和自动的更新。
- 自动更新的mod管理:
- 优点:方便,快捷。
- 缺点:不稳定,有可能加载不上。(根据up查到的信息,是因为早期启动脚本是覆盖式的,添加的modID会被覆盖导致不更新。另外就是新的mod使用ugc_mods文件夹,此文件夹只能自动更新地上世界,导致洞穴世界不能正常添加mod)
- 手动更新的mod管理:
- 优点:稳定,百分百能添加上mod。
- 缺点:对比自动更新有一点麻烦。
建议:自动更新太容易掉mod了,建议改为手动。
————作为之前创建世界时,在饥荒联机版中创建的世界蓝本,在这里作为mod配置的映射使用,没有编程基础的玩家,会给予这种mod的修改方法。 ————
1.mod管理文件及配置文件的作用、使用方法及注意事项,mod文件保存和调用说明:
————
(1.modoverrides.lua文件(mod的配置文件)
作用:
-
启用或禁用模组:指定哪些模组会被加载。
-
配置模组参数:为每个模组设置自定义参数。
-
优先级控制:控制模组的加载顺序和依赖关系。
路径:modoverrides.lua
文件位于每个集群的配置文件夹中。
Documents\Klei\DoNotStarveTogether\
├── Cluster_1\
│ ├── cluster.ini
│ ├── Master
│ ├── Caves
│ └── modoverrides.lua
├── Cluster_2\
│ ├── cluster.ini
│ ├── Master
│ ├── Caves
│ └── modoverrides.lua
文件结构:
modoverrides.lua
是一个 lua 脚本文件,其基本结构如下:
return {
["workshop-模组ID"] = {
enabled = true, -- 是否启用模组
configuration_options = {
-- 模组的配置参数
},
},
["workshop-另一个模组ID"] = {
enabled = false, -- 禁用模组
},
}
配置示例:
假设你启用了两个模组,并为其中一个模组设置了自定义参数:
return {
["workshop-350811795"] = { -- 模组 1
enabled = true, -- 启用模组
configuration_options = {
max_items = 20, -- 自定义参数
spawn_rate = 2,
},
},
["workshop-376333686"] = { -- 模组 2
enabled = true, -- 启用模组
},
["workshop-378160973"] = { -- 模组 3
enabled = false, -- 禁用模组
},
}
如何编辑 modoverrides.lua:
-
手动编辑:
-
使用文本编辑器(如 Notepad++、VS Code)打开
modoverrides.lua
文件。 -
按照上述结构添加或修改模组配置。
-
-
通过游戏界面生成:
-
在本地游戏中启用模组并设置参数。
-
将生成的
modoverrides.lua
文件复制到服务器配置文件夹中。
-
注意事项:
-
模组 ID:
-
模组 ID 是 Steam 创意工坊中的唯一标识符,可以在模组的 Workshop 页面 URL 中找到。
-
例如:
http://steamcommunity.com/sharedfiles/filedetails/?id=350811795
的模组 ID 是350811795
。
-
-
配置文件一致性:
-
确保
modoverrides.lua
中的模组 ID 与dedicated_server_mods_setup.lua
中的模组 ID 一致。
-
-
模组依赖:
-
如果某个模组依赖其他模组,确保所有依赖模组都已启用(建议自动下载时添加mod集合的下载)。
-
集合中不同分片世界的模组配置:
假设你运行的是地面世界和洞穴世界,可以为每个集群配置不同的模组:
Cluster_1(地面世界)
return {
["workshop-350811795"] = { -- 模组 1
enabled = true,
configuration_options = {
max_items = 20,
},
},
["workshop-376333686"] = { -- 模组 2
enabled = true,
},
}
Cluster_2(洞穴世界)
return {
["workshop-350811795"] = { -- 模组 1
enabled = true,
configuration_options = {
max_items = 10, -- 不同的参数
},
},
["workshop-378160973"] = { -- 模组 3
enabled = true,
},
}
总结:
-
modoverrides.lua
用于配置和管理服务器中的模组。 -
每个集群中的分片都有自己的
modoverrides.lua
文件。 -
通过该文件,可以启用或禁用模组,并设置模组的自定义参数。
————
————
(2.dedicated_server_mods_setup.lua文件(mod的管理文件)
作用:
-
下载模组:指定服务器启动时需要从 Steam 创意工坊下载的模组。
-
安装模组:将下载的模组安装到服务器的模组目录(
ugc_mods、mods
)中。 -
支持单个模组和模组集合:
-
使用
ServerModSetup("WorkshopID")
下载单个模组。 -
使用
ServerModCollectionSetup("WorkshopID")
下载模组集合中的所有模组。 -
自动下载中两个同时使用,防止有些依赖文件出现漏下的情况。
-
路径:dedicated_server_mods_setup.lua
文件通常位于服务器的根目录下的 mods
文件夹中。
Don't Starve Together Dedicated Server\
├── mods\
│ └── dedicated_server_mods_setup.lua
├── bin64\
├── bin\
├── ugc_mods\
文件结构:
dedicated_server_mods_setup.lua
是一个 lua 脚本文件,其基本结构如下:
-- 下载单个模组
ServerModSetup("WorkshopID1")
-- 下载模组集合
ServerModCollectionSetup("WorkshopID1")
配置示例:
-- 下载单个模组
ServerModSetup("350811795") -- 模组 1
ServerModSetup("376333686") -- 模组 2
-- 下载模组集合
ServerModCollectionSetup("379114180") -- 模组集合
如何编辑 dedicated_server_mods_setup.lua:
- 使用文本编辑器(如 Notepad++、VS Code)打开
dedicated_server_mods_setup.lua
文件。 - 模组 ID 是 Steam 创意工坊中的唯一标识符,可以在模组的 Workshop 页面 URL 中找到。
- 例如:
http://steamcommunity.com/sharedfiles/filedetails/?id=350811795
的模组 ID 是350811795
。 - 对照mod配置文档
modoverrides.lua
,或者创意工坊中的模组ID添加或删除ServerModSetup
和ServerModCollectionSetup
调用。
注意事项:
-
模组下载目录:
-
下载的模组会存储到
ugc_mods
文件夹和mods文件夹中。 -
如果需要自定义模组存储路径,可以使用
-ugc_directory
参数。 -
dedicated_server_mods_setup.lua只会下载服务器模组,如果添加本地模组的modID,则不会下载模组文件。
-
-
模组启用:
-
dedicated_server_mods_setup.lua
仅负责下载模组,模组的启用和配置需要在modoverrides.lua
文件中设置。
-
-
模组集合:
-
使用
ServerModCollectionSetup
下载模组集合时,会下载集合中的所有模组。
-
-
模组冲突和下:
-
dedicated_server_mods_setup.lua
只能下载服务器模组,本地模组添加不给予下载。 -
确保模组之间没有冲突。
-
确保模组在新日期能够正常使用。
-
总结:
-
dedicated_server_mods_setup.lua
用于配置服务器启动时需要下载和安装的模组。 -
通过
ServerModSetup
下载单个模组,通过ServerModCollectionSetup
下载模组集合。 -
下载的模组会存储到
ugc_mods
文件夹中。 -
模组下载时建议将modID添加进mod下载和集合下载中各一份,防止依赖文件没有下载导致的mod不可用。
————
————
(3.mods文件和ugc_mods文件夹的作用说明,以及服务器模组和本地模组的区别。
- 服务器中,服务器模组和本地模组的共性和区别。
- 共性:
- 服务器模组和本地模组的配置信息和参数设置都在modoverrides.lua文档中。
-
无论是服务器模组还是本地模组,都需要确保依赖模组已加载。
-
玩家可以使用服务器modoverrides.lua文档中未添加的本地模组模组。
- 区别:
- 下载方式:
- 服务器模组的下载文件夹为mods和ugc_mods中。
- 本地模组的下载文件夹路径为:..\steam\steamapps\workshop\content\322330
- 加载方式:
- 服务器模组被所有进入服务器的玩家加载。
- 本地模组仅对使用模组的玩家生效,不影响其他玩家。
- 更新方式:
- 服务器模组需要服务器自行更新。
- 本地模组只需要玩家更新。
- 管理方式:
- 服务器模组由管理员控制开启和关闭,以及参数的设置。
- 本地模组由玩家控制开启和关闭,可自行设置参数。
- 运行范围:
- 服务器模组负责管理整个世界和所有玩家,一些模组还能改变世界的玩法。
- 本地模组只会在本地运行,仅对玩家生效。
- 下载方式:
- 注意事项:
- 大多数时候,本地玩家希望有改变世界的本地模组,因此有些模组从服务器中剥离,成为能够影响其他玩家的本地模组。
- 这类模组即使在饥荒联机版中开启,但是服务器中没有添加相应的管理项,这类模组也是不会被加载的。
- 共性:
- mods文件夹和ugc_mods文件夹的作用说明,以及本地mods的存档位置。
- mods文件夹:较早开发的mod,调用的是本文件夹中的mod文件。
- ugc_mods文件夹:较新开发的mods会转移到本文件夹中使用。
- 本地mod文件夹:在steam订阅的所有mod,包括服务器mod。订阅之后都会储存到此文件夹中。
- mods和ugc_mods文件夹本质上都是服务器文件夹,只负责下载和调用服务器mod。
- 本地mod文件夹路径为:..\steam\steamapps\workshop\content\322330
————
2.mod添加
(1.自动更新
共三步:
- 在modoverrides.lua文档中添加modID。
- 在dedicated_server_mods_setup.lua文档中添加modID。
- 更新mod文件,并在ugc_mods的Caves中添加已更新的mod。
- 使用了第三章《5.脚本路径更改&mod更新简化》,可省略第三步。
————
步骤一:
————
本步骤的方法有两种,自行选择!!!
————
- 方法一:直接在modoverrides.lua文件添加modID。
具体操作如下:
在steam的创意工坊中,找到想添加的mod,点进主页,上面的链接中显示的ID为modID:
打开服务器存档文件夹(Cluster_1)中的modoverrides.lua文档(地上、洞穴共两个,只演示一个)将modID按下面格式复制到文档中:
["workshop-modID"]={
enabled=true
}
- 方法二:在本地游戏添加mod并拷贝生成的modoverrides.lua文档。
具体操作如下:
在steam的创意工坊中,找到并订阅想要的mod。然后返回游戏,将mod添加进之前作为服务器存档而创建的世界蓝本中:
接着进入这个世界,让mod的配置成功在世界中加载:
然后找到这个世界的其中一个modoverrides.lua文档,将其替换我们服务器存档文件夹(Cluster_1)的两个modoverrides.lua文档:
————
————
步骤二:
- 在dedicated_server_mods_setup.lua文档中添加modID。
具体操作如下:
在饥荒服务器(Don't Starve Together Dedicate Server)的根目录下的mods文件夹中,打开dedicated_server_mods_setup.lua文档。
并将之前添加到modoverrides.lua文档中的modID按格式添加进dedicated_server_mods_setup.lua文档中:
注意事项:
- 编写mod的作者有时候不会将mod和mod集合的情况说的很清楚,所以在mod管理文档中添加modID的时候,需要将modID添加进两种下载方式中去。
————
————
步骤三:
- 更新mod文件,并在ugc_mods的Caves中添加已更新的mod。
具体操作如下:
在steam启动饥荒服务器(Don't Starve Together Dedicate Server),更新mod文件:
关闭饥荒服务器(Don't Starve Together Dedicate Server),并打开ugc_mods文件夹,将Master中更新的mod添加到Caves中:
————
(2.手动更新
共三步:
- 在modoverrides.lua文件中添加modID。
- 在mods文件夹中添加想要的mod文件。
- 删除dedicated_server_mods_setup.lua文档中所有内容。(第一次操作时删除即可)
- 在ugc_mods文件夹下的两个世界文件夹中添加相同的mod文件。
————
步骤一:
- 在modoverrides.lua文件中添加modID。
同自动更新类方法一样,详情参考上方自动更新类步骤一。
————
————
步骤二:
- 在mods文件夹中添加想要的mod文件。
具体操作如下:
在steam的创意工坊中订阅想要的mod。
打开steam根目录下的路径:steam\steamapps\workshop\content\322330
(这是饥荒联机版订阅的mod存放文件夹,32230为饥荒的游戏ID):
找到之前订阅的modID,并将其复制到饥荒服务器(Don't Starve Together Dedicate Server)的mods文件夹中:
文件夹名称格式为:
workshop-modID
————
————
步骤三:
- 删除dedicated_server_mods_setup.lua文档中所有内容。(第一次操作时删除即可)
具体操作如下:
将mods文件夹中的dedicated_server_mods_setup.lua文档中所有内容删除(第一次操作时删除即可,防止自动更新导致mod不可用):
————
————
步骤四:
- 在ugc_mods文件夹下的两个世界文件夹中添加相同的mod文件。
具体操作如下:
继续将mods文件夹中新增的mod文件复制到ugc_mods文件夹中的Master和Caves下的mod文件中:
文件夹名称格式为:
modID
————
3.mod修改
本篇不含mod的更新内容,所以不需要进行自动和手动更新的区分。
修改mod配置的方法有两种:
- 直接修改modoverrides.lua文档。
- 在联机版中修改本地存档的mod配置并拷贝到服务器mod配置中。
————
(1.方法一
- 直接修改modoverrides.lua文档。
具体操作如下:
打开服务器存档文件夹(Cluster_1)下,Master中的modoverrides.lua文档。并按照想要的需求修改:
["workshop-2078243581"] = { -- 这是一个 Steam 创意工坊的模组 ID,2078243581 是模组的唯一标识符
configuration_options = { -- 模组的配置选项
Blue = 0, -- 蓝色值,用于颜色配置(范围通常为 0-1 或 0-255)
Display = "target", -- 显示模式,设置为 "target" 表示目标显示方式
Green = 0, -- 绿色值,用于颜色配置
Projectile = true, -- 是否启用投射物效果,true 表示启用
Red = 1, -- 红色值,用于颜色配置
Type = "hit" -- 类型,设置为 "hit" 表示命中效果
},
enabled = true -- 是否启用该模组,true 表示启用
}
————
————
(2.方法二
- 在联机版中修改本地存档的mod配置并拷贝到服务器mod配置中。
具体操作如下:
在饥荒联机版中,打开我们之前作为服务器存档而创建的世界蓝本,然后修改里面的mod配置:
进入游戏,加载世界配置信息:
然后找到本地存档中的modoverrides.lua文档,将其覆盖到饥荒服务器存档文件夹(Cluster_1)下的两个世界中去:
本地世界存档路径:...\Klei\DoNotStarveTogether\12[ID]60\Cluster_2\Master
服务器世界存档路径:...\Klei\DoNotStarveTogether\Cluster_1\Master
————
4.mod删除
本篇不含mod的更新内容,所以不需要进行自动和手动更新的区分。
删除mod的方法有两种:
- 方法一:关闭世界中mod配置存档中,不需要的mod开关。
- 方法二:彻底删除mod(mod文件,mod配置文件中的modID)。
————
(1.方法一
- 关闭世界中mod配置存档中,不需要的mod开关。
————本篇涉及文档的mod文档的修改。
同样,如果不想修改这里面的内容,或者找不到相应的modID。也可以去本地存档中修改,然后将本地存档中的modoverrides.lua文档覆盖到服务器存档中。
详情参考本章第二篇《2.mod修改》————
具体操作如下:
打开饥荒服务器存档文件夹(Cluster_1),在Master中找到modoverrides.lua文档:
找到不想使用的mod,将开关属性(enabled)的值改为false:
enabled=false
最后将Master中修改好的modoverrides.lua文档覆盖到Caves中:
————
————
(2.方法二
- 彻底删除mod(mod文件,mod配置文件中的modID)。
此方法针对过期mod和相互冲突的mod。
具体操作如下:
删除modoverrides.lua文档中不需要的modID及其所有配置:
["workshop-modID"]={
##配置内容
enabled=true
}
在return{}中,每一个此格式的文档都为一个mod文件的配置信息,需要全部删除。
删除mods文件中的mod文件:
删除mods文件dedicated_server_mods_setup.lua文档中的modID:
删除ugc_mods文件中地上、洞穴的mod文件:
————
————
5.mod更新
参考上方操作,将旧的mod删除,然后添加新的mod即可。
————
五、各种疑难杂症解决方法
————仅个人在游玩中遇到的各种问题解析,以及延伸出的问题解决方法,不会适用所有情况,请酌情参考。————
1.服务器类问题
引言:
服务器类问题包含,在服务器启动时,命令窗口有报错提示的,均被成为服务器类问题。可查看、可观测、可解决。
服务器类问题可能有以下几种情况:
- 无法匹配密钥文件(cluster_token.txt)。
- 端口被占用。
————
(1.无法匹配密钥文件(cluster_token.txt)
示例
服务器两个命令窗口显示启动失败,并且都提示缺少cluster_token.txt文件(密钥文件)。
[00:00:09]: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[00:00:09]: !!!! Your Server Will Not Start !!!!
[00:00:09]: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
问题原因
- 缺少cluster_token.txt文件。
- 服务器脚本编写错误,即指向错误、文件名错误、路径错误、参数错误。
- 服务器存档存放位置错误。
解决方法
- 向服务器存档中添加cluster_token.txt文件。详细方法参考第二章《2.获取密钥》。
cluster_token.txt文件应在以下路径中:
Documents\Klei\DoNotStarveTogether\
├── Cluster_x\
│ ├── cluster.ini
│ ├── Caves
│ └── Master
- 查看服务器文档是否在正确的路径下,脚本是否编写错误。详情参考第三章的《4.世界多开》。
正确服务器文件路径为:
C:\Documents\Klei\DoNotStarveTogether\Cluster_x
├── cluster.ini
├── cluster_token.txt
├── Master/
│ ├── server.ini
│ └── modoverrides.lua
└── Caves/
├── server.ini
└── modoverrides.lua
基础的脚本格式为:
bin下:
@ECHO OFF
set SteamAppId=322330
set SteamGameId=322330
cd ..
start "Don't Starve Together Overworld" /D "%~dp0.." "%~dp0..\dontstarve_dedicated_server_nullrenderer.exe" -cluster Cluster_1 -shard Master
--start "Don't Starve Together Caves" /D "%~dp0.." "%~dp0..\dontstarve_dedicated_server_nullrenderer.exe" -cluster Cluster_1 -shard Caves
bin64下:
@ECHO OFF
set SteamAppId=322330
set SteamGameId=322330
cd ..
start "Don't Starve Together Overworld" /D "%~dp0.." "%~dp0..\dontstarve_dedicated_server_nullrenderer_x64.exe" -cluster Cluster_1 -shard Master
start "Don't Starve Together Caves" /D "%~dp0.." "%~dp0..\dontstarve_dedicated_server_nullrenderer_x64.exe" -cluster Cluster_1 -shard Caves
————
————
(2.端口被占用
引言
一般来说,饥荒的默认端口10888和10998-10999不会被本地进程占用,可自行查看本地端口是否占用这个进程。
使用命令提示符:
打开命令提示符(CMD),运行以下命令,查看占用端口的程序:
netstat -ano | findstr :<端口号>
例如,查看端口 10999
:
netstat -ano | findstr :10999
输出示例:
TCP 0.0.0.0:10999 0.0.0.0:0 LISTENING 1234
其中 1234
是占用端口的进程 ID(PID)。
查找进程名称:
使用以下命令查找进程名称:
tasklist /FI "PID eq <PID>"
例如:
tasklist /FI "PID eq 1234"
结束进程:
使用以下命令结束占用端口的进程:
taskkill /PID <PID> /F
例如:
taskkill /PID 1234 /F
示例
服务器启动窗口加载失败,提示端口被占用。
问题原因
- 多开世界指向同一个世界,即脚本指向错误。
- 本地饥荒正在运行。
- 有软件占用饥荒游戏端口。
- 世界分片的端口相互冲突。
解决方法
- 查找是否有软件占用服务器端口,找到并结束软件的进程,方法如上所示。
- 查看饥荒联机版是否正在游戏中,如果是就退出世界。
(服务器端口使用默认端口时,会出现的问题。) - 查看脚本的世界指向,是否为同一个世界。(是否存在参数-cluster)。
详情参考第三章的《4.世界多开》。
- 查看服务器的cluster.ini和所有分片的server.ini文件中端口参数是否有相同的。
详情参考第三章的《2.服务器的配置文档及作用说明》。
————
————
2.mod类问题
引言:
mod类的问题比较复杂,因为涉及多mod冲突的关系、旧mod无法适配新版本、本地mod和服务器mod冲突、mod依赖文件不全等。着些都会一笔带过,更多的是让本人结合mod的情况自行尝试。
讲解的更多是服务器mod使用的问题。
mod类问题可能有以下几种情况:
- 无法匹配mod文件路径。
- 无法加载mod,或者mod缺失。
————
(1.无法匹配mod文件路径
示例
- 启动服务器时,不会加载失败,只会在命令窗口显示出这个错误信息。
- 无法匹配mod的文件路径,启动时会自动匹配相应的mod文件路径。但是在启动成功查看服务器时,相应的mod未被加载。
问题原因
- mod文件夹(mods和ugc_mods)下没有自动更新或者手动添加modoverrides.lua文档中以应用的mod。
- 启动脚本中mod文件夹指向错误。
- 各种mod冲突。
- mod老旧。
- mod依赖加载不全。
解决方法
- 查看脚本中“-ugc_directory”、“-server_mods”项的参数是否正确。
- 查看mod文件是否被添加。
自动下载的mod需要添加mod集合的下载。
使用bin启动脚本的需要手动添加分片世界的ugc_mod。
————详情参考第四章————
ServerModSetup("2078243581")
--mod下载
ServerModCollectionSetup("2078243581")
--mod集合下载
--两项需同时添加。
- 在steam的创意工坊中,找到该mod,进入主页查看是否有其他依赖项,或者mod停更。
- 查看mod评论区是否有其他问题。
- 删除有问题的mod,看是否会和其他mod冲突。
————
————
(2.无法加载mod,或者mod缺失
示例
启动服务器后,在浏览界面查找游戏,查看是否添加mod,或者添加的mod是否有缺失。
问题原因
- 问题原因同上。
解决方法
- 解决方法同上。
————
3.权限类问题
引言:
默认管理员权限仅限提供服务器密钥(cluster_token.txt)的玩家。其他玩家需要管理员手动添加管理员权限。
权限类问题可能有以下几种情况:
- 管理员无法使用命令。
————
(1.管理员无法使用命令
本地服务器的本质为独立的两个系统:
- 由服务器占据的本地ip(127.0.0.1)作为服务器端,实际上还是在本地运行。
- 玩家在本地游玩的饥荒联机版。
管理员在游戏中使用命令时,就是在向服务端发送指令,所以需要远端才能发送:
————
六、总结
(1.本地服务器的网络拓扑如下。
- 作为本地服务器,优点是方便管理,服务器成本为零。
- 缺点为,玩家即作为服务端也作为客户端,因为没有专业的服务端设置和网络带宽,导致同城之外的玩家加入游戏会造成卡断。
(2.本篇文章详细讲解了本地服务器的通信原理和运行原理。并尝试搭建了一个完整的本地服务器。
其中详细讲解包括:
- 运行原理和搭建过程。
- mod文件存储和mod添加。
- 启动脚本参数设置。
- 服务器端口。
- 疑难问题解决。
最后
作为耗时了这么长时间,从开始找教程搭建,到最后各种方向各种问题的延伸。
对于网络层面和端口的应用,和服务器的运行原理,以及令牌服务器的验证过程,本地服务器搭建的过程都有了较为清晰的认识。
希望这篇文章能帮助到你~!