ecyber
本帖最后由 ecyber 于 2022-8-8 10:07 编辑

今天查看自己的存档种子(Java)时,意外发现了末地地形的生成有一定的规律,于是便简单研究了一下......

虚空(蓝色部分)似乎以一种条纹的形状分布,无论是什么种子,都会有这种情况发生

而且这种情况自可追溯的1.9以来便存在了


在极大尺度下,地形分布呈现条纹状



另一个种子的末地图片(1.9),1.9版本不明显但还是能看出规律

经过观察,这种独特的形状来源于区块的无限复制

在这里,"区块"大小为惊人的2048x2048,也可以看做16x16的区块每"4096倍的根号2"格发生一次复制

在末地中,所有区块的地形似乎在以45°夹角间隔复制

在以2048(2^11)格为单位的尺度下,区块的复制更加明显(这也是该规律可测的最小单位)


(举例)同色框中地形几乎相同
细微差异从何而来?


如果足够细心,可能会发现复制的两区块间有着极其细微的差异。

但是要知道,在二维上看,末地外岛只是一大堆圆形小岛组合成的罢了。

这些小圆岛有不同的大小,其生成本质上可以看做以一个中心生成点生成一个圆形范围。

不难看出,复制区块间各个岛屿的中心生成点是完全一致的,只不过岛屿大小不一样(这也说明中心点的生成与大小的确定用的不是一套随机)。

因此看起来"复制了但没有完全复制"


圆形岛屿组合示例
为何会出现复制情况?

这里我们抛开岛屿大小不谈,从上面一段各位应该可以联想到,区块复制的本质就是岛屿"生成点"的复制。

众所周知,MC的地形生成采用了一种叫"柏林噪声"的生成算法,但这个屑UP又不是很懂这些方面(绝对不是懒得看awa)

只知道一堆乱七八糟的函数又套又叠再加点随便一个数就可以生成一个二维地形模板了。

在末地,该算法很可能被用于生成岛屿的生成点,群系范围以及y轴上的岛屿结构。

因为函数都是人定的,所以不可能完全的随机,由此屑UP经过长达114514毫秒的思考提出了一些可能导致地形复制情况发生的原因......


有关柏林噪声的百度百科部分截图   来源:百度百科

可能导致复制的原因...

猜想1:算法中的叠加函数缺少随机性,简称麻将数学太拉了

猜想2:柏林噪声的随机不彳亍,在小范围内看起来像随机,可一旦大范围看就原形毕露了

猜想3:本来MC地形就不是完全随机(混乱)的,存在一定规律,主世界和下界因为群系繁多,各种群系叠加起来,看起来就像真的随机一样,但末地群系单一,算法也就单一,从而缺乏随机性

作者:天啊_就离谱 https://www.bilibili.com/read/cv17742954#reply124409191824 出处:bilibili
已授权转载

本人观点
末地可能是MOJANG随便搞的,所以缺乏单一的随机性,在服务器末地跑图总是找不到末地城亦是常态




VoxBurner
不明白 因为我不会JAVA :)

电磁步兵
看半天发现是转载
转载贴子要写自己的看法哦

执灯守星河
不明觉厉了属于是

124076780
好用心啊

49002196
这种地图居然有人研究,可惜我不太懂java

先导了再说
VoxBurner 发表于 2022-8-8 09:30
不明白 因为我不会JAVA :)

美国富哥们 我也不会JAVA 但是不影响我看帖

q2158567612
楼主还是用心了的 感谢分享

听风的雨
可能mojang设定的吧

cmd1152
总感觉这个内容好像在哪看过...
(看3楼才发现是转载..........)

lsy0429
大佬 给跪了 我就缺乏你这种较真的精神 得过且过

jasonxue1
用心了!!

‮gnep先尸
省流:mj的屎山代码

BOXXo
虽然看不懂但是我大受震撼

我从来不Fap
太高深了 高技术力诶

鲁鲁修cc
感谢分享,一直有末地地形近似的感觉

mengerlvyang321
研究随机生成的还真多啊哈哈

小鼠哥Ti-Mi
虽然似乎我好像看不懂

1831049020
居然有人研究,可惜我不太懂java

ecyber
1831049020 发表于 2022-8-18 12:39
居然有人研究,可惜我不太懂java

观察小地图就行