MAM系統實操
這篇文章計劃採用由XeKr[1]設計的三原色各4條帶,基礎圖形各一條帶的MAM作為模板進行改造,計劃做一個三原色各兩條帶,基礎圖形各一到二條帶的MAM。
這篇裡面有的:
搭建這個MAM的具體流程
這篇沒有的:
MAM的具體電路和堆疊設計
(搭完10分鐘感想:這個搭完就感覺不太好使,整個就是在宣揚躺平和湊合過日子的享樂主義,就是好逸惡勞的產物,純純一坨糞,下一篇可能會專門讓大家抄抄作業。)

最終結果
染色和切割模塊
一切一切的起源,都來自上色器(雙面)和切割器(四向)的相遇,前者的速度是1/4帶速,後者的速度也是1/4帶速,並且輸出綜合為1帶速的四個象限圖形。這兩個元件就像攪屎棍遇見了屎一樣,將為shapez的眾多玩家留下一個難以超越的近乎完美的構型

這圖豎著放不了,淦!
我們上一章說到了工序,既然這裡完成了染色和切割的工序,那麼只需要設計供給模塊和堆疊模塊即可完成MAM單片。

上面是最終組合過的樣子
供給/篩選模塊
先看下XeKr的原版設計

XeKr
這裡可以看到採用了存儲器來進行緩衝,從而提高了結構本身對於奇葩圖形比如四層全是方形的圖形的處理能力,這裡為了面子(全抄太丟人了),我設計了以下的供給模塊:

初版設計
可以看到,除了更佔縱向空間以外,這版設計並沒有什麼優點,最多就是你可以把染料和物料混著放,然後整體更整齊了一點。但是需要付出縱向增長23格的巨大空間成本
於是,我痛定思痛,決定基於舊的供給模塊只有單帶傳送物料這一缺憾,設計瞭如下的雙帶供給模塊:

就當我懶得改多餘的分離器併為自己的創新點感到自喜的時候,這臺機子出bug了,在圖形不缺乏的情況下跑出了4/5帶速,我定睛一看,發現這種結構如果出現了一層全需要一種圖形,以後得層中也需要這種圖形哪怕只要一個角,就會導致第四個判斷後的分離器分出1/8的圖形,從而在穩定運行時降低了單片20%的效率。
其實改掉這個問題並不難,只需要在下面不參與縱向傳送帶的物料運送中單獨拉一條上來就可以解決:

由於顏料就算全要白色的,也只需要1/8(單個染色器)×4(四個象限)×4(四層)=2條傳送帶,而且1/8的帶速並不需要像上圖一樣改進,所以染料區仍然採用了XeKr的單帶設計,而圖形區為了增強魯棒性,將採用上圖的設計,供給模塊預計會比XeKr的設計多6行。
什麼6行?最初設計的時候計劃可只是多4行!改!

這設計也是半吊子,平衡器再往右放一個效果可能會更好(其實後來發現不用改),不過考慮到我鎖60幀帶速只要上5了都可以接受。。。。。。接受個錘子!改!

最終決定了這版,滿足了雙帶傳遞,有存儲就不會降速的設計需要,也解決了不存在的60幀導致的傳送帶速度問題,完美(然而屁用沒有)
接下來加入沒有用的模塊,讓別人以為我是空間管理大師(複製粘貼成本增加,虛報預算,貪汙公款)
(來自做完之後的建議:每個圖形區翻倍即可根除奇葩圖形的壓力,橫掃帶速降低,做回自己,真MAM就應該有16條圖形輸入帶)

最終版本也是誤打誤撞把XeKr的錯開存儲器的設計給正回來了(強迫症狂喜):

堆疊模塊
如果說哪個模塊我最討厭設計,那絕對是堆疊模塊,因為要考慮缺角圖形,也給我前100關最痛苦的修第一臺MAM的痛苦體驗,除此以外,清理多餘的物料殘留也是加快MAM產出的必要設計
考慮到不是所有人都到了只用堆四層圖形的關卡,所以最終的疊層還要寫判斷
大家這個地方儘量用寬度小於等於6的模塊,因為前面是寬度為4的結構,加上存儲器的緩衝,單片厚度為18,正好可以塞3個寬度為6的堆疊模塊,這裡打算用剛學到的架構,狠狠得再省一波空間。

這個堆疊模塊只能在拼四個角的時候用,最後疊層的時候要用另外一種

最後每層的堆疊長這個樣子,別忘了安裝的時候要豎起來,這裡只是方便展示所以橫著截的。
大家最後設計的時候一定要記得缺角是都要寫跳過邏輯,層數堆疊的時候只需要寫低層的跳過邏輯,因為高層不可能跳過(雖然之前想寫一個很帥的判斷是兩層圖形的時候直接兩條帶分開輸出,但是發現並不使用就放棄了這個念頭)
合體上電!

然後經過這樣那樣的過程,一臺沒上電的MAM就完成了(30000藍圖),大家還是多鍛鍊鍛鍊,這個模塊沒有照抄的必要!!!!(抄這版後面bug滿天飛你就開心了)

再經過這樣那樣的過程,一臺MAM的電路(30000藍圖)就完成了!!!!電路教不了一點,自己去弄明白與或非更重要
染料輸入/顏料預處理/混色模塊
其實應該先做這個的,但是因為電路不連心裡很癢。考慮到上面有幾行空的,做了一個窄的模塊,三輸入任意色任意單滿帶輸出(有點最大化最小輸出的意思)


安裝之後像極了建國同志的舊發形,非常不滿意,因為實際只需要四個混色模塊(沒有電路控制需要5個)就可以達到7色任意2色滿帶,另一方面下面圖形模塊也要佔地方,最後計劃建在整體的左邊建,打回去改!

非常滿意,除了顏色有點辣眼睛懶得改。。。回去改!

舒服了舒服個錘子!表面上你直接輸出三原色可以省三行空間,但是實際上這導致了你在輸出紫色的時候藍色的輸出速率只能達到1/8(來自測試)改!

舒服了
物料輸入/物料預處理模塊
考慮到風車找不到完整的,我就計劃使用兩個一半一半的圖形進行現場拼接,之前直接拿切割和堆疊的模塊感覺效率不是很高,就重新設計了這個模塊,輸入是滿帶混合圖形,輸出是兩種基本圖形帶速為1/2速:

切割的1/4帶速和堆疊的1/8帶速也被強制匹配了,理論上切割機一半時間都在摸魚,但是夠密就行。
然後由於我們生產的兩個圖形是耦合的,即一個圖形的存儲器滿了另一個圖形就會被堵住,所以需要做一個緩衝器,以下是簡單的緩衝器,原理就是堵了,帶速為0,過濾器打開進垃圾桶的分路,沒有堵帶速不為0就會卡在過濾器的正常輸出上從而不分流全部往後面跑:你這裡又雙叒叕寫錯了,這裡大家一定要用藍色的分離器而不是綠色的合併器(來自測試發現方形卡主了找到的bug)

這裡偷了個懶,圓和星有資源直接連,只做了四個上面的模板處理風車和方形,最後速度都是滿速就很完美,大家這裡酌情選擇,理論上只需要四種圖形各一條就可以,我為了機子魯棒性更強,就每個圖形各兩條了。

測試階段
最好等染料區填充完再開測,測試之前可以先看看有沒有因為移動導致的電路問題、模塊缺失問題,我移動之後少了一堆過濾器,測試的第一個bug是在切割前忘記旋轉了(我的邏輯是按1234象限分的,不是每個人都會出這個bug)
測試內容一:異色缺角四層圖形
CrRgWbSu:--CrRgWb:RgWbSu--:CrWbSu--
測試發現bug:
1、染料供給未達到設計需求。
2、圖形供給區緩衝器安裝錯誤。
3、供給區缺少過濾器,染色切割區缺少過濾器。
4、跳過堆疊的邏輯使用錯誤。
5、堆疊區的清理判斷接反。
6、堆疊區的清理判斷連線錯誤。
以上bug後續均得到解決,並完成了穩態滿帶速測試。

測試內容二:1-3層奇葩圖形
CuCuCuCu:RwRwRwRw:CuRwCuRw

無bug
CrCgCbCw:CrCgCbCw

同樣無bug
WwWwWwWw

無bug
測試內容四:壓力測試
WwWwWwWw:WwWwWwWw:WwWwWwWw:WwWwWwWw

滿帶速時最低圖形存儲為3.1k,預計可以完成一輪離譜至極的交付,至於概率問題我不知道遊戲內的隨機關卡是如何挑選圖形的,所以並不會算多大概率會停機,這個成果我已經很滿意了。

左邊是老機器,右邊是新機器,看得出來彌補了我自己的老機器一開始說的缺陷。
總結
採用了XeKr的緊湊架構,提出了雙帶傳導的存儲器模塊,雖然犧牲了高度為4的空間,但是解決了單層同一圖形,低層存在相同圖形導致的速度降低問題。同時緩解了一丟丟圖形大量重複時的交付速度下降的問題。下一臺MAM機器可能會擴充圖形的存儲器模塊,從而根除交付速率下降的問題。
參考文獻
[1]異形工廠入坑指南[video].作者:XeKr.https://www.bilibili.com/video/BV1314y1g7QB/.2023.01.05