_Ghost_/
本帖最后由 Qian_quan 于 2020-2-29 18:38 编辑
(食用前请点击 查看所有 按钮)
动态时刻是一个优化类mod,可安装在客户端或服务端。
当安装在服务端时,客户端也需要安装。


这个mod致力于将服务器的Ticks Per Second(TPS)保持在20。它主要通过单独控制每刻更新多少个实体和实体方块来实现的。
如果服务器TPS下降,每个刻度更新的实体和实体方块的数量随之下降,以维持较高的服务器TPS。

动态时刻可以为了保持20TPS,对很多东西进行控制。例如:
如果您要让实体以正常状态运行,而不关心实体方块运行时的状态,可以在配置文件中为实体提供更长的时间。
如果您想给主世界更多的时间用以计算,这也可以做到。

mod的原理:



那么,通过允许实体和实体方块更新速度变慢,将服务器TPS保持为20,

您会获得的体验:

  1. 几乎不会感觉到卡顿
  2. 与实体方块(容器、机器等)进行交互而没有延迟
  3. (少量的)区块加载、传送不需要长时间等待
  4. 玩家移动时不会感觉卡顿
  5. 较高的tps可避免服务器强制崩溃
复制代码

这个mod也不是万能的,部分情况下它无法完全起到优化作用。

常见的情况有:

  1. 新建一个世界
  2. 加速某个世界时间流逝(如龙之研究的苍穹变换器)
  3. 某个mod或是一些堆叠的怪物,在1刻里使用大量时间进行运算造成的卡顿
  4. 因备份世界造成的卡顿
复制代码

请注意,虽然在这些情况下这个mod不会起到很好的优化作用,
但它理论上会使运算峰值平滑很多,相当于变相优化。


命令:
(个人翻译可能存在偏差,放出原文以便参考)
[spoiler]

/tickdynamic list [dimnames, time, entitiesrun, tps, maxslices, minimumentities]

2021.12 数据,可能有更多内容(食用前请点击 查看所有 按钮)动态时刻是一个优化类mod,可安装在客户端或服务端。当安装在服务端时,客户端也需要安装。


这个mod致力于将服务器的Ticks Per Second(TPS)保持在20。它主要通过单独控制每刻更新多少个实体和实体方块来实现的。如果服务器TPS下降,每个刻度更新的实体和实体方块的数量随之下降,以维持较高的服务器TPS。
动态时刻可以为了保持20TPS,对很多东西进行控制。例如:如果您要让实体以正常状态运行,而不关心实体方块运行时的状态,可以在配置文件中为实体提供更长的时间。
如果您想给主世界更多的时间用以计算,这也可以做到。

mod的原理:

众所周知,在Minecraft服务器上,世界每秒将更新20次。
这意味着每次更新时,服务器只有50毫秒的时间更新每个活动的世界,
并更新实体、实体方块和其他内容,例如照明和区块生成。
一旦您的服务器上有很多玩家,并且大部分人没有处于挂机状态,服务器可能会在给定的50毫秒内无法更新所有内容。
这是导致服务器卡顿的元凶之一。
在安装了多个大型mod的服务器,通常具有大量实体方块构成的自动化设备,
以及许多新的怪物和其它实体,更会加剧这个问题。
在服务器中使用动态时刻,您将能够定义每个世界的更新允许使用多少时间,
以及在每个世界内允许实体和实体方块使用多少时间更新。
每当运算所需时间达到限制时,动态时刻将限制更新每个设定的实体和/或实体方块的更新速度。
本质上,每个世界中的实体和实体方块都有单独的TPS。


那么,通过允许实体和实体方块更新速度变慢,将服务器TPS保持为20,
您会获得的体验:

代码:

  1. 几乎不会感觉到卡顿
  2. 与实体方块(容器、机器等)进行交互而没有延迟
  3. (少量的)区块加载、传送不需要长时间等待
  4. 玩家移动时不会感觉卡顿
  5. 较高的tps可避免服务器强制崩溃

这个mod也不是万能的,部分情况下它无法完全起到优化作用。
常见的情况有:

代码:

  1. 新建一个世界
  2. 加速某个世界时间流逝(如龙之研究的苍穹变换器)
  3. 某个mod或是一些堆叠的怪物,在1刻里使用大量时间进行运算造成的卡顿
  4. 因备份世界造成的卡顿

请注意,虽然在这些情况下这个mod不会起到很好的优化作用,但它理论上会使运算峰值平滑很多,相当于变相优化。


命令:(个人翻译可能存在偏差,放出原文以便参考)
/tickdynamic list [dimnames, time, entitiesrun, tps, maxslices, minimumentities]列出所有世界和每个世界分别请求的数据、包含的实体&实体方块。如果此列表长于6行就会被分页。默认情况下,它会显示第一页,但是您可以在最后一个参数写明页码。The list command will list all the world, and the requested data for them and the Entities & TileEntities in them.If this list is longer than 6 rows, it will be put into multiple pages. By default it will show page one, but you can provide a page number as the last argument.
/list dimnames列出维度名称及其维度ID。列表中的其他所有内容当前都使用维度ID代替(例如DIM0,DIM-1等),因此,使用“ list dimnames”指令可以获取绑定到这些数字的实际名称的列表。目前这是临时而为,仅列出当前加载和勾选的维度名称。仅使用DIM编号开头的原因是,这些名称通常很长,以至于导致表在聊天中会使用很多行,影响正常聊天内容的阅读。List the names of the dimensions and their dimension id.Everything else in the list currently uses the dimension numbers(Like DIM0, DIM-1 etc.) so using 'list dimnames' you can get a list of the actual name bound to those numbers.This is currently temporary, and will only list the names of dimension currently loaded and ticking.The reason for only using DIM numbers to start with, is that the names often are so long that they cause the table to wrap around to multiple lines in chat.
/list time列出CPU平均使用时间和分配的最大平均CPU时间(以毫秒为单位,下文所有的CPU时间均用时间代指)。在每刻开始时,本mod将获取平均使用时间和每个方块被分配的最大平均时间,然后重新分配时间。此命令将向您显示此数据,使您可以查看哪个世界以及哪个世界中的什么东西在使用大量时间。此列表还显示“世界数据”列,该列是该世界中实体和实体方块使用的总时间。这里的一个特殊条目是“(other)”。这表示在实体和实体方块之外还有东西使用了时间,并且当动态时刻负载将计算时间分布时,它将不得不从线程池中删除该时间。从版本0.1.3开始(内部版本),还有一个“外部”组。该组将显示2刻之间使用的时间,这会使下一刻的开始被延后。如果您有其他服务在运行Minecraft服务器的机器上运行,这项就会显示占用很多时间。如果这花费了大量时间,则可能表明您运行的那些其他服务正在占用大量CPU时间。List the average used, and average given time in milliseconds.At the start of each tick, Tick Dynamic will take the average time used and slicesMax for each group, and redistribute the time. This command will show you this data, allowing you to see which world, and which group within that world is using the time.This list also shows an 'World Data' column, which is the combined time used for Entities and TileEntities in that world.One special entry here is '(Other)'.This indicates any time used outside Entities and TileEntities, and when Tick Dynamic calculates the time distribution, it will have to remove this time from the pool.Starting from version 0.1.3 there is also an "External" group.This group will show the time used between Ticks, that causes the next tick to start late. You will notice this show a lot of time used if you have other things running on the same machine as the minecraft server.If this uses a significant amount of time, it can indicate that you have something else using up a lot of CPU time.
/list entitiesrun列出平均每刻运行的实体/实体方块的数量。这使您可以大致了解每个刻度运行的实体或实体方块的数量,并且可以与“/list time”结合使用,以很好地表明可以限制什么东西来减少在不同世界中使用的时间。List the number of Entities/TileEntities which run on average each tick.This gives you an overview of the number of Entities or TileEntities which run each tick, and can in combination with 'list time' give an good indication of what can be done to reduce time used in the different worlds.
/list tps列出每个世界中当前每秒的实体和实体方块运行的TPS。这有助于分析特定方块的速度降低了多少。 例如,如果实体的TPS为10,则意味着只有一半的实体将更新每个服务器Tick。注意:某些世界可能会将TPS显示为'0.00'。这可能意味着当前没有加载和/或运行这个世界。List the current Ticks Per Second of Entities and TileEntities in each world.This gives you and indication of how much the specific group has been slowed down. For example, if Entities have a TPS of 10, that means only half of the Entities will update each server Tick.Note: Some worlds may show the TPS as ',00'. This means that the world currently is not loaded and/or running.
/list maxslices本质上只是列出配置文件中设定的当前最大平均使用时间的值。查阅slicesMax注释获取有关配置的更多信息。Essentially just lists the current slicesMax value from the configuration file.Check out the slicesMax documentation for the config for more information.
/list minimumentities本质上仅列出配置文件中的每种东西当前最低运行速度的值。有关更多信息,请查看minimumObjects文档以获取配置。Essentially just lists the current minimumObjects value from the configuration file.Check out the minimumObjects documentation for the config for more information.
/tickdynamic tps输出当前服务器tpsPrint the current average server TPS
/tickdynamic value该命令当前尚未实现,但是将来它将允许在游戏内更改配置文件,而无需手动编辑配置文件。This command is currently not implemented, but in the future it will allow you to directly change the configuration entries without having to manually edit the config file and running reload.
/tickdynamic reload重载配置文件Reloads the configuration file, and applies the new configuration.
/tickdynamic enabled [yes, y, no, n]启用或禁用该mod。请注意,在某些情况下,它仍会收集数据,但不会限制任何东西。注意:这条命令不会将此更改写入配置文件!Enabled or disabled Tick Dynamic. Note it will still in some cases gather data, but will no longer apply any limits.Note: It does not write this change to the configuration file!
/tickdynamic help打开CurseForge上的帮助页面For now it just prints the URL of this page.


对配置文件的介绍:当您首次使用安装的mod启动世界时,它将创建一个新的默认配置文件。它带有注释,应该很容易理解,但是有些东西我们将更详细地介绍。
配置文件的结构:配置的结构中有一个名为“世界”的主组。在此“世界”组中,每个维度/世界都对应一个分组。然后在每个世界中,您都有“实体”和“实体方块”群体。每个组始终只有一个,当在服务器上创建或加载新世界时,mod将自动为新世界创建组。建议您首先运行一次,让mod自动创建配置文件,然后打开配置并调整所需的设置,然后在服务器上以op身份执行“ tickdynamic reload”命令。将来会有一条命令直接调整设置,而无需重新加载或编辑配置。
条目:slicesMax您会在配置中看到的配置选项之一是“ slicesMax”。这里是您控制分配给每个世界以及每个世界内分配给实体和实体方块的时间的权重。每刻的时间(默认情况下为50ms)将根据其配置的数量数分配给所有世界。如果您有3个世界,每个世界权重为100,那么每个世界将获得100/300=约33%的时间。因此,您可以为主世界设置maxSlices为300,同时给其他两个100。这样,主世界将获得60%的时间。在分配给世界的时间中,这将根据其权重以相同的方式进一步分配给实体和实体方块。实体方块和实体是分配给这个世界的时间的一部分,因此它们的权重仅在该世界中彼此相对。如果任何组有未使用的时间,则该时间将分配给其它组。因此,即使您给实体方块分配了1000的权重,对实体分配了100的权重,只要实体方块没有被分配全部时间,实体就能使用至少100权重的时间。因此,权重与时间百分比的公式为:(self.maxSlices / allSiblings.maxSlices)* 100注意:maxSlices = 0具有特殊含义。这意味着要考虑但不限制组的时间使用情况。基本上,即使它超出父级maxTime,也可能会花费所有需要的时间,从而将其同级项降低到minimumObjects。


minimumObjects随着服务器在给定的50ms时间内处理不完的事物越来越多,它将把更新实体和实体方块的数量减的越来越少。最终它将达到停止更新它们的地步,这应该并不是您想要的。使用minimumObjects,您可以将其设置为不会低于值,无论服务器的TPS有多低。

注意:该mod目前与SpongeForge兼容较差,请Sponge服主慎重使用。与So Many Enchantments和Not Enough Enchantments完全不兼容。



下载地址:https://www.curseforge.com/minecraft/mc-mods/tick-dynamic/files/all
使用建议:SpongeForge不用试了,完全不兼容。
该mod的1.7.10版本已停止更新,本人在K锅测试尚未发现问题,但使用前还请多加测试。
1.12.2版本的bukkit+forge端,多线程优化的版本测试时会出现debug刷屏的问题,不建议使用。(作者都说那玩意兼容性略差)
该mod在国内较为冷门,如果需要在服务器使用,请严格测试
该mod使用MIT许可,无论是作者还是搬运者均不对使用该软件造成的损失负责。







二拇指one
感谢大佬,支持1.7.70的u端吗?

Soul_cutting
感谢大佬,支持1.7.70的u端吗?
我也想问

沼泽怪物
终于来了,试试看去啦

511281270
支持Cat端吗?感觉是爆炸优化的东西

S_iver
感谢搬运!

昔日小冲
支持CAT吗 优化MOD的话 服务端需要放置吗

a8559039
1.7.10u端可以用嘛

1620691291
哇塞大佬 就需要这种模组了 感谢搬运

100177531
这么好的插件,拿走了qwq

swordblood
感觉可以啊,不知道mod服务器后期的机器和自动化管道什么的有咩有效果

猜猜谁是谁
发帖前请仔细查阅发帖细则
7-2-a Mod发布帖
标题格式:
([BGM])[高版本号-低版本号]+[Mod本名——Mod译名]([Mcreator制作])+其他
[版本号] :Mod支持的所有Minecraft版本,例:[1.14.4-1.7.10],若仅支持某个0.1阶段全版本亦可写作[#.#.X] 例:[1.14.X]
[Mod本名] :即 Mod作者公开的Mod官方名称
[Mod译名] :请参考《Minecraft Mod简体中文翻译规范与指南》07
[Mcreator制作]:如为使用Mod制作器Mcreator制作的Mod,请在标题中间规定位置添加此项
标题格式有误 请尽快修改

天辉胡萝卜
好吧,客户端也要安装,可惜了

zhang4422663
感谢大佬分享

徐翔
谁能发个百度网盘地址

333qwe
谢谢楼主分享

拍摄
谢谢大佬啊

奥义小杰
感觉有点意思...不知道具体效果怎样..

vbvsja
感谢大佬

897635241
徐翔 发表于 2020-3-16 20:48
谁能发个百度网盘地址

同求国内地址

tiaoge
MCBBS有你更精彩~

刁钻爱自然
为啥我和朋友玩用这个MOD会崩?

jkjkk
U端不是有些MOD转码就能用嘛

_Ghost_/
刁钻爱自然 发表于 2020-4-19 19:25
为啥我和朋友玩用这个MOD会崩?

好奇 为啥好友联机要安这个mod

_Ghost_/
jkjkk 发表于 2020-4-19 21:12
U端不是有些MOD转码就能用嘛

这个mod 在1.7.10只是测试版本 不确定它的稳定性

W_SevenDay
可惜我是纯净服

Novice636
我们服务器就用的这个

lisansi123
1.12.2 mohist出现大量WARN信息