最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

48bit篩種和四聯(lián)結(jié)構(gòu)是什么?Cubiomes-viewer教程2

2023-07-06 03:41 作者:zfq1041  | 我要投稿

零、承上啟下

之前賣了個關(guān)子,關(guān)于48bit篩種和四聯(lián)結(jié)構(gòu)的原理和使用方法沒有講,這里補充一下。在此之前,讓我們先從Minecraft中種子的原理說起。

一、什么是種子?

Minecraft中世界的生成是是依賴一個被稱作柏林噪聲的算法生成隨機數(shù),它決定了世界的生成。它本質(zhì)上是一個種子隨機發(fā)生器。它需要一個整數(shù)作為參數(shù),然后根據(jù)這個參數(shù)返回一個隨機數(shù)。如果你兩次都傳同一個參數(shù)進(jìn)來,它就會產(chǎn)生兩次相同的數(shù)(因此柏林噪聲實際上是偽隨機)。而世界種子,就是柏林噪聲的初始參數(shù)。如果我們輸入相同的世界種子,正常情況下生成的世界也是相同的。

當(dāng)世界生成算法更新(例如加入刪除生物群系,或者像1.7 1.18這樣的大改)后,相同的種子就不會生成相同的地形。這也是某些不同的游戲版本中,相同的種子(可能)無法產(chǎn)生相同的地形的原因。

二、種子的Top 16 bits和Lower 48 bits分別是什么,有什么用?

在Java版中種子一共2^64個,也就是一個64位的整數(shù)類型可以表示的最多數(shù)量(或者你也可以理解成任意一個種子都可以儲存在一個64位的整數(shù)類型中)。一個64位的整數(shù)類型也就是由64個“0”和“1”組成的數(shù)。舉個例子:

十進(jìn)制 -> -1041999999999999999

二進(jìn)制 -> 1111000110001010000100101000010101010000000010110000000000000001

種子的Top 16 bits和Lower 48 bits(高16二進(jìn)制位和低48二進(jìn)制位)實際上分別指的就是種子二進(jìn)制64位的前16位和后48位,一般來說為了方便使用十六進(jìn)制,此時前4位即為Top 16 bits后12位則為Lower 48 bits。再舉個例子舉個例子:

十六進(jìn)制 -> F18A 1285500B0001

二進(jìn)制 -> 1111000110001010 000100101000010101010000000010110000000000000001

三、姐妹種,結(jié)構(gòu)種是什么,低48位篩種又是怎么一回事?

在Minecraft使用種子生成世界中有個比較特別的現(xiàn)象:

主世界所有結(jié)構(gòu)(要塞除外)可能生成的位置和地獄大部分東西的生成只由這個種子的低48二進(jìn)制位決定。部分結(jié)構(gòu)例如女巫小屋的可能生成的位置更加簡單,只由種子的低20二進(jìn)制位決定。剩下種子的高16二進(jìn)制位與主世界的群系生成有關(guān),也就確定了低48二進(jìn)制位得到的可能生成的位置實際上能否生成指定的結(jié)構(gòu)。事實上種子的低48二進(jìn)制位還和結(jié)構(gòu)箱子生成等雜七雜八的東西有關(guān)。

所謂結(jié)構(gòu)種(Structure Seed),就是決定主世界結(jié)構(gòu)可能生成的位置的低48位所代表的種子。

例如,以下種子都擁有相同的結(jié)構(gòu)種,即0x29F20C01670A:


你好

?

同時,這些具有相同的結(jié)構(gòu)種的種子,互為姐妹種(Sister Seed)。

姐妹種通俗來說就是低48二進(jìn)制位相同的種子。這些種子具有以下性質(zhì):

?

姐妹種異同


看起來,這些種子只是一些共享了一點隨機數(shù)的生成,但是事實上這對于我們篩種來說,有很大的便利,它們的主世界結(jié)構(gòu)(群系相同的情況下)和下界末地是幾乎完全一樣的。主世界的結(jié)構(gòu)生成其實“曾經(jīng)”是一樣的,在種子生成時會先給出每個種子可能會生成的位置。我們以在cubiomes-viewer的圖層->結(jié)構(gòu)潛在生成位置處開啟查看。對于每個低48二進(jìn)制位相同的種子它們潛在生成位置相同。

例如0x5FFC0B2E8000這個結(jié)構(gòu)種,它在這個位置可能會生成兩個沙漠神殿:

?

結(jié)構(gòu)潛在生成位置


但在實際生成中,由于每個種子的高16二進(jìn)制位不同,每個種子自然群系生成不同,當(dāng)然沙漠神殿必須在沙漠這類群系才能生成,因此在實際生成中,可能不是每次都會兩個都生成:

?

結(jié)構(gòu)實際生成位置


對于每個群系都會生成的結(jié)構(gòu),例如廢棄傳送門,在所有姐妹種生成位置都是一樣的。

Cubiomes-viewer根據(jù)這個原理可以進(jìn)行低48二進(jìn)制位的篩種,也就是篩結(jié)構(gòu)種,先篩選低48二進(jìn)制位,后篩選高16二進(jìn)制位。

遞增搜索和低48二進(jìn)制位篩種因此具有完全不同優(yōu)勢:

遞增搜索按數(shù)字順序依次檢查種子,這種類型的搜索最適合于非窮舉搜索空間,并且具有很強的生物群落依賴性。

低48二進(jìn)制位搜索,搜索首先尋找合適的結(jié)構(gòu)種,當(dāng)找到后再依次找相同結(jié)構(gòu)種的每一個姐妹種是否有滿足條件的種子,這種搜索類型最適合于窮舉搜索和那些結(jié)構(gòu)要求非常嚴(yán)格的搜索。

篩種具體情況下使用正確的方式篩種,可以事半功倍。

四、四聯(lián)結(jié)構(gòu)又是怎么來的?

女巫小屋和海底神殿基于512*512格的mca(當(dāng)成區(qū)塊超級加倍版即可)來生成,每個mca只生成一個,對于女巫小屋和海底神殿四聯(lián)Cubiomes-viewer會利用已有的四聯(lián)結(jié)構(gòu)種種子集篩選四聯(lián)結(jié)構(gòu)(事實上女巫小屋都不需要低48二進(jìn)制位,它的生成僅由低20二進(jìn)制位決定)

四聯(lián)條件分為六種,前四個是四聯(lián)女巫小屋:

理想型四聯(lián)女巫小屋是最佳的四聯(lián)條件。

經(jīng)典型四聯(lián)女巫小屋(貌似是最早找出來的一批種子集)

普通型四聯(lián)女巫小屋是較好的四聯(lián)條件。

勉強型四聯(lián)女巫小屋較差。

四者之比約為2:3:8:20。

它們的區(qū)別主要用在生電上:理想型掛機半徑最佳,大概120格,經(jīng)典型次之。一般型掛機半徑不大于126格,它們都可以保證玩家掛機半徑內(nèi)有足夠的高度摔死女巫。勉強型則不太行。

四聯(lián)海底神殿的兩個條件分別代表四聯(lián)海底神殿大于95%和大于90%的面積(事實上四個海底神殿所有的刷怪面積都位于掛機范圍內(nèi)是不可能的)落在玩家的掛機半徑內(nèi)。二者之比約為2:15。

四聯(lián)結(jié)構(gòu)篩種中,坐標(biāo)會乘512(轉(zhuǎn)為mac坐標(biāo))。

值得注意的是,因為mca的生成限制,四聯(lián)結(jié)構(gòu)總是生成在四個mca的角落上,cubiomes-viewer一般以四聯(lián)結(jié)構(gòu)左上角那個結(jié)構(gòu)所在的mca代表這個四聯(lián)結(jié)構(gòu)所在的位置,因此四聯(lián)的中心在cubiomes-viewer四聯(lián)結(jié)構(gòu)的x-1,x-1 mac。

選擇完四聯(lián)結(jié)構(gòu)這一個條件條件,實際會生成兩個條件:



兩個條件


第一個條件實際上就是我們之前說過的“螺旋迭代器1:512”,不過使用了低48位種子集,我們在篩選其他條件時也可以使用低48位種子集:

?

自定義低48位種子集


當(dāng)然我們只要把x4改成x3或者x2就能篩選三聯(lián)和二聯(lián)結(jié)構(gòu)。



48bit篩種和四聯(lián)結(jié)構(gòu)是什么?Cubiomes-viewer教程2的評論 (共 條)

分享到微博請遵守國家法律
图木舒克市| 永清县| 饶平县| 合肥市| 枣庄市| 常山县| 胶州市| 兖州市| 名山县| 渝中区| 博白县| 黔西县| 奉新县| 长治市| 黑河市| 乐都县| 光山县| 濮阳县| 中牟县| 萍乡市| 青河县| 长沙县| 海阳市| 新和县| 永新县| 堆龙德庆县| 高密市| 商河县| 平南县| 宜都市| 永康市| 永兴县| 陆河县| 五莲县| 梁平县| 浪卡子县| 南和县| 巴楚县| 乌拉特后旗| 濉溪县| 包头市|