「我叫Minecraft」mc史上最严重的bug泄露,13万个种子遭到破坏!,我的世界:4年前


「我叫Minecraft」mc史上最严重的bug泄露,13万个种子遭到破坏!,我的世界:4年前
文章图片
?我们抛开投票不谈 , 一个你可能不知道的情况是:Minecraft的洞穴实际早已经破败不堪 , 4年前就被爆出一个严重的BUG , 导致《我的世界》一共超过13万个种子的洞穴遭受到了严重的破坏!
01
这要从一个著名的BUG说起:MC-111378;
「我叫Minecraft」mc史上最严重的bug泄露,13万个种子遭到破坏!,我的世界:4年前
文章图片
2016年的4月份 , 一位叫做ErikMartin的玩家提交了一个并不起眼的BUG报告 , 该报告的编号被命名为MC-111378 , 也就是第111378个被发现的BUG 。 当然 , 这对于《我的世界》来说 , 并不是什么大事 , 因为BUG对于mc来说真的是稀疏平常!
然而令人没想到的是!在随后的几天里 , 这个BUG迅速引起了包括Mojang在内 , 全世界玩家的广泛关注!因为人们惊讶地发现在Minecraft的地下出现了无数无限循环的地形结构!这种无限循环 , 囊括了洞穴、地牢、废弃矿井等等结构 。 只要处于循环的坐标轴上 , 无论什么结构都将被无限复制!
最奇怪的是 , 在Minecraft地面上完全正常 , 但是地下却完全的崩坏!
02
洞穴BUG是如何产生的?
「我叫Minecraft」mc史上最严重的bug泄露,13万个种子遭到破坏!,我的世界:4年前
文章图片
【「我叫Minecraft」mc史上最严重的bug泄露,13万个种子遭到破坏!,我的世界:4年前】这要从《我的世界》地形的诞生说起 , Minecraft在世界生成之初 , 会有一个String.hashCode()的函数 , 它用来控制种子的生成 。 即当我们使用一个随机种子创建世界时 , 这个函数就会执行并随机在42.9亿颗种子里随机挑一个 , 用来诞生世界 。
种子确定后 , Minecraft便开始用第二个函数MapGenBase.java()来生成世界 , 例如洞穴、遗迹等等结构;关键问题就出现在了这第二步 。
由于部分种子在函数计算中 , 出现了返回值为0的情况(正常应该为1) , 这导致每个区块在进行数学计算时都×0 , 于是某条X轴线上所有区块输出的结果全都是0 , 最终造成了无限重复的旷世奇观!
03
一颗“无限循环”种子引发的骚动:107038380838084
「我叫Minecraft」mc史上最严重的bug泄露,13万个种子遭到破坏!,我的世界:4年前
文章图片
于是很快 , SEED:107038380838084这颗地形生成的种子 , 迅速成为了《我的世界》最受欢迎的种子之一 , 无数的玩家前往驻足观看这罕见奇景!有矿洞无限重复的 , 有矿井无限重复的 , 也有地牢无限重复的 。 但凡坐落在这条返回值为“0”的坐标上 , 所有结构无一幸免!
(PS:1年前我在介绍这两个种子的时候 , 也是这么认为 , 还是太年轻啊!)
04
数学大神计算出:超13万颗种子受到影响!
但很快 , 一个JAVA界的数学大神 , 经过周密的数据计算 , 得出一个惊人的结论:《我的世界》并不是只有这两个种子会造成“无限重复”!
换句话说 , Minecraft当前的地下结构包括“洞穴”的生成方案 , 存在有13万个BUG 。
所以可能很多《我的世界》玩家都在自己不知道的情况下 , 遇见了这样的一个BUG , 但因为生存的关系 , 没法像旁观模式一样观察到这“无限重复”的地下世界 。 也许现在的你打开Minecraft , 在出生点附近开启旁观 , 潜入地下 。 可能你当前的生存世界 , 就是一个BUG种子!
「我叫Minecraft」mc史上最严重的bug泄露,13万个种子遭到破坏!,我的世界:4年前
文章图片
所以 , 基于此种极为“严重”的BUG , Mojang长达4年依旧没有修复MC-111378的情况下 , 你认为《我的世界》洞穴更新在1.17更新的概率有多大呢?
(PS:本文涉及JAVA函数的观点 , 因本人并非专业的JAVA程序员 , 在咨询了学习JAVA的朋友后也是听得云里雾里的 , 所以这里尽量用大家可以理解的方式阐述和解读 。 )
?


    推荐阅读