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