【mcbe】【全物品】 淺談全物品 ep.3 全物品的組成

寫在前頭(感謝)
這篇文章是面向?qū)θ锲酚幸欢ɡ斫?,打算?dòng)手做卻還沒(méi)有開(kāi)始設(shè)計(jì)的人的,并非是面向零基礎(chǔ)的
對(duì)于全物品所大量應(yīng)用的雙漏斗分類的原理,這里推薦 @smart_cuber 的視頻。視頻中展示的大部分分類單元在be都可以使用

本文參考了 @flag易 于2016年在百度帖吧發(fā)表的帖子《全物品自動(dòng)分類機(jī)的設(shè)計(jì)》(鏈接:https://tieba.baidu.com/p/4920562733)感謝 @flag易 的這篇帖子,給剛?cè)肷姷奈覙O大的啟蒙
因?yàn)楝F(xiàn)在有較多的物品的設(shè)計(jì)資料(包括je的和be的),以及前人留下了的全物品單片設(shè)計(jì)。所以本文的側(cè)重點(diǎn)是從卡頓這一點(diǎn)來(lái)說(shuō)的
在這里感謝 @_hhhxiao 開(kāi)發(fā)的 trapdoor 插件,可以精確地測(cè)量出服務(wù)器內(nèi)的卡頓

本文是由我和同為天火的服務(wù)器成員 @Maple_楓槭 共同撰寫的。由我負(fù)責(zé)主要內(nèi)容,@Maple_楓槭 負(fù)責(zé)技術(shù)指導(dǎo)
(這里打一波廣告,天火服務(wù)器交流群:1029028772)
本文大體會(huì)分為四部分,從“緒論”、“卡頓”、“全物品的組成”、“水道的設(shè)計(jì)”來(lái)系統(tǒng)地闡述全物品的設(shè)計(jì)方向。由于專欄的表現(xiàn)能力有限,這里只討論設(shè)計(jì)方向。具體的設(shè)計(jì)之后會(huì)以視頻的方式放出

目錄(在全文放出后會(huì)統(tǒng)一整理)
3、全物品的組成
????3.1、全物品的組成
????3.2、輸入
????????3.2.1、防熊
????????3.2.2、不可堆疊分離
????????3.2.3、潛影盒拆包
????????3.2.4、輸入倍速
????????3.2.5、預(yù)分類
????3.3、水道
????3.4、緩存
????3.5、主控
????3.6、單片
????3.7、大宗物品分類
????3.8、全物品的布局
????3.9、附加功能
????3.10、裝修

3、第二章 全物品的組成
------------------------------
3.1、全物品的組成
全物品是由全物品單片為目標(biāo),將物品輸入進(jìn)全物品單片里分類單元組成的復(fù)雜系統(tǒng)
目標(biāo)相當(dāng)簡(jiǎn)單,但具體細(xì)化有大量需要考慮的地方以及大量的自由度
比方說(shuō)全物品的布局,單片的選用,不可堆疊分離機(jī)的使用,緩存的使用等等等等……
讓我們跟隨物品流入的方向,一同細(xì)講
------------------------------
3.2、輸入
3.2.1、防熊
“獨(dú)創(chuàng)技術(shù),人員技術(shù),人員素質(zhì)什么的才能評(píng)判強(qiáng)服吧”——Maple_楓槭
大多數(shù)全物品是由中央水池開(kāi)啟,將物品投入其中,有的全物品會(huì)先經(jīng)過(guò)一次防熊
物品分類單元常用41 1 1 1 1填充,需要在四格放置占位的物品。同時(shí)該物品不能是全物品分類的目標(biāo)物品中的任何一個(gè)。所以常用命名物品進(jìn)行填充,這樣就不會(huì)和任何一種物品混合
但為防止有相同的命名物品進(jìn)入水道破壞分類機(jī),輸入的物品會(huì)經(jīng)過(guò)帶有填充物的分類漏斗。如果有相同的命名物品經(jīng)過(guò)將會(huì)被分類漏斗吸收并發(fā)出警告信號(hào),同時(shí)將水道阻塞或轉(zhuǎn)向至全物品的倉(cāng)庫(kù),防止可能的占位物品進(jìn)入全物品的分類水道
但由于填充物本身較難獲得,且熊全物品的方法很多,而防熊只能防止這一種方法,所以本身的實(shí)用意義有待商榷
3.2.2、不可堆疊分離
因?yàn)槿锲穯纹瑑H能分類可堆疊物品,所以不可堆疊物品就只能在循環(huán)水道里一圈一圈地轉(zhuǎn)下去,徒增卡頓。所以大多數(shù)情況下在最開(kāi)始經(jīng)過(guò)一次不可堆疊分離可以有效將不可堆疊物品分離出去。有的全物品設(shè)計(jì)了“優(yōu)先經(jīng)過(guò)不可堆疊分離”和“優(yōu)先經(jīng)過(guò)循環(huán)水道”兩種模式。我個(gè)人認(rèn)為完全沒(méi)有必要,首先實(shí)體卡頓過(guò)于嚴(yán)重,每一個(gè)物品完成循環(huán)水道一圈都會(huì)造成嚴(yán)重的卡頓。其次物品經(jīng)過(guò)不可堆疊分離耗時(shí)極短,完全沒(méi)有跳過(guò)不可堆疊分離的必要。反而先經(jīng)過(guò)不可堆疊分離將不可堆疊物品分離出去來(lái)降低卡頓是有必要的
3.2.3、潛影盒拆包
潛影盒內(nèi)有27個(gè)容量,如果讓人工去手動(dòng)拆盒也太不人性化了。所以利用盒子不能輸入進(jìn)盒子的特性將盒子分離,并通過(guò)高倍速的拆包輸入進(jìn)全物品水道
注意,盒子內(nèi)的物品也有可能存在不可堆疊物品,所以需要過(guò)一次不可堆疊分離
3.2.4、輸入倍速
倘若有多種物品同時(shí)進(jìn)入分類漏斗范圍內(nèi)時(shí),分類漏斗會(huì)不再吸取任何物品,導(dǎo)致分類漏斗失效。具體可以參考 @今日木木的林昕 的《基巖版最惡心的bug 一直在惡化從未被修復(fù)》

而產(chǎn)生的原因這里不再細(xì)說(shuō)了。這個(gè)惡性bug愈演愈烈,導(dǎo)致be傳統(tǒng)的地獄分類收效甚微,同時(shí)也限定了be的分類倉(cāng)庫(kù)必須要將物品打散,逐個(gè)輸入進(jìn)水道才勉強(qiáng)能讓be的漏斗分類正常工作
這樣就限定了be輸入物品只能以一個(gè)較低的速度輸入進(jìn)水道,要盡量讓物品以打散的形態(tài)存在。如果以一個(gè)較高的物品速度輸入進(jìn)水道,那么相應(yīng)的水道里物品密度就會(huì)增加,再加上投擲器投擲物品會(huì)有一個(gè)隨機(jī)的初始速度和隨機(jī)的初始方向,極易導(dǎo)致物品堆積在一起,更容易觸發(fā)漏斗bug導(dǎo)致分類失敗
所以常見(jiàn)的be全物品輸入倍速不會(huì)超過(guò)四倍速
3.2.5、預(yù)分類

漏斗輸出物品存在順序性(指從漏斗依次輸出第一格到第五格)和合并性(指在滿足順序性的情況下會(huì)嘗試把同一種物品放在同一格)
如果我先后拋出A 、A、B、C、A各十余個(gè),由于其順序性和合并性會(huì)優(yōu)先把A輸入到水道里,然后依次將B和C輸入到水道里
但是由于全物品所收納的每種物品都有漏斗單倍速的分類能力,所以最理想的的輸入是每種物品在打散的情況下每種物品都能以單倍速輸入。所以預(yù)分類應(yīng)運(yùn)而生
自適應(yīng)分類的分類漏斗只保留了一個(gè)空位,相應(yīng)的同時(shí)只會(huì)吸收一種物品,依據(jù)這個(gè)就可以將物品按種類分離開(kāi)來(lái)并以單倍速輸入。不過(guò)若以高倍速輸入會(huì)很容易堵塞多個(gè)漏斗,所以要依靠取樣來(lái)鎖住其他拿到相同物品模塊
這里只是簡(jiǎn)要介紹了預(yù)分類的實(shí)現(xiàn)方法,具體實(shí)現(xiàn)可以等待預(yù)分類機(jī)的發(fā)布視頻
------------------------------
3.3、水道
要減少物品在水道內(nèi)的逗留時(shí)間,可以從物品的速度,水道的長(zhǎng)度、以及最少的拐點(diǎn)這三點(diǎn)下手
藍(lán)冰冰道相比浮冰冰道來(lái)說(shuō)可以加快物品的通過(guò)速度,但藍(lán)冰太貴了,需要一組零十七個(gè)冰才能合成一塊。所以相應(yīng)的,就有省冰的辦法
四格水道有兩格的關(guān)鍵冰,八格水道有四格的關(guān)鍵冰。在關(guān)鍵冰處放置藍(lán)冰即可得到接近藍(lán)冰的速度。具體可以參考 @Maple_楓槭?的《節(jié)省95.6%的冰--新型優(yōu)化冰道》

以lin佬五箱十漏斗單片為例,每一個(gè)單片都需要十格水道。那么相應(yīng)的,每個(gè)能夠擠下一個(gè)單片的地方都可以節(jié)省十格水道
常見(jiàn)的限位有海龜?shù)跋尬?、磨石限位、蜜塊限位、箱子限位。其中蜜塊限位和箱子限位后物品的位置不在箱子所在格上,而海龜?shù)跋尬缓湍ナ尬辉诤}數(shù)昂湍ナ诟裆稀@眠@一點(diǎn)可以做出最少的拐點(diǎn)。注意,磨石限位有方向性,請(qǐng)注意
這里只是簡(jiǎn)要地把水道的點(diǎn)進(jìn)行了說(shuō)明,具體的水道分析將會(huì)在“水道的設(shè)計(jì)”這一章放出
------------------------------
3.4、緩存
由于全物品的水道通常在四分鐘左右,而物品消失的時(shí)間在五分鐘。所以正常來(lái)說(shuō)物品在水道內(nèi)僅能分類一次。而大多數(shù)全物品都采用循環(huán)水道,即希望物品在水道內(nèi)可以進(jìn)行多次循環(huán)分類。所以緩存應(yīng)運(yùn)而生
物品被漏斗再次吸取并通過(guò)投擲器投出,掉落物的cd就會(huì)被重置,從而可以進(jìn)行更多次的循環(huán)分類
緩存通常會(huì)修在水道的末端,直連水道的出發(fā)點(diǎn)。所以緩存和輸入都在爭(zhēng)奪水道的出發(fā)點(diǎn)。而協(xié)調(diào)緩存和輸入的就是全物品的主控
------------------------------
3.5、主控
主控直接與水道的設(shè)計(jì)邏輯相關(guān),這里不再細(xì)說(shuō)。具體的請(qǐng)看“水道的設(shè)計(jì)”這一章
------------------------------
3.6、單片
這里從設(shè)計(jì)目標(biāo)進(jìn)行舉例,我會(huì)在附錄里放上部分我認(rèn)為目前設(shè)計(jì)比較優(yōu)秀的全物品單片
“看lin佬布線就跟看藝術(shù)品似的,高壓、優(yōu)雅。但可惜我看不懂藝術(shù)品”——叼叼的名字
全物品與其他生電機(jī)器最大的不同,是整臺(tái)機(jī)器都要與玩家進(jìn)行交互。而不像刷石機(jī),需要與玩家交互的只有一根拉桿,一個(gè)狀態(tài)指示燈,然后一個(gè)收集產(chǎn)物的大箱子。玩家在全物品需要尋找物品,需要打開(kāi)箱子
那么作為一個(gè)人性化的設(shè)計(jì),我們有三點(diǎn)需求:
一、win10玩家在生存模式下在一到兩格寬的過(guò)道上可以夠到兩側(cè)所有的箱子(ps:we玩家在生存模式下手會(huì)比pe玩家短一格)
二、每個(gè)箱子要至少完整地露出一格大小,方便夠到
三、尋找物品視角不得仰角過(guò)大
這里展示了 @百里亦宸 設(shè)計(jì)的全物品單片,采用“完美五箱布局”,所有箱子均露出一格及以上,且尋找物品時(shí)無(wú)過(guò)大的仰角,并且可以讓win10玩家在生存模式下都?jí)虻?,算是?jīng)典箱子布局的范例

而從抗卡頓的角度上,我們也有三點(diǎn)要求:
一、寬度要盡量的窄,這樣可以減少大量的拐彎水道長(zhǎng)度
二、所有物品管道采用冰道加速
三、更多的物品采用方塊展示而不是展示框展示
這里展示了 @origin_0110 設(shè)計(jì)的全物品單片,高壓縮度讓該單片成為達(dá)成以上三點(diǎn)的最窄的單片之一,同時(shí)所有地方都預(yù)留了加速冰道,并且有三處可以采用方塊展示而非展示框展示,是傳統(tǒng)五箱全物品最經(jīng)典的例子

------------------------------
3.7、大宗物品分類
箱盒物品會(huì)嚴(yán)重占用服務(wù)器和客戶端的內(nèi)存,造成嚴(yán)重卡頓。且由于全物品需要常加載的特點(diǎn),該卡頓會(huì)一直保留在服務(wù)器內(nèi)部,造成糟糕的游戲體驗(yàn)
可見(jiàn) 本文 2.3.2、(4) 箱子
全物品在回收工地垃圾時(shí),難免會(huì)遇上大量同種物品的輸入,如空置域里的石頭。這時(shí)候一箱的儲(chǔ)量有些捉襟見(jiàn)肘了,我們就需要倉(cāng)庫(kù)來(lái)進(jìn)行儲(chǔ)存
如果說(shuō)全物品只有一箱儲(chǔ)量的話,那放一排也只有七八個(gè)箱子的儲(chǔ)量,完全稱不上倉(cāng)庫(kù)一詞。但潛影盒和箱子的套娃可以將儲(chǔ)量增加至二十七倍,就滿足大部分工程之需了
常規(guī)的大宗物品分類包含了一個(gè)打包機(jī),來(lái)將物品放入潛影盒;一排箱子存儲(chǔ),以存放打包好的潛影盒;以及一個(gè)潛影盒展示,提供不足一盒的少量物品需求
------------------------------
3.8、全物品的布局
以中央的輸入水池為中心點(diǎn),向周圍發(fā)散,有著傳統(tǒng)的“一向”、“二向”、“三向”、“四向”布局。發(fā)散的優(yōu)勢(shì)在于物品的輸入點(diǎn)可以以最短的距離進(jìn)入水道,降低掉落物實(shí)體的存在時(shí)間,減少卡頓
基于mc只渲染視角范圍內(nèi)的實(shí)體的特點(diǎn),向數(shù)越多,方塊實(shí)體和實(shí)體越會(huì)被分散,所渲染的方塊實(shí)體和實(shí)體的數(shù)量也就越少,卡頓越低。但同時(shí)拐點(diǎn)也會(huì)隨之增加,降低物品在水道內(nèi)的時(shí)長(zhǎng),增加卡頓
并且更多的向會(huì)容易讓人迷失方向,對(duì)于不熟悉物品分布的人需要找更多的地方,增加尋找物品的難度
現(xiàn)在常用的全物品布局是三向,是在卡頓和使用之間尋找的平衡
同時(shí)現(xiàn)在無(wú)論是基于裝修的正方形布局,或者是H形布局等,是在美觀面前對(duì)于卡頓的讓步。個(gè)人來(lái)說(shuō)并不推薦這種做法
------------------------------
3.9、附加功能
作為這樣大型物品存儲(chǔ),完全可以做一些卡頓較低的附加功能來(lái)完成對(duì)材料的簡(jiǎn)單利用;或者依托于玩家的頻繁出入,來(lái)修一些常用的小型機(jī)器;再或者依托于常加載,來(lái)完成一些需要長(zhǎng)時(shí)間掛機(jī)的機(jī)器
常見(jiàn)附加功能:
不可堆疊分類——利用不可堆疊物品的特點(diǎn)來(lái)對(duì)部分不可堆疊物品進(jìn)行分類
合成站——可以進(jìn)行較大儲(chǔ)量的物品的快速合成,或是復(fù)雜合成表的物品的輔助合成
小型熔爐組——可以進(jìn)行快速燒煉,算是較為常用的機(jī)器之一
煉藥機(jī)——可以進(jìn)行輔助煉藥,算是較為常用的機(jī)器之一
但全物品的卡頓過(guò)于嚴(yán)重,無(wú)論附加什么功能都是雪上加霜
------------------------------
3.10、裝修
“一個(gè)好看的全物品絕對(duì)會(huì)讓你有想要住在那的沖動(dòng)”——flag易《全物品自動(dòng)分類機(jī)的設(shè)計(jì)》
作為一個(gè)少有的,需要和玩家進(jìn)行強(qiáng)交互的生電機(jī)器,非常需要好看的裝修。在優(yōu)雅的環(huán)境中尋找物品或許能讓急躁的心得到稍許的撫慰
同時(shí)作為玩家需要經(jīng)常使用的生電機(jī)器,耐看的裝修絕對(duì)讓玩家更加喜愛(ài)使用這臺(tái)“物品回收站”
并且全物品需要所有方塊進(jìn)行裝飾的特殊性也非??简?yàn)建筑師的水準(zhǔn)
作為少量物品的倉(cāng)庫(kù)來(lái)說(shuō),明亮的光照能使體驗(yàn)更加舒適,同時(shí)也能防止刷怪
無(wú)論是從玩家的體驗(yàn)程度來(lái)說(shuō),抑或是機(jī)器的使用效果來(lái)說(shuō),裝修都會(huì)是全物品必不可少的一環(huán)

寫在最后(作者的碎碎念)
全物品大多數(shù)的紅石技術(shù)都在輸入端。防熊、不可堆疊分離、潛影盒分離、潛影盒拆包以及總控的計(jì)時(shí)器。可以說(shuō)全物品分類速度的門檻全都在輸入這一個(gè)集成模塊上所展示
裝修也是重中之重。玩家對(duì)全物品的喜愛(ài)可以增加全物品的使用次數(shù),可以讓全物品發(fā)揮更大的功效。當(dāng)然這個(gè)是全物品的功能上來(lái)說(shuō)的。而作為“全物品最重要”的功能——裝13,更帥的全物品能更好地完成這一目標(biāo)。這里安利一下 @替身禽獸老DH?的全物品裝修方案

已經(jīng)帥到?jīng)]邊了有木有
不過(guò)我本人對(duì)于建筑一竅不通,所以文中的對(duì)于裝修的描述有些匱乏,請(qǐng)見(jiàn)諒_(:з」∠)_