并发区块管理引擎 - Forge

并发区块管理引擎 - Forge

这是C2ME Fabric移植到Forge的版本。

性能

并发区块管理引擎(Forge)

由 ishland / RelativityMC 制作的 C2ME 的社区 Forge 1.20.1 移植版。 原模组:https://modrinth.com/mod/c2me-fabric

Minecraft 在单线程上生成、加载、保存和光照区块。在现代多核 CPU 上,这意味着当你穿越新地形时,大部分核心处于闲置状态,导致卡顿。C2ME 使这些工作并行化——它是 Fabric 上流畅探索和快速世界预生成背后的引擎,现在从头移植到经典 Minecraft Forge 1.20.1。

这是一个社区移植版本,并非由原 C2ME 团队制作或认可。所有核心引擎工作归功于他们;本项目只是将其带到 Forge。请在此处报告 Forge 特定的问题,而不是上报给上游 C2ME。

功能特性

  • 多线程世界生成 -> 地形、生物群系、特征和结构在所有核心上并行生成。
  • 多线程区块 I/O -> 加载和保存不再阻塞游戏主线程。
  • 多线程光照计算。
  • 无 tick 视距 -> 在不tick(和不卡顿)这些区块的情况下看得更远。
  • 更智能的调度和世界生成期间更低的内存分配开销。
  • 修复了大量原版结构生成 bug 的世界生成线程安全问题。

以单个模组形式发布,由各个功能模块构建,每个模块均可单独开关。

性能

C2ME 将区块流水线——世界生成、I/O 和光照——分散到每个 CPU 核心上,而不是单个核心。结果是世界生成和预生成速度显著提升。

在四个大型 1.20.1 Forge 整合包(每个 300-400 个模组)上测试,使用相同协议: /chunky radius 1000,每个整合包 16,129 个区块。

性能对比图

在全部四次运行中:共生成 64,516 个区块。零崩溃,零损坏。

请给它足够的内存。C2ME 会同时保留大量区块在途,因此它用内存换取速度。在 8 GB 内存下会卡顿的整合包,增加一些内存余量后运行良好。无需修改代码,只需增加堆内存:

内存建议图

环境要求

  • Minecraft 1.20.1 · Forge 47.x · Java 17

兼容性

C2ME 旨在与常见的 Forge 性能优化模组栈共存。如 Embeddium、ModernFix、FerriteCore、ServerCore、Canary 等。当它检测到其他模组已优化相同代码(如 Canary、Radium 及其他 Lithium 分支)时,它会仅为这些重叠部分让路,以免崩溃,同时其独特的多线程生成功能继续在顶层运行。与 NBTac、LongNbtKiller 和 MoreMobVariants 等模组的已知冲突也以相同方式处理,无需配置。

如果你已经在使用 Canary 或 ServerCore,C2ME 最大的补充是它们未提供的线程化世界生成。

配置

  • 设置位于 config/c2me.toml 文件中。
  • 任何模块都可以通过 JVM 参数禁用: -Dc2me.disableModule.MODULE=true (例如 -Dc2me.disableModule.opts.scheduling=true)

已知注意事项

  • 需要足够的内存 -> 请参阅“性能”部分。
  • 由于它替换了区块存储后端,一些直接访问原版区块存储内部结构的模组可能需要进行特定调整。如遇到此类问题,请报告。

鸣谢与许可证

原版 C2ME © 2021-2024 ishland 和 RelativityMC。 源码:https://github.com/RelativityMC/C2ME-fabric 根据 MIT 许可证授权;此移植版在相同许可证下重新分发,完整声明包含在 jar 文件中。非常感谢 C2ME 团队——这个移植版的存在完全归功于他们的工作。