跳到正文

Fast Noise

原版世界生成优化模组

收藏

截图

介绍

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

保持 Android 开放 | 联系监管机构,阻止 Google 对 Android 的封锁

Fast Noise 是一个现代化的优化模组,旨在缩短世界生成时间。我会定期将该模组更新到最新的 Minecraft 版本,持续改进模组,并提供稳定版本。

这个模组会改变世界生成吗? 该模组保持原版一致性,包括与任何数据包的兼容性。不过请注意,原版存在非确定性。

我可以将自定义世界生成模组与它一起使用吗? 可以,我会尽力保持模组兼容性,并且只修改安全的代码。可能影响模组兼容性的特定优化默认处于禁用状态。

Fast Noise 是 Reverie Projects 的一部分,也欢迎看看我们的其他模组。

Available on codeberg Available on curseforge Available on modrinth Support me on Ko-Fi

这个模组是如何工作的?

Fast Noise 会优化在世界生成期间将方块和生物群系数据存储到区块中的过程。

技术细节

Fast Noise 替换了 NoiseChunkGenerator 中的 populateNoise、populateBiomes,以及 SurfaceBuilder 中的 surfaceBuilder。

Fast Noise 通过对世界生成的工作方式做出多项重要假设来优化世界生成。通过用更快速、更紧凑的计算替换原版用于世界存储的通用调试代码,Fast Noise 实现了更高的处理吞吐量。

实现这些优化所使用的一些关键方法包括:减少内存分配、避免调色板扩容、延迟/打包方块计数、预先计算数据、
缓存方块状态信息等。

它有多快?

在最新版本的 1.21.11 中,主世界的整体世界生成速度提升约 10-18%。
下界和末地的提升幅度更高
这里有一个 Jmh 基准测试软件。

Chunky 基准测试

使用模组,12 个线程

  [12:39:32] [Server thread/INFO]: [Chunky] Task finished for minecraft:overworld. Processed: 16641 chunks (100.00%), Total time: 0:01:37

不使用模组

  [12:43:08] [Server thread/INFO]: [Chunky] Task finished for minecraft:overworld. Processed: 16641 chunks (100.00%), Total time: 0:01:47

使用模组,4 个线程

  [12:56:23] [Server thread/INFO]: [Chunky] Task finished for minecraft:overworld. Processed: 9409 chunks (100.00%), Total time: 0:01:10

不使用模组

  [13:01:11] [Server thread/INFO]: [Chunky] Task finished for minecraft:overworld. Processed: 9409 chunks (100.00%), Total time: 0:01:23

更高距离
无模组

  [13:11:01] [Server thread/INFO]: [Chunky] Task finished for minecraft:overworld. Processed: 19881 chunks (100.00%), Total time: 0:02:43

有模组

  [13:16:03] [Server thread/INFO]: [Chunky] Task finished for minecraft:overworld. Processed: 19881 chunks (100.00%), Total time: 0:02:21
Jmh 基准测试
Mods used: FastNoise 1.0.37+26.2 on 26.2
ChunkPos: -16,-16 -> 16,16
End ChunkPos: 112,112 -> 144,144
Chunks: 1089
Mods used: c2me-fabric-mc26.2-0.4.2-alpha.0.9.jar

Benchmark                 (worldName)  Mode  Cnt      Score     Error  Units
BiomesBenchmark.biomegen    overworld  avgt    5   3058.005 ± 256.587  ms/op
BiomesBenchmark.biomegen       nether  avgt    5    188.188 ±   3.156  ms/op
BiomesBenchmark.biomegen          end  avgt    5     31.560 ±   4.200  ms/op
NoiseBenchmark.noisegen     overworld  avgt    5  12332.480 ± 364.223  ms/op
NoiseBenchmark.noisegen        nether  avgt    5   2447.385 ±  20.773  ms/op
NoiseBenchmark.noisegen           end  avgt    5   6420.598 ± 195.649  ms/op
SurfaceBenchmark.surface    overworld  avgt    5  14948.653 ± 333.900  ms/op
SurfaceBenchmark.surface       nether  avgt    5   9330.611 ± 243.701  ms/op
SurfaceBenchmark.surface          end  avgt    5   3485.872 ±   8.225  ms/op

Benchmark                 (worldName)  Mode  Cnt      Score     Error  Units
BiomesBenchmark.biomegen    overworld  avgt    5   2980.699 ±  98.824  ms/op
BiomesBenchmark.biomegen       nether  avgt    5    177.827 ±   2.815  ms/op
BiomesBenchmark.biomegen          end  avgt    5     14.990 ±   0.575  ms/op
NoiseBenchmark.noisegen     overworld  avgt    5   9419.623 ± 317.746  ms/op
NoiseBenchmark.noisegen        nether  avgt    5   1253.599 ±  15.977  ms/op
NoiseBenchmark.noisegen           end  avgt    5   5424.879 ±  81.860  ms/op
SurfaceBenchmark.surface    overworld  avgt    5  10490.488 ± 901.258  ms/op
SurfaceBenchmark.surface       nether  avgt    5   3361.448 ±  53.809  ms/op
SurfaceBenchmark.surface          end  avgt    5      1.723 ±   0.289  ms/op

加速比:

| 阶段/维度 | 主世界 | 下界 | 末地 |
|—————–|———–|——–|———|
| 生物群系 | 1.025x | 1.058x | 2.105x |
| 噪声 | 1.309x | 1.952x | 1.183x |
| 表面 | 1.424x | 2.775x | 2023.14x|

旧版 Jmh 基准测试
Mods used: Fast Noise 1.0.15+26.1 on 26.1 snapshot-6
ChunkPos: -16,-16 -> 16,16
End ChunkPos: 112,112 -> 144,144
Chunks: 1089
Mods used: (c2me)

With mod:
Benchmark                 (worldName)  Mode  Cnt     Score    Error  Units
BiomesBenchmark.biomegen          end  avgt    5    11.786 ±  0.168  ms/op
BiomesBenchmark.biomegen       nether  avgt    5   174.833 ±  1.166  ms/op
BiomesBenchmark.biomegen    overworld  avgt    5  2401.797 ± 31.629  ms/op
NoiseBenchmark.noisegen           end  avgt    5  3052.242 ± 12.358  ms/op
NoiseBenchmark.noisegen        nether  avgt    5  1039.086 ±  6.467  ms/op
NoiseBenchmark.noisegen     overworld  avgt    5  8441.811 ± 41.396  ms/op

With only c2me:
Benchmark                 (worldName)  Mode  Cnt      Score    Error  Units
BiomesBenchmark.biomegen          end  avgt    5     26.058 ±  0.245  ms/op
BiomesBenchmark.biomegen       nether  avgt    5    185.957 ±  2.203  ms/op
BiomesBenchmark.biomegen    overworld  avgt    5   2464.937 ± 29.007  ms/op
NoiseBenchmark.noisegen           end  avgt    5   3925.059 ± 14.292  ms/op
NoiseBenchmark.noisegen        nether  avgt    5   1920.705 ±  9.864  ms/op
NoiseBenchmark.noisegen     overworld  avgt    5  11552.674 ± 54.112  ms/op

Vanilla:
Benchmark                 (worldName)  Mode  Cnt      Score    Error  Units
BiomesBenchmark.biomegen          end  avgt    5     27.051 ±  0.118  ms/op
BiomesBenchmark.biomegen       nether  avgt    5    239.634 ±  1.702  ms/op
BiomesBenchmark.biomegen    overworld  avgt    5   4589.322 ± 80.331  ms/op
NoiseBenchmark.noisegen           end  avgt    5   4477.113 ± 36.133  ms/op
NoiseBenchmark.noisegen        nether  avgt    5   1951.438 ±  5.748  ms/op
NoiseBenchmark.noisegen     overworld  avgt    5  14249.612 ± 57.388  ms/op

Vanilla:
Benchmark                 (worldName)  Mode  Cnt     Score    Error  Units
SurfaceBenchmark.surface    overworld  avgt    5  5982.828 ± 17.992  ms/op
SurfaceBenchmark.surface       nether  avgt    5  2677.115 ±  9.293  ms/op
SurfaceBenchmark.surface          end  avgt    5   924.604 ±  5.376  ms/op

With Mod:
Benchmark                 (worldName)  Mode  Cnt     Score     Error  Units
SurfaceBenchmark.surface    overworld  avgt    5  4820.672 ±  24.669  ms/op
SurfaceBenchmark.surface       nether  avgt    5  1914.289 ± 644.099  ms/op
SurfaceBenchmark.surface          end  avgt    5     0.014 ±   0.003  ms/op

Speedup
Overworld: Biome: 1.026x Noise: 1.368x Surface: 1.241x
Nether: Biome: 1.063x Noise: 1.847x Surface: 1.398x
End: Biome: 2.21x Noise: 1.285x Surface: 66357x

基准测试可能存在一些误差。

社交平台

Chat with us on discord Chat with me on mastodon Chat with us on Gitter

常见问题与帮助

常见问题

问:这个模组将支持哪些 Minecraft 版本?
答:我会尽量支持最新的 Minecraft 版本。

问:有计划进行反向移植吗?
答:没有反向移植计划,目前的反向移植只是一次性的。

问:还需要哪些其他模组/依赖?
答:不需要任何依赖。

问:会为 1.19.x 和 1.20.x 提供 Forge 反向移植版吗?
答:没有计划。

问:XYZ 模组崩溃,或者与 Fast Noise 一起使用时生成结果不正确怎么办?
答:请在 Codeberg 或我的社交平台上报告该问题。

不兼容的模组

Moonrise 不兼容,因为它会大幅修改 Minecraft 的内部机制。
Noisium 不兼容,因为 Fast Noise 旨在替代 Noisium。
Anti-Xray 目前不兼容,因为它需要在 Minecraft 的方块存储中写入额外数据,这会导致 Fast Noise 出现问题。

致谢

  • 感谢 Stevenplays 开发 Noisium 模组。我是在尝试将 Noisium 移植到最新版本 Minecraft 时开始开发 Fast Noise 的。
  • 感谢 Ishland 在模组开发、modern-yarn 和 neo-loom 方面提供帮助。

Reverie Projects

欢迎加入 Reverie Projects,获取开发过程中的抢先预览和最新动态!加入后,你可以:

  • 为许多优秀项目获取安装帮助和技术支持
  • 获取最新的开发进展
  • 与我们的团队交流并开展合作
  • 与社区中的其他成员一起交流休闲!

评论

登录后评论和评分

Reverie Projects 的其他作品

查看全部 →