Fast Noise

Fast Noise

这会优化噪声生成。

性能

Keep Android Open | Contact Regulators to stop Google's lockdown of Android

Fast Noise 是一个现代化的优化模组,旨在提升世界生成速度。我会定期将模组更新至最新的 Minecraft 版本,为其带来改进,并提供稳定的版本发布。

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

我可以将自定义世界生成模组与此模组一起使用吗? 可以,我会尽力保持模组兼容性,并且仅修改安全的代码。可能会影响模组兼容性的特定优化在默认情况下是禁用的。

FastNoise 是 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 基准测试
使用的模组: FastNoise 1.0.37+26.2 on 26.2
ChunkPos: -16,-16 -> 16,16
End ChunkPos: 112,112 -> 144,144
区块数: 1089
使用的模组: c2me-fabric-mc26.2-0.4.2-alpha.0.9.jar

基准测试                  (世界名称)  模式  次数      得分       误差   单位
BiomesBenchmark.biomegen    主世界  avgt    5   3058.005 ± 256.587  ms/op
BiomesBenchmark.biomegen       地狱  avgt    5    188.188 ±   3.156  ms/op
BiomesBenchmark.biomegen       末地  avgt    5     31.560 ±   4.200  ms/op
NoiseBenchmark.noisegen     主世界  avgt    5  12332.480 ± 364.223  ms/op
NoiseBenchmark.noisegen        地狱  avgt    5   2447.385 ±  20.773  ms/op
NoiseBenchmark.noisegen        末地  avgt    5   6420.598 ± 195.649  ms/op
SurfaceBenchmark.surface    主世界  avgt    5  14948.653 ± 333.900  ms/op
SurfaceBenchmark.surface       地狱  avgt    5   9330.611 ± 243.701  ms/op
SurfaceBenchmark.surface       末地  avgt    5   3485.872 ±   8.225  ms/op

基准测试                  (世界名称)  模式  次数      得分       误差   单位
BiomesBenchmark.biomegen    主世界  avgt    5   2980.699 ±  98.824  ms/op
BiomesBenchmark.biomegen       地狱  avgt    5    177.827 ±   2.815  ms/op
BiomesBenchmark.biomegen       末地  avgt    5     14.990 ±   0.575  ms/op
NoiseBenchmark.noisegen     主世界  avgt    5   9419.623 ± 317.746  ms/op
NoiseBenchmark.noisegen        地狱  avgt    5   1253.599 ±  15.977  ms/op
NoiseBenchmark.noisegen        末地  avgt    5   5424.879 ±  81.860  ms/op
SurfaceBenchmark.surface    主世界  avgt    5  10490.488 ± 901.258  ms/op
SurfaceBenchmark.surface       地狱  avgt    5   3361.448 ±  53.809  ms/op
SurfaceBenchmark.surface       末地  avgt    5      1.723 ±   0.289  ms/op

加速倍率:

阶段/维度 主世界 地狱 末地
生物群系 1.025倍 1.058倍 2.105倍
噪声 1.309倍 1.952倍 1.183倍
地表 1.424倍 2.775倍 2023.14倍
旧版 Jmh 基准测试
使用的模组: Fast Noise 1.0.15+26.1 on 26.1 snapshot-6
ChunkPos: -16,-16 -> 16,16
End ChunkPos: 112,112 -> 144,144
区块数: 1089
使用的模组: (c2me)

带模组:
基准测试                  (世界名称)  模式  次数     得分     误差   单位
BiomesBenchmark.biomegen         末地  avgt    5    11.786 ±  0.168  ms/op
BiomesBenchmark.biomegen       地狱  avgt    5   174.833 ±  1.166  ms/op
BiomesBenchmark.biomegen    主世界  avgt    5  2401.797 ± 31.629  ms/op
NoiseBenchmark.noisegen          末地  avgt    5  3052.242 ± 12.358  ms/op
NoiseBenchmark.noisegen        地狱  avgt    5  1039.086 ±  6.467  ms/op
NoiseBenchmark.noisegen     主世界  avgt    5  8441.811 ± 41.396  ms/op

仅带 c2me:
基准测试                  (世界名称)  模式  次数      得分     误差   单位
BiomesBenchmark.biomegen         末地  avgt    5     26.058 ±  0.245  ms/op
BiomesBenchmark.biomegen       地狱  avgt    5    185.957 ±  2.203  ms/op
BiomesBenchmark.biomegen    主世界  avgt    5   2464.937 ± 29.007  ms/op
NoiseBenchmark.noisegen          末地  avgt    5   3925.059 ± 14.292  ms/op
NoiseBenchmark.noisegen        地狱  avgt    5   1920.705 ±  9.864  ms/op
NoiseBenchmark.noisegen     主世界  avgt    5  11552.674 ± 54.112  ms/op

原版:
基准测试                  (世界名称)  模式  次数      得分     误差   单位
BiomesBenchmark.biomegen         末地  avgt    5     27.051 ±  0.118  ms/op
BiomesBenchmark.biomegen       地狱  avgt    5    239.634 ±  1.702  ms/op
BiomesBenchmark.biomegen    主世界  avgt    5   4589.322 ± 80.331  ms/op
NoiseBenchmark.noisegen          末地  avgt    5   4477.113 ± 36.133  ms/op
NoiseBenchmark.noisegen        地狱  avgt    5   1951.438 ±  5.748  ms/op
NoiseBenchmark.noisegen     主世界  avgt    5  14249.612 ± 57.388  ms/op

原版:
基准测试                  (世界名称)  模式  次数     得分     误差   单位
SurfaceBenchmark.surface    主世界  avgt    5  5982.828 ± 17.992  ms/op
SurfaceBenchmark.surface       地狱  avgt    5  2677.115 ±  9.293  ms/op
SurfaceBenchmark.surface         末地  avgt    5   924.604 ±  5.376  ms/op

带模组:
基准测试                  (世界名称)  模式  次数     得分      误差   单位
SurfaceBenchmark.surface    主世界  avgt    5  4820.672 ±  24.669  ms/op
SurfaceBenchmark.surface       地狱  avgt    5  1914.289 ± 644.099  ms/op
SurfaceBenchmark.surface         末地  avgt    5     0.014 ±   0.003  ms/op

加速倍率:
主世界: 生物群系: 1.026倍 噪声: 1.368倍 地表: 1.241倍
地狱: 生物群系: 1.063倍 噪声: 1.847倍 地表: 1.398倍
末地: 生物群系: 2.21倍 噪声: 1.285倍 地表: 66357倍

这些基准测试可能存在一些不准确之处。

社交平台

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

常见问题与帮助

常见问题

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

问 - 有计划向下移植吗?
答 - 没有向下移植的计划,目前的向下移植是一次性的。

问 - 我还需要什么其他模组/前置?
答 - 不需要任何前置。

问 - 会有 Forge 向下移植到 1.19.x 1.20.x 吗?
答 - 没有计划。

问 - 某个模组在 Fast Noise 下崩溃或生成不正确?
答 - 请在 Codeberg 或我的社交平台报告该问题。

不兼容的模组

  • Moonrise 不兼容,因为它大幅改变了 Minecraft 内部机制。
  • Noisium 不兼容,因为 Fast Noise 旨在替代 Noisium。
  • Anti-Xray 目前不兼容,因为它需要将额外数据放入 Minecraft 的方块存储中,这会破坏 FastNoise。

鸣谢

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

Reverie Projects

考虑加入 Reverie Projects 以获取开发预览和更新!加入后,你可以:

  • 为许多优秀的项目获得安装帮助和技术支持。
  • 获取最新的开发动态。
  • 与我们的团队交流合作。
  • 与社区的其他成员一起放松畅聊!