介绍
Tick Dynamic 是一个 Minecraft Forge CoreMod,它会尝试将服务器的每秒刻数(TPS)维持在 20。它通过单独控制每刻更新多少实体和方块实体来实现这一点。随着服务器 TPS 下降,每刻更新的实体和方块实体数量也会下降,以维持较高的服务器 TPS。
注意:目前不兼容 SpongeForge。
原始项目由 wildex999 开发,据我所知从未发布到 Curse。 这里是原始模组的链接,可以找到 1.8 和 1.7.10 的下载。 这里是他允许我更新它的地方,此外它还采用 MIT 许可证授权。
描述
在 Minecraft 服务器上,世界每秒会更新 20 次。这意味着服务器有 50 毫秒的时间来遍历每个活跃世界,并更新实体、方块实体以及其他内容,例如光照和地形生成。
一旦你的服务器有大量玩家和大型活跃基地,服务器可能就会开始在给定时间内更新所有内容时出现问题。
对于带有区块加载器、包含大量方块实体的大型基地以及许多新怪物和其他实体的模组服务器来说,尤其如此。
在服务器上使用 Tick Dynamic 后,你将能够定义每个世界允许使用多少时间,以及在每个世界内,实体和方块实体允许使用多少时间。
每当达到这些限制时,Tick Dynamic 就会限制给定组中每刻更新的实体和/或方块实体数量。
本质上,每个世界中的实体和方块实体都有各自独立的 TPS。
那么,通过允许实体和方块实体更新得更慢来维持服务器 TPS 为 20,你能获得什么?
– 几乎没有方块延迟
– 与方块实体(箱子、机器等)交互时没有延迟
– 区块加载和传送时没有长时间停顿
– 玩家移动时没有卡顿
– 不会因刻时间过长而断开连接
– 通常延迟更低,服务器响应更灵敏
但请注意,Tick Dynamic 并不能解决所有情况,某些事件仍会导致 TPS 下降,或造成明显卡顿。
一些例子包括:
– 世界生成在某一刻花费大量时间。
– 某个世界的时间使用量快速变化
– 某个模组,或怪物组合,在某一刻的单个操作中花费大量时间。
– 世界备份
不过,Tick Dynamic 应该能够大幅平滑这些尖峰。
Tick Dynamic 提供了大量控制方式,用来维持 20 TPS。
如果你希望实体以完整的 20 TPS 运行,但不在乎方块实体,你可以为实体分配更大的时间片。
如果你想给主世界更多时间,也可以给它分配比其他世界更大的时间片。
安装
多人服务器安装
Tick Dynamic 是一个 Minecraft Forge 模组,因此需要 Forge 服务器才能运行。
你可以 在这里 下载最新的 Forge 安装器。记得根据你运行的 Minecraft 版本选择正确的版本。
然后你只需安装服务器并启动服务器,让它进行初始设置。
Forge 服务器运行后,只需从下载页面下载 Tick Dynamic,并将其放入 Forge 服务器的 mods 文件夹中。
然后重启服务器,模组会为你生成默认配置文件,并将其命名为“tickdynamic.cfg”,放入“config”文件夹。
有关如何配置此模组的更多信息,请阅读下方的“配置”部分。
单人游戏客户端安装
客户端的安装方式与服务器端基本相同。
只需下载 Forge 安装程序并运行,然后将 Tick Dynamic 放入“mods”文件夹即可。
配置
首次启动安装了此模组的世界时,模组会创建一个新的默认配置文件。
文件中包含注释,应该很容易理解;不过,下面会进一步介绍其中的一些概念。
配置文件采用分组结构,最外层是名为“worlds”的主组。
在“worlds”组中,每个维度/世界都有一个对应的分组。
每个世界分组下则包含“entity”和“tileentity”分组。
每种分组始终只有一个;创建或加载新世界时,Tick Dynamic 会自动为其创建分组。
建议先运行一次游戏,让模组自动创建这些分组;然后打开配置文件调整所需设置,最后在服务器上以 OP 身份执行命令“tickdynamic reload”。
以后会添加一条命令,让你可以直接调整设置,而无需重新加载或编辑配置文件。
slicesMax
配置文件中会反复出现一个名为“slicesMax”的选项。
切片用于控制分配给每个世界的时间,以及每个世界中分配给实体和方块实体的时间。
每个游戏刻的时间(默认为 50 毫秒)会根据各世界的切片数量,在所有世界之间进行分配。
如果有 3 个世界,且每个世界都有 100 个切片,那么每个世界将获得 100/300 = 约 33% 的时间。
因此,你可以将主世界的 maxSlices 设为 300,而另外两个世界各设为 100。这样主世界就会获得 60% 的时间。
分配给世界的时间还会按照切片数量,以相同方式进一步分配给方块实体和实体。
方块实体和实体获得的时间来自先分配给世界的时间,因此它们的切片数量只在同一世界内彼此相对。
如果某个组有剩余时间,这部分时间就会分配给其他组。
因此,即使你给方块实体分配 1000 个切片、给实体分配 100 个切片,只要方块实体没有用满自己的时间,实体就能使用超过 100 个切片所对应的时间。
切片对应的时间百分比计算公式为:(self.maxSlices/allSiblings.maxSlices)*100
注意:maxSlices = 0 有特殊含义。它表示会统计该组的时间用量,但不设上限。
也就是说,该组可以使用所需的全部时间,即使超出父组的 maxTime 也没关系;这会使同级组的对象数量降至 minimumObjects。
minimumObjects
当服务器越来越频繁地超出规定的 50 毫秒游戏刻时间时,模组会逐步减少正在更新的实体和方块实体数量。
最终,它可能会完全停止更新这些对象,但这并不总是你想要的结果。
使用 minimumObjects 可以设置对象数量的下限,无论服务器的 TPS 降得多低,都不会低于该值。
命令
/tickdynamic list [dimnames, time, entitiesrun, tps, maxslices, minimumentities] [page]
list 命令将列出所有世界,以及它们所请求的数据和其中的实体与方块实体。
如果这个列表超过 6 行,它将被分成多页。默认会显示第一页,但你可以把页码作为最后一个参数提供。
list dimnames
列出维度的名称及其维度 id。
目前列表中的其他内容都使用维度编号(如 DIM0、DIM-1 等),因此使用 ‘list dimnames’ 你可以获得与这些编号绑定的实际名称列表。
这目前是临时的,只会列出当前已加载并正在计时的维度名称。
一开始只使用 DIM 编号的原因是,名称往往太长,会导致表格在聊天中换行成多行。
list time [page]
列出平均已用时间和平均给定时间,单位为毫秒。
在每个 tick 开始时,Tick Dynamic 会获取每个组的平均已用时间和 slicesMax,并重新分配时间。此命令会向你显示这些数据,让你可以看到哪个世界以及该世界中的哪个组正在使用时间。
此列表还会显示一个“World Data”列,它是该世界中实体和方块实体所用时间的总和。
这里有一个特殊条目“(Other)”。
它表示实体和方块实体之外所用的任何时间,当 Tick Dynamic 计算时间分配时,它必须从时间池中移除这部分时间。
从 0.1.3 版本开始,还有一个“External”组。
此组会显示 tick 之间所用的时间,这会导致下一个 tick 延迟开始。如果你在运行 Minecraft 服务端的同一台机器上还运行了其他东西,你会注意到这里显示大量已用时间。
如果它占用了大量时间,可能表明你有其他东西正在消耗大量 CPU 时间。
list entitiesrun [page]
列出每个 tick 平均运行的实体/方块实体数量。
这可以让你大致了解每个 tick 运行的实体或方块实体数量,并且与 ‘list time’ 结合使用,可以很好地指示可以采取哪些措施来减少不同世界中所用的时间。
list tps [page]
列出每个世界中实体和方块实体的当前每秒 tick 数。
这可以让你了解特定组被减慢了多少。例如,如果实体的 TPS 为 10,这意味着每个服务端 tick 只有一半的实体会更新。
注意:某些世界可能会将 TPS 显示为 ‘,00’。这意味着该世界当前未加载和/或未运行。
list maxslices [page]
本质上只是列出配置文件中当前的 slicesMax 值。
查看配置的 slicesMax 文档以获取更多信息。
list minimumentities [page]
本质上只是列出配置文件中当前的 minimumObjects 值。
查看配置的 minimumObjects 文档以获取更多信息。
/tickdynamic tps
打印当前平均服务端 TPS
/tickdynamic value
此命令目前尚未实现,但将来它会允许你直接更改配置项,而无需手动编辑配置文件并运行 reload。
/tickdynamic reload
重新加载配置文件,并应用新配置。
/tickdynamic enabled [yes, y, no, n]
启用或禁用 Tick Dynamic。注意,在某些情况下它仍会收集数据,但不再应用任何限制。
注意:它不会将此更改写入配置文件!
/tickdynamic help
目前它只会打印此页面的 URL。
看看我的其他模组:
服务端模组:
客户端模组:
其他模组:
常见问题
Tick Dynamic 支持哪些 Minecraft 版本?
Tick Dynamic 支持 Minecraft Java 版 1.7.10–1.12.2,共 6 个版本,可用的加载器:Forge。下载时注意选择和你游戏版本一致的文件。
Tick Dynamic 怎么安装?
先用 PCL2 或 HMCL 启动器安装对应版本的 Forge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。
The_Fireplace 的其他作品
查看全部 →WorldGen Block Replacer
在世界生成时将方块替换为其他方块。
Command Keybindings
允许你将指令绑定到按键上,以便快速使用。
Fireplace Lib (Fabric/Quilt)
A library of common functionality used by my mods, in one place for easier maintenance and faster updates.
Mob Rebirth
Allows mobs and animals to be reborn when they die. Very configurable.
评论
登录后评论和评分