我的世界:一篇文章告訴你,為什么區(qū)塊循環(huán),鉆石無限
在Minecraft這款游戲中,有“種子”這個說法,而它的存在也可以說是這個游戲的特色之一,畢竟一個其他游戲可不能隨機生成世界,就算其他游戲也能做到游戲的隨機性,但是那串名為種子的數(shù)字不是什么游戲都可以做到的,在MC中因為一點小問題導(dǎo)致的游戲出現(xiàn)的不過bug,導(dǎo)致了有很多種子都崩壞了。

雖說種子被崩壞了,但是mojang發(fā)話了,什么bug?這叫特性。所以mojang對這款游戲眾多特性拿捏得穩(wěn)穩(wěn)的,雖然它一直在刷新著我們對于MC的認(rèn)知,但不就是個特性嘛,MC玩家什么沒有見過?
但是本期文章就是給大家所填個坑,畢竟挖出來的坑總是要填的,那么究竟MC發(fā)生了什么才導(dǎo)致種子的崩壞呢?
什么是種子
在此之前小黑先和大家說說什么是種子,在游戲準(zhǔn)備生成的時候,就會見一個算法給調(diào)出來String.hashCode(),而這個代碼就是控制游戲中的種子生存的,它會在游戲中生成一個偽隨機數(shù)的出現(xiàn),那么就是這個值決定了一個世界是什么樣子的,但因為偽隨機數(shù)算法的性質(zhì),所以就導(dǎo)致了算法的數(shù)值(種子)是相同的,那么最后的結(jié)果也就是相同的,這就是種子的意義,我們就可以使用想同的種子來生成多個相同的世界。

大白話:意思就是1+1等于2,這是一份答案,數(shù)學(xué)界上數(shù)學(xué)問題很多,那么我們就可以在復(fù)制一份進(jìn)行游玩,答案始終是在哪里的,我們只是那其中的一份答案進(jìn)行抄襲而已。
但是這會因為版本的不同,所以就導(dǎo)致種子使用不了,想當(dāng)于人教版和蘇教版是不一樣的,所以種子也就不一樣。
崩潰種子的誕生
那么種子是什么我們理解了,那崩潰種子問題是出現(xiàn)在哪個環(huán)節(jié)導(dǎo)致的呢?

而這就要用到下面的這個代碼了,我們利用了String.hashCode()來控制的種子的生成,隨機種子是什么已經(jīng)確定了,但是生成世界的時候就出現(xiàn)問題了。這個還是Minecraft系統(tǒng)就會采取第二個代碼來生成世界MapGenBase.java(),而它就確定了該種子中的地形是否和這個種子能不能對上。

但是有部分種子在計算的時候,出現(xiàn)了返回值為零的問題而正常情況下為1,所以就導(dǎo)致了區(qū)塊在進(jìn)行數(shù)學(xué)計算的時候x的都是零,而不是一。那么這樣做的后果就是在某一條X軸的區(qū)塊上面的結(jié)果都是零,這就導(dǎo)致了我們所看見的重復(fù)局面。
所以大家學(xué)廢了嗎“手動滑稽”。
好啦,本期文章給大家講述了一下種子的原理和崩壞種子是怎么來到,謝謝大家的支持,我們下篇文章再會。
