当作物之类的东西超出模拟距离时,通常它们就不会继续生长。这个模组改变了这一点:当它们重新进入模拟距离时,模组会进行一次计算并更新它们的状态,让效果看起来就像它们从未离开过模拟距离一样。
所以现在你可以一边探索,一边等待作物生长或熔炉烧炼完成。
这在跳过夜晚时也同样适用:作物会像你整晚都醒着等待白天到来一样继续生长,熔炉也会像一直在运作一样完成烧炼。
我从 DigiDigger 的一个视频 中获得了这个想法,他在视频里谈到了 Terraria 是如何处理所有图格的。
虽然这个视频对 Terraria 实际工作方式的描述并不完全准确,但他确实提到了一个优化方案,我觉得这也可以应用到 Minecraft 中。
他提到这个优化的时间点是在 5:11。
模组并不是通过暴力模拟,在区块未加载期间反复对方块/实体进行 tick,
而是为每个受支持的方块/实体提供了一个模拟函数,用来计算它在经过一段时间后的状态。
最难模拟的是那些依赖随机 tick 的方块。
为了模拟它们,我们会从一个二项分布中进行随机采样,
有时还会用到负二项分布,
以此来判断这些方块在经过一段时间后应该处于什么状态。
通过这种方式,你可以在不使用暴力模拟的情况下获得相当准确的结果。
不过,有些方块的行为我还没找到好的模拟方式。
因此,某些方块的模拟不会特别准确。\
以下是这些方块的列表:
铜的氧化速度和最大氧化程度取决于附近有多少铜方块,以及这些铜方块当前的状态。
目前我的模组是一次模拟一个方块,这意味着我无法准确模拟那些依赖其他方块状态的方块。
这会导致铜方块的模拟结果非常不准确。不过,如果摆放间距足够理想,模拟结果会相当接近真实情况。
另外,第一次氧化阶段发生的概率比后续阶段更低。
为了不用再单独处理这一点,我直接让所有阶段都使用这个较低的概率。
这个问题和铜方块基本一样。正常情况下,只有当周围相邻方块中至少有一个不是水时,冰才会生成。
而我的模组处理这个问题的方式是:不处理。因为我懒得想一个还不错的替代方案,所以如果某个位置符合生成冰的条件,我就直接套用了原版逻辑。
一旦我想到一个能同时模拟多个方块的好方法,未来肯定会修复这个问题。
海龟蛋在精度方面其实没什么问题。最大的问题是孵化后海龟应该处于什么年龄阶段,不过我已经解决了。
我只是想说明一下,精确模拟可能会稍微更耗性能一点。所以提供了一个选项可以将其关闭。
凡是这里没有提到的内容,大概率都有一个相当准确且没有明显问题的模拟函数。
如果你对这个模组有任何反馈或建议,欢迎加入我的 discord server!
友情链接: 网易我的世界 | 泰拉瑞亚 | ocent云计算 | 米饭Minecraft插件文档 | 友链合作
历史访问人数:1,318,842 | 历史访问人次:1,631,888
今日访问人数:5,955 | 今日访问人次:6,457
昨日访问人数:26,708 | 昨日访问人次:29,775
Copyright © 2019-2026 我的世界服务器列表站. All rights reserved.
❤ Powered by GermMC 京ICP备17023959号-6