小黑盒游戏新闻 ( ) • 2024-04-14 09:19

异形工厂完成第 26 关之后会解锁电路层,此时中心 HUB 会出现一个输出端口,该端口会输出 HUB 当前所需要的图形信号,我们可以借助电路组件建造一座万能制造机,来依据 HUB 需求动态调整流水线生产并交付需求图形。

HUB 的需求有两方面,一是图形,二是交付速度。第 26 关之后 HUB 所需求的组件不会出现浮空层,所以我的第一座 MAM 不考虑浮空图形的制造。目前这座 MAM 只完成功能,尚没有考虑任何优化。

最初的思路

游戏中有 4 种形状,8 种颜色(含无色),即一共有 32 种有色形状。也就意味着,每一个单层形状的每一个象限都有 32 种可能(当然还有一种可能是空)。

所以我最初的想法是先建造一个庞大的物料模块,负责生产所有的 128 种有色象限形状——先对 4 种基本形状上色输出 32 种有色形状,再四切输出 128 种有色象限形状。

然后再建造一个三段堆叠模块,根据 HUB 的需求动态地从物料模块中选取需要的形状进行堆叠,输出最终图形。

但依照这一思路,在建造过程中发现,物料模块本就已经很庞大了,再通过形状选择到达堆叠模块,需要很多很多的传送带,还没完工的时候游戏就已经无法进行了——加载和存档都需要很长的时间,还时常崩溃。

放个图感受一下,这只是物料模块,看最顶部四切后有 128 条输出线,考虑到最终图形可能有 4 层堆叠,这 128 条输出线还要进行四分为 512 条,分别输出到每一层的堆叠模块中。

我就是在搞这 512 条传送带时放弃的,我撑得住,游戏也撑不住。必须改变思路。

新的思路和建造施工

新的思路也很容易想到,上一个思路最大的症结在于作为物料的有色象限形状是预先制造的,这需要大量的工厂和传送带,如果将 HUB 需求的控制电路直接作用到物料模块,那其规模将缩小至原先的 1/8,而且不需要拉那么多传送带。

开搞——

整个 MAM 包含两大主要模块:物料模块堆叠模块,还有一个用于满足交付速率需求的交付模块

物料模块模块负责输出各个象限的有颜色的形状,至于输出哪种形状,哪个象限,哪种颜色,则需要一个需求分析电路来控制。

堆叠模块负责将物料进行合并和堆叠并输出需要交付的图形。

图形最多可以堆叠 4 层,每层最多有 4 个象限,因此总共需要 16 个物料模块

然后完成 16 个物料的合并和堆叠,则需要 15 个堆叠模块

物料模块

先放一张物料模块的概览图。右侧输入基本形状,上方输入染料,右侧输出染色后的有色象限形状。

这张图里展示的是右上象限,另外三个象限由其他三个物料模块完成。

整个模块包含了物料加工组件需求分析电路物料控制电路

其实单纯完成目标象限形状的加工输出不需要这么大的规模,但要使输入和输出打满传送带速率,就只能大一点了。

物料加工组件

一个物料模块需要两个输入,分别是基本形状和染料。

其中基本形状要求在四个象限中包含了 Circle、Rectangle、Windmill、Star 全部四种象限形状。可以找一块这样的形状产地,也可以另外预制,当然还可以对物料模块进行调整改变对基本形状的需求,不过我觉得会更麻烦。。

输入的形状会被四切、旋转、重组,得到 Circle、Rectangle、Windmill、Star 四种完整形状,接着上色、再次四切、旋转得到目标象限形状。

而染料要求输入全部 7 种,需要提前进行混色生产,我这次没有集中混色分发,而是单独为每个物料模块提供一个混色装置。

放一个简易的混色装置图供参考,红绿蓝三原色从左侧输入,顺序不能乱,右侧输出 7 种颜色。这个装置没太多考虑,但效率足够满足一个物料模块的染料需求。

你也可以参考下面的设计制作一个集中式的混色分发模块,在升级等级相同的情况下,一个包含 5 个混色器的装置可以打满传送带,能满足 8 个物料模块对一种颜色的需求。而这座 MAM 一共有 16 个物料模块,考虑到三种原色、三种双混色,一种三混色,一共需要 10 个这样的装置(下图示例中算是 2 个)。

需求分析电路

HUB 的需求分析完全在电路层完成,需要模拟拆分器 x1、模拟切割机 x3、图形分析器 x4,以及一些模拟旋转机电线。如下图所示——

首先模拟拆分器将 HUB 的需求分层,左侧输出的是下层形状(可能多层),交给下一个需求分析模块处理,而右侧输出的是最顶层的形状,是当前需求分析模块的处理对象。

然后对该形状进行模拟四切,由于模拟处理器没有四切机,只能利用模拟旋转机和模拟切割机配合完成。

切割完成后就可以交给图形分析器读出每个象限所需要的形状和颜色。

示例图中的线路排布是由于我的个人习惯,因为形状在切割过程中有旋转,所以在线路下面放了四排三段旋转机,将它们转回到最初的象限,方便我查看,从右到左的象限顺序:右上、右下、左下、左上(顺时针,从左到右则是逆时针)。在交给分析器分析的时候,都要转到右上象限才行。

此外,最右侧的四个图形分析器的排布只是示意,实际施工时需要留出足够的空间。

物料控制电路

经过物料加工组件后,我们得到了 4 种基本形状和 7 种染料。接下来需要根据需求分析结果,选取指定的形状和染料进行后续加工。

如上图所示,需求分析电路读取到需要的染料和图形后,走线路①利用过滤器控制染料的输入,线路②则控制基本形状的输出。

而右侧红框内的电路,则是针对无需上色的情况,让基本图形绕过上色器,直接从下面的传送带输送出去。

物料输出

物料模块的工作流程中是以一个完整的形状进行上色的,这是为了有效利用染料资源,而接下来的堆叠模块需求的是当前象限形状,因此物料模块输出时需要将物料四切后并旋转到对应象限。

堆叠模块

形状合并和堆叠的过程是将 16 个物料模块输出的物料以一层为单位分别进行 3 次合并(共 12 次),得到 4 个完整的形状,然后将 4 个完整形状进行 3 次堆叠得到最终图形。

一个堆叠模块有两个输入和一个输出。需要考虑的是,输入端并不总是有两个物料,因为有时需求形状并不是具有完整的四个象限,这时就需要在缺少一个输入的时候确保另一输入能够不经堆叠机而直接输出。

下图是一个堆叠模块的概览图。

堆叠模块的主体部分就是一个由 8 个堆叠机组成的串联结构。

左侧部分的电路利用过滤器控制两个输入物料的流向,当两个输入都有物料时,则进入堆叠机进行合并或堆叠,当只有一个输入有物料时,则控制另一个物料绕过堆叠机直接输出。

右侧的两个过滤器则用于物料的溢出销毁,在 HUB 需求切换时,会产生一些无效形状,有可能阻塞堆叠机,若不处理会导致整个 MAM 停机。

每 3 个堆叠模块可以完成一层完整形状的合并(四层共 12 个),最后再由 3 个堆叠模块完成四层堆叠。

交付模块

最后是图形的交付,如前所说,HUB 的需求不仅仅是图形的匹配,还有交付速率的要求。

在相同升级等级的情况下,这座 MAM 的输出效率大约可以跑满传送带,但如果 HUB 有更高的交付需求,那么最简单的方式就是加装存储器先进行缓存,缓存足够后一次性交付。

参考下图——

左侧的两个过滤器直接与 HUB 连接,作用是将非 HUB 需求的图形直接销毁。

右边的电路则是判断存储器储量,未满时关闭输出,当需求图形存满时,开启过滤器一次性交付。

这样的一路缓存能打满两条传送带,HUB 一共有 16 个输入端,8 路并联冲爆它。


Enjoy your Shapez!