跳到正文

Foam​Fix

作者:asiekierka

针对一款热门方块游戏的简单、精准优化

收藏

介绍

介绍由机器翻译自 CurseForge 原页面,仅供参考。

 

快速公告:目前没有计划更新 1.14+ 版本的 FoamFix,Forge 和 Fabric 都没有。

 

FoamFix

 

FoamFix 是一个模组,旨在通过简单、有针对性的优化来优化模组化 Minecraft 体验的某些方面。

 

特性

 

FoamFix 特别关注模组化 Minecraft 的以下几个方面:

 

  • 内存占用(在 Minecraft 1.8+ 中)。这是 FoamFix 最初被制作的原因,也是它如今被整合包采用的最重要原因。观察表明,在特别重的整合包上,Java 堆内存占用(在主菜单测量,游戏加载完成后,使用 VisualVM)可以下降多达 50%!
  • TPS 占用,尤其是在较大的服务器上——幽灵区块加载和网络改进对单人游戏体验帮助不大,但在尝试扩展多人世界时可能非常有益。

 

还有其他更次要的优化,但它们可能不会对你的游戏玩法产生直接影响。查看你的 foamfix.cfg 文件以获取完整列表!

(ノ◕ヮ◕)ノ*:・゚✧

常见问题

  • 问: 我遇到了性能问题,而移除 FoamFix 就解决了!
  • 答:请确保你已更新到最新版本。我不可能用自己的资源在成千上万的计算机硬件配置上测试 FoamFix,有时会出现针对某些配置的特定问题。如果你已更新到最新版本并且仍然遇到问题,请联系我!
  • 问:如果客户端/服务端没有安装 FoamFix,我可以在服务端/客户端运行它吗?
  • 答:可以。
  • 问:我可以在服务端和客户端之间混用不同版本的 FoamFix 吗?
  • 答:同样可以。
  • 问:为什么会有适用于 1.7.10 的 FoamFix?
  • 答:FoamFix 主要针对 1.8+ 的模组化 Minecraft。然而,它的一些后期优化——尤其是幽灵区块加载修复——结合一些被放弃的 bug 修复/优化项目(BugfixMod、Minecraft Forkage),促使我为 1.7.10 创建了一个同名优化模组,它共享了部分功能。一如既往,查看 foamfix.cfg 了解更多!
  • 问:你能为原版做一个 FoamFix 吗?
  • 答:FoamFix 几乎所有的内容都专注于模组环境特有的优化。将其移植到原版收益甚微,因为原版本身比 Forge+FoamFix 还要高效。如果你运行的是大型原版服务器,使用专门的解决方案可能是更好的主意。
  • 问:你能在开发环境中运行 FoamFix 吗?
  • 答:可以,但你必须手动使用 BON2 或类似工具对其进行反混淆。

Bug 报告

请先尝试在不安装 FoamFix 的情况下复现该 bug——如果在没有 FoamFix 的情况下仍然存在,那很可能不是 FoamFix 的问题。

当你报告一个仅在安装 FoamFix 后出现的 bug 时,

  • 请仅在这里报告!这样有助于我跟踪现有问题。
  • 特别是,请不要向其他模组开发者报告!如果我确定问题是由其他模组导致的,我会尽力自行联系其他作者并与他们讨论修复方案;不过,不必要的错误报告会带来一些困扰。

其他提示

(请注意,这部分内容之后会重写为更全面的优化指南。)

 

  • 在 forge.cfg 中启用 alwaysSetupTerrainOffThread。(自 0.6.3 版本起,FoamFix 会在新实例中自动为你执行此操作!)
  • 如果你遇到了与“幽灵区块加载”相关的卡顿(大约每 30 秒出现一次明显的卡顿峰值),可以通过增大 forgeChunkLoading.cfg 中 dormantChunkCacheSize 的值来部分缓解这一问题。
  • 对于某些 GPU/驱动配置(尤其是部分 AMD 驱动与显卡组合),禁用 mipmap(将 Mipmap Levels 设置为 0)可以显著提高 FPS。这是因为需要更新的纹理数量增加时,动画纹理更新造成的卡顿也会明显加剧,而需要更新的纹理数量会随 mipmap 等级数量线性增长。
  • 在专用服务器上,将 max-tick-time=0 可以解决与“java.lang.Error: Watching server”相关的崩溃。我还在继续调查发生这种情况的原因!

常见崩溃

  • 在 FoamFix 0.9.6 及更高版本中出现 java.lang.NoSuchMethodError: net.minecraftforge.common.model.TRSRTransformation.isIdentity()Z —— 将 Forge 更新至最新推荐版本,或将 FoamFix 降级至 0.9.5。
  • java.lang.IllegalArgumentException: Cannot set property […], it is not an allowed value ——导致此错误的代码路径与原版行为非常相似,不使用 FoamFix 时也应该会出现同样的崩溃。请确认在不使用 FoamFix 的情况下无法复现该问题。
  • 如果你在使用 SpongeForge 的同时使用 FoamFix(请注意,我不提供相关支持),与 MixinMutableBlockPos 相关的常见崩溃可以通过在 config/foamfix.cfg 中禁用 coremod.optimizedBlockPos 来修复。

支持

  • 错误报告请仅使用 GitHub issue 跟踪器。这样更便于跟踪问题。
  • 请注意,“不支持”并不意味着“完全无法运行”——更确切地说,这意味着可能会出现问题,并且由于各种原因,我可能无法为你提供帮助。请谨慎使用!

 

以下模组不受支持,我无法保证能够令人满意地修复与它们之间的兼容问题:

    • FastCraft 2。其许可证限制非常严格,如果不依赖开发者本人提供信息,几乎无法进行调试。
    • NotEnoughIDs。自 2017 年 9 月起就无人维护。
    • OptiFine。其许可证限制非常严格,如果不依赖开发者本人提供信息,几乎无法进行调试。
    • Sponge。我们对引擎所做的一些修改会产生冲突。(请注意,即使服务器端安装了 Sponge,只要在连接 Sponge 服务器时使用客户端的 FoamFix,仍然是受支持的!)
    • TexFix。
    • 大多数其他闭源优化模组。如果我无法查看源代码,我通常不会着手修复相关问题。

 

评论

登录后评论和评分

asiekierka 的其他作品

查看全部 →