简介
Lithium 是一个自由及开源的优化模组,与其它优化模组不同,Lithium 致力于着一个标准,即在不修改原版机制的前提下做出更多的优化改进,如果你想获取更激进一点的优化,可以尝试 氢 (Hydrogen)(已停更)或 铁氧体磁芯 。
分为 Fabric 和 Forge 两个版本。
它致力于改善多种原版机制的计算方法,如:物理系统、生物 AI、红石、爆炸等。详见 目录 - 优化。
Lithium 可以被单独安装至客户端或者服务器的任意一端中。服务器安装时,客户端无需安装,反之亦然。
作者没有任何把 Lithium 移植到 1.12 或者更低版本的想法。(因为它主要面向的是 1.13+ 的负面优化特性)
与同样出自 jellysquid_ 的优化模组 磷 (Phosphor) 与 钠 (Sodium) 搭配使用,效果更佳。
由于 Fabric 自身引入了 Sponge 的 Mixin,MixinBootstrap 1.0.2+ 不再被需要,1.16 以后的版本可直接使用(Forge 版仍需使用)。
使用 & 下载
安装 Fabric ,Fabric API 不是必须的,但是我们推荐你装上。
在此处下载对应版本的模组本体。
将下好的 jar 文件放入 .minecraft/mods 中(若启用了版本隔离,请放入 ./minecraft/版本号/mods 中)。
这时本模组应该正常加载,如果出现问题,请报告至 Github Issues(反馈请用英语)。
安装 Forge,并安装模组所需前置 MixinBootstrap 。
在此处(1.15)或 此处(1.16 测试版,不稳定)下载对应版本的模组本体。
将下好的 jar 文件放入 .minecraft/mods 中(若启用了版本隔离,请放入 /.minecraft/版本号/mods 中)。
这时本模组应该正常加载,如果出现问题,请向作者反馈。
注:锂不再更新 Forge 版本,现仅支持 Fabric。
优化
安装锂之前(左图)和之后(右图)的服务器 tick 时间(mspt)图。 这是在现有世界中以 18 渲染距离进行的测量。
物理优化:通过简单地减少长方体碰撞箱的分辨率复杂度,实体碰撞检测有了显著的进步。 同时,还使用一种更准确的算法来减少每个 tick 检查的区块数,尤其是在实体快速移动的情况下,优化效果显而易见。
生物 AI 优化:我们在一些处理 AI 的任务中使用了基于事件的系统,以减少不断遍历世界变化所带来的 CPU 占用。生物的“大脑”也被优化了,在不同的 AI 任务之间选择时会比以前快很多。
世界生成优化:在原版的世界生成当中,许多计算都是不必要的,并且不会影响最终结果,这为 Lithium 提供了充分的机会来优化这一笔显著的性能开销。
区块加载优化:修改了方块着色板压缩(block palette compaction)中所使用的预生成结构(temporary data structures)以提高效率。当玩家在探索世界(生成新区块)时,TPS 下降更少,加载时间也有所改进。我们还对一些验证操作进行了批处理,以减少不必要的磁盘 I/O。注意:如果安装了区块引擎重写优化 井字棋 (tic-tacs) ,该优化不会有任何作用,但这并不影响双方的兼容性。
刷怪塔优化:优化过的实体之间的碰撞处理会利用简单的碰撞箱,怪物成堆所带来的性能损耗显著降低。这大大降低了刷怪塔对服务器 TPS 的影响。
方块刻处理优化:该优化让方块刻处理的开销更少,使方块更新(生成区块后稳定下来时)和其它红石装置更快。游戏会确定方块是否按照更新队列的计划进行刻处理,该优化使其时间复杂度从 O(n) [n 在这里代表进行刻处理的方块数量] 降低到 O(1),从而在刻处理大量方块时提供十分显著的速度提升。
爆炸优化:我们已为 TNT 和爆炸应用了相当多的优化,在不改变其行为的情况下减少了相关的行为所带来的卡顿。 在其中增益最显著的一项是光线追踪,已得到充分优化(原理:在同一路径上,多步发生的行为将响应于同一方块位置,从而使我们能够快速复用上一步的结果)。 我们还利用了一种更快的位置跟踪算法,该算法可以避免许多不必要的分配(allocations)。
兴趣点优化:Minecraft 中的复杂生物 AI(主要是村民和掠夺者的)通常需要在世界中找到相关的兴趣点,以选择最合适的AI任务。在原版中,查询一个区块中的所有兴趣点需要通过大量的流代码进行 16 次单独检索。随着 Lithium 的出现,这个任务被简化为单次简单检索,使用更快(也很典型)的基于迭代器的方法,使查询性能提高 16-22 倍。
数据追踪器优化:用于追踪某些实体状态和属性的内部数据管理器经过优化,使用平面数组并避免高性能损耗的锁定,无论这些属性在一个游戏刻内何时被访问,这都能提供十分体面高效的性能提升。
红石优化:在方块更新后计算红石线的新充能等级很吃性能。该优化在不改变行为的情况下减少方块状态检查的次数,可将红石粉产生的滞后减少约 35%。
…以及其他帮助 JVM 更好地优化代码的内部改进。
配置
Lithium 使用了不寻常的配置系统,可用于启用或禁用某些补丁程序。 该系统可以对 Lithium 修改的代码进行极其细微的控制,因此,可以完全消除由 Mod 引入的错误或 Mod 不兼容性。 有关更多信息,请阅读有关修改配置文件的 Wiki 条目或查看 MC 百科在教程中所带来的配置文件翻译。一个空的配置文件是完全允许的,仅表示你要使用默认选项。
注意
锂仍处于早期开发阶段。此模组包含大量可能会导致游戏中问题的修补程序,请准备好编辑你的配置文件以缩小问题范围。如果你确实遇到问题,请让我知道!
Forge 移植
Forge 1.18.1 - 1.20.1 NeoForge 1.20.1 - 1.20.6, 1.21.1 :镭 (Radium)。
Forge 1.18.2 - 1.20.4:Canary。
Forge 1.16.4 - 1.19.2:RoadRunner。
Forge 1.16.5:PotatoRunner (已停更)。