口吃修复

口吃修复

减少生成新区块时的卡顿

优化

StutterFix

StutterFix 是一个允许你配置游戏主线程的模组,让你能够控制卡顿。默认情况下,该模组已经附带了一个近似配置以减少卡顿。

新版本 0.1.8 允许你配置线程,我在菜单中添加了一个新选项。

选项菜单

有五个选项可供配置,其中 N 是你的处理器支持的线程数:

  • 工作线程数
    原版默认为 N - 1,StutterFix 默认为 N - 5,这是运行以执行诸如生成区块等任务的线程数。该值越小,CPU 开销越低,从而减少卡顿,但区块生成速度会变慢。

  • 优先级截止点
    表示工作线程优先级的截止点。该值越高,线程的前半部分将以正常优先级运行,而后半部分将以最低优先级运行。该值必须小于工作线程数才能有截止点,否则所有线程都将以正常优先级运行。最低优先级的线程有助于减少卡顿。

  • 渲染线程优先级
    渲染线程是客户端运行的地方,例如玩家、声音、输入和渲染。

  • 服务器线程优先级
    在单人游戏模式中,游戏会启动集成服务器来运行整个世界,例如刻(tick)、实体以及初始化区块生成(这将在工作线程中执行)。此选项仅在单人模式下进入世界时出现。

  • 移除 Yield()
    渲染线程在每次循环中都有一个调用,称为 yield(),其功能是通知“调度器”当前线程愿意放弃当前对处理器的使用以让给其他线程。移除 yield() 可以使帧率更加稳定。

工作线程数优先级截止点设置在多人游戏中效果甚微,因为世界是由服务器生成的,因此客户端不会因为世界生成而产生卡顿问题。

禁用 GUI - 版本 >= -0.2.3

在 .minecraft 目录中的 config 文件夹里,有一个 stutterfix-config.json 配置文件,其中有 "hide_gui" 选项,将其设置为 true 即可禁用游戏界面,如果想重新启用界面,将其设置为 false。值得注意的是,你需要用更新后的模组启动游戏至少一次,才能在文件中生成该配置。

我推荐的其他模组

我建议将此模组与 Sodium 模组和 Concurrent Chunk Management Engine (C2ME) 一起使用。

更新日志

在 0.1.5 及更早版本中,所有这些工作线程都具有最低优先级,由于区块生成的响应速度较慢,我决定发布 0.1.6 版本,将工作线程设置为正常优先级。

在 0.1.7 版本中,我有了一个想法:让前一半工作线程以正常优先级运行,后一半以最低优先级运行,以便更好地减少卡顿并在生成区块时获得更好的响应速度。

在 0.1.8 版本中,我在菜单中创建了配置线程的选项,并且移除了对 Thread.yield() 的移除操作,因为它与诸如 VulkanMod 等其他模组存在冲突。

在 0.1.9 版本中,添加了移除 yield() 的选项,如果你使用 VulkanMod,此选项将不会出现在菜单中。工具提示也得到了改进。

在 0.2.0 版本中,对 GUI 进行了更改,以解决与某些模组(如 bedrockify)的兼容性问题。

警告

该模组不会影响因垃圾收集器而出现的卡顿问题,我通过使用 -XX:+UseShenandoahGC 并在 JVM 参数中分配更多内存来减少该问题,请自行搜索有关 Minecraft 的 JVM 参数以获取更多信息。

如果你遇到任何问题,请在 Github 上报告该问题。