【mcbe】【全物品】淺談全物品 ep.4 水道的設(shè)計(jì)

寫在前頭(感謝)
這篇文章是面向?qū)θ锲酚幸欢ɡ斫?,打算?dòng)手做卻還沒有開始設(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)來說的
在這里感謝?@_hhhxiao?開發(fā)的 trapdoor 插件,可以精確地測量出服務(wù)器內(nèi)的卡頓

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

目錄
4、水道的設(shè)計(jì)
????4.1、水道的設(shè)計(jì)目標(biāo)
????4.2、水道的總體設(shè)計(jì)
????4.3、水道的細(xì)化設(shè)計(jì)
????????4.3.1、降低水道內(nèi)掉落物實(shí)體的數(shù)量
????????4.3.2、降低掉落物實(shí)體在水道內(nèi)的逗留時(shí)間
????????4.3.3、可用的部分轉(zhuǎn)彎水道
????4.4、水道的邏輯

4、第三章 水道的設(shè)計(jì)
------------------------------
4.1、水道的設(shè)計(jì)目標(biāo)
水道最主要的目的是聯(lián)通所有的分類漏斗,然后最重要的設(shè)計(jì)目標(biāo)就是減少卡頓。這一點(diǎn)落到實(shí)處就是降低掉落物實(shí)體在水道內(nèi)的數(shù)量和減少掉落物在水道內(nèi)的逗留時(shí)間
4.2、水道的總體設(shè)計(jì)
水道常用單次水道和循環(huán)水道。其中各有優(yōu)缺點(diǎn)
無論你全物品有多高的輸入速度,在輸入到分類單元時(shí)只能以單倍漏斗速度輸入。所以不如以單倍漏斗速度輸入,一次性分類完成,最后接全物品的倉庫來回收無法分類的物品。單次水道有著低卡頓,高分類成功率,以及設(shè)計(jì)簡單等優(yōu)勢
但顯而易見的,如果一次性輸入多種物品,那么分類倍速就是物品種數(shù)這么多了。況且即使只有一種物品輸入,漏斗也存在23的空余可以壓榨。為了壓榨漏斗23的空余空間,可以略微提升物品的輸入倍速。而面對(duì)大量物品的時(shí)候,就可以采取循環(huán)水道的設(shè)計(jì)來達(dá)成多次分類。以二倍速為例,因?yàn)榉诸悊卧且詥伪端俟ぷ?,所以循環(huán)兩圈就足以將所有物品分類完全。所以相應(yīng)的,循環(huán)水道可以將輸入速度提高至三倍到四倍漏斗速度,而循環(huán)次數(shù)視輸入倍數(shù)而定。所以循環(huán)水道就是在卡頓與分類速度之間尋找平衡
4.3、水道的細(xì)化設(shè)計(jì)
4.3.1、降低水道內(nèi)掉落物實(shí)體數(shù)量
為了具體闡述物品在水道內(nèi)的數(shù)量,容我提出初中就學(xué)過的密度公式
V(物品的數(shù)量) = ρ[物品的密度(輸入的倍速)] * S(輸入點(diǎn)到目標(biāo)點(diǎn)的距離)
這個(gè)是不考慮分類失敗的情況。但很明顯就可以看出來其中的重點(diǎn)了
1、降低物品的輸入倍速
2、讓物品到達(dá)目標(biāo)分類單元的距離最近
由于單倍速漏斗速度過于感人(一組物品約25s,一盒物品約11min31s),現(xiàn)在常見的全物品都采用更高倍速的輸入和循環(huán)水道。所以一般以卡頓和處理速度作為平衡來選擇輸入倍速
其次為了減少到目標(biāo)點(diǎn)的距離,應(yīng)該讓輸入點(diǎn)可以以最快的速度直達(dá)水道:
常見的全物品單片的水道高度不一,經(jīng)常要考慮是送到最高點(diǎn)向下落和送到最低點(diǎn)往上傳。經(jīng)實(shí)測上傳和下落的循環(huán)水道時(shí)長一致,所以可以考慮將物品送到最低點(diǎn)的水道然后逐級(jí)上傳
因?yàn)槿锲方?jīng)常輸入的物品量不一,如施工中的“普通方塊”剩余較多,而像草、珊瑚等幾乎沒人去采集,即使有數(shù)量也不多,所以將經(jīng)常輸入的方塊排在水道較前處,而將少見的方塊排到水道較末端可以有效減少物品到達(dá)目標(biāo)分類單元的平均距離
4.3.2、降低掉落物實(shí)體在水道內(nèi)的逗留時(shí)間
降低物品在水道內(nèi)的逗留時(shí)間也可以有效降低卡頓時(shí)長。這里選用速度公式來進(jìn)行說明
t(逗留時(shí)間) = s(物品的路程) / v(物品的速度)
所以很明顯的,降低逗留時(shí)間就是減少物品的路程和加快物品的速度
不考慮分類失敗的情況下物品的路程已經(jīng)在剛才討論過了,這里來討論分類失敗的情況
常見的分類失敗的原因有輸入倍速過高,以及觸發(fā)了漏斗bug等情況。分類失敗的物品會(huì)進(jìn)入循環(huán)水道進(jìn)行二次分類、三次分類……所以很容易得出,物品真正進(jìn)入漏斗所需要的路程就是S=(n - 1)* L + s
其中的n是分類所需要的循環(huán)次數(shù),減掉的1是分類成功的那次循環(huán),L就是循環(huán)水道的長度,s是輸入點(diǎn)到目標(biāo)分類單元的距離
根據(jù)物品排布,輸入點(diǎn)到目標(biāo)單元的距離是固定的。而循環(huán)次數(shù)則依據(jù)于輸入速度,也是相對(duì)固定的。那么唯一可以降低總路程的,就只有循環(huán)水道的長度了
我們不妨將水道分為“有用水道”和“無用水道”兩類,有用水道即為分類單片或大宗分類內(nèi)的水道,而無用水道則為分類單片或大宗分類外的水道,如轉(zhuǎn)向水道,上傳水道等等
有用水道的長度依據(jù)你單片的堆疊數(shù),是一個(gè)固定的數(shù)值。這里以lin佬的五箱十漏斗單片為例,左右側(cè)完整。單片內(nèi)預(yù)留冰道十格,那么我堆疊十片就是10 * 10 = 100格,堆疊80片就是80 * 10 = 800格
那么唯一可以減少的,就是無用水道了
依據(jù)速度公式來看,減少物品逗留在無用水道的時(shí)間是
t(物品在無用水道的逗留時(shí)間) = s(無用水道的路程) / v(物品在無用水道的速度)
所以為了真正達(dá)到目標(biāo),依舊需要考慮到物品的速度
以光速船為例,光速船在水流內(nèi)可以無限加速,但從未聽說過光速物品。所以很容易想到物品在冰道內(nèi)加速存在收尾速度。依據(jù)實(shí)測,物品在八格流動(dòng)水的浮冰道內(nèi)需要加速約32格(大約耗時(shí)94gt)后達(dá)到收尾速度0.41 b/gt(即9b / 22gt)。具體實(shí)測的速度數(shù)據(jù)我會(huì)放在本文最后的附錄里,供大家參考
大多數(shù)三向布局的全物品其中一向的水道長約為41(這里以天火創(chuàng)造服的全物品框架最下面的一條水道為例,非16色),勉強(qiáng)超過收尾長度。所以依據(jù)物品在水道內(nèi)加速的現(xiàn)狀,增加長水道(非16色水道)的一格的收益是明顯大于增加短水道(16色水道)一格的收益,而減少短水道的一格的收益也是遠(yuǎn)大于減少長水道一格的收益的
由于全物品水道設(shè)計(jì)大多采用直角轉(zhuǎn)彎,即轉(zhuǎn)彎會(huì)取消所有之前加速產(chǎn)生的速度累積。所以減少轉(zhuǎn)彎次數(shù)是非常有必要的。常見的轉(zhuǎn)彎限位有海龜?shù)跋尬慌c箱子限位,都屬于較為穩(wěn)定的限位方式,但要注意不要做在區(qū)塊邊界處。蜜塊限位會(huì)明顯降低物品速度,磨石限位會(huì)有方向性問題,都不推薦使用
4.3.3、可用的的部分轉(zhuǎn)彎水道
正在找 @Maple_楓槭 授權(quán)(

maple yyds
4.4、水道的邏輯
物品進(jìn)入水道后往哪里走?什么時(shí)候走?走多長時(shí)間?時(shí)間到了之后往哪里走?水道并非沒有邏輯,而執(zhí)行這一邏輯的就是全物品的主控
物品進(jìn)入全物品輸入端,為了防止不可堆疊物品在水道內(nèi)循環(huán),我們首先需要讓物品經(jīng)過不可堆疊分離。分離出來的不可堆疊物品可能含有等待拆包的潛影盒,所以需要經(jīng)過潛影盒分離,而非潛影盒的不可堆疊物品會(huì)直接送往全物品的倉庫。潛影盒會(huì)進(jìn)行拆包,因?yàn)椴鸢锲房赡芎胁豢啥询B物品,所以需要進(jìn)行不可堆疊分離。但是如果另立不可堆疊分離模塊輸入進(jìn)水道的話可能會(huì)導(dǎo)致上游物品輸入倍速不可控,所以送回輸入端進(jìn)行不可堆疊分離是最穩(wěn)妥的選擇。因?yàn)闈撚昂械某S眯?,拆包后的潛影盒單?dú)收納。接下來是可堆疊物品。為了增加可堆疊物品的分類速度,可堆疊物品會(huì)經(jīng)過一次預(yù)分類的限速進(jìn)入水道。因?yàn)轭A(yù)分類的單次分類成功率在91%以上,所以可以采用單次水道
如果采用循環(huán)水道的話,因?yàn)檠h(huán)水道一圈耗時(shí)四分鐘,為了進(jìn)行第二次循環(huán)需要經(jīng)過緩存重置掉落物cd。而此時(shí)如果輸入端也有輸入,那么緩存和輸入端將會(huì)同時(shí)向水道起點(diǎn)輸入物品,導(dǎo)致輸入倍速不可控。所以當(dāng)緩存啟用的時(shí)候需要停止輸入端的輸入,在緩存停止工作的時(shí)候釋放輸入端的緩存。并且要在輸入端采用計(jì)時(shí)器來計(jì)算循環(huán)次數(shù),當(dāng)物品在水道內(nèi)的循環(huán)次數(shù)足夠的時(shí)候要釋放水道內(nèi)的物品
當(dāng)水道釋放物品的時(shí)候,也需要讓輸入端停止工作或限速至單倍速保證單次足以分類完全

參考資料
——《全物品自動(dòng)分類機(jī)的設(shè)計(jì)》(https://tieba.baidu.com/p/4920562733)2016.12.30
感謝
感謝 @煉獄人機(jī)?和?@Daisy_17?提供天火創(chuàng)造服并維護(hù)
感謝?@flag易?的文章提供紅石以外的參考
感謝?@PRECHE_帕夏_?參與全物品討論
感謝?@_hhhxiao?提供的trapdoor插件可以精確測量卡頓
感謝?@origin_0110?提供的五箱十漏斗全物品單片
感謝 @bWFuanVzYWth 提供的五箱十漏斗全物品單片
感謝 @Padishah19 提供的完美五箱布局

寫在最后(作者的碎碎念)
那么本文就在此告一段落了,待附錄發(fā)布后會(huì)將部分文章進(jìn)行訂正與修改 _(:з」∠)_
感謝編輯?@Maple_楓槭?在我逼著看完一遍后?提供的訂正與修改
百里之所以沒打上鏈接是因?yàn)檫B稿件都刪了找不到地址了
linlin yyds
新的一年在這里祝大家新年快樂!
新的一年linlin變成妹妹了嗎