
各位自动化同好们,大家好,我终于决定花点时间整理一下这份参考文档了。 之前介绍过《我的第一座MAM》,既然是第一座,就只是能用的程度,性能上还是有很大提升空间的,一直想着优化。鸽了这么久,现在终于有时间介绍给大家了。 这座MAM目前迭代到了第四版(MAMv4),每五分钟以内可以过一关,无产量损失。不出意外的话应该是最后一版,再有时间的话我可能会去琢磨TMAM(悬空MAM),或者转战《异形工厂2》。 目前的游戏版本,HUB需求不会出现悬空图形,只要完成了MAM的建设,确认并稳定交付速率,那过到多少关就只是时间问题了,几千上万关也就都失去了意义。本文档分章节介绍各个模块,并附模块总览图,包括实体层和电路层。总览图通常会比较大,建议放在章节最后,你可以先拉到章节末尾查看总览图,形成大致印象后再回头阅读细节。 方案简介 游戏的升级选项共有四个,本方案是在所有选项同步升级的情况下设计实施的。若你的电脑性能足够,可偏向升级传送效率,这样传送和分发设施将拥有足够的吞吐量,从而容纳更多工厂产能,通过建造更多工厂来提升过关速度。 优化的过程其实就是不断精简设施规模的过程。《异形工厂》基于Electron框架开发,该框架本身存在规模性能问题,游戏中设施数量过多时,就会出现卡顿情况。所以精简规模就可以多造几座MAM,多几座MAM就可以提升过关速度。 说是MAM,但一个存档中不只有MAM,还包含生产升级图形和蓝图的工厂,本方案兼顾升级图形、蓝图以及关卡图形的生产和交付。 在关卡图形生产期间全速率生产并交付升级图形和蓝图,当生产出足够的关卡图形时,则暂停升级图形和蓝图,转为全速率交付关卡图形。这个切换是全自动完成的,不需要任何的人工干预。 三种升级图形的产量是按升级需求量规划的,也就是2:1:1的比例。至于蓝图则利用了一点超速率的技巧,做了两条传送带的量。超速率实际上最多可以实现额外四条传送带的交付速率,也就是说,枢纽(HUB)有16个交付口时,超速率最多能做到20条传送带满速率交付。当然本方案并未追求这种极致,只要能多出两条传送带的交付蓝图就足够了。 先来看一张总体缩略图,上半部分是升级图形和蓝图的生产工厂,下半部分是四座MAM。在中心枢纽(HUB)的正下方是四座MAM共用的交付模块,用于缓存图形并一次性交付,以满足交付速率的需求。

概念约束 都玩到MAM了,大家对游戏的概念肯定都了然于胸了,但我还是想对一些概念或术语做一个约定,方便大家阅读本文,因为我不知道其他玩家是如何称呼这些东西的。我写过不少游戏攻略,除非是日常交流,在正式的攻略文档中不太喜欢用行话或者说黑话,那通常对新人不友好,即使用也会尽量解释一下,所以我的攻略有时也会有点啰嗦,希望各位包涵吧。 【图形】:指正式交付到HUB的最终产品,例如蓝图、升级图形、关卡图形。 【形状】:指生产图形的过程产品,半成品,通常是图形的某一层,有时也指多层半成品。象限:一个完整形状可分为四个区域,从右上角区域开始按逆时针顺序分别为第一象限(右上)、第二象限(左上)、第三象限(左下)、第四象限(右下)。 象限形状:指一层形状中某一个或多个象限的不完整形状,多数情况是指一个象限的形状,即完整形状的四分之一。 一带:指在当前升级情况下一条传送带满速率的传输速度或吞吐量。 中心枢纽 MAM的生产和交付需要时间,本方案四座MAM,关卡切换后约2分钟开始产出目标图形,之后约2分钟完成缓存积累并激活交付模块,最后约40秒完成交付。除最后交付的40秒外,之前的约4分钟内,对于关卡图形而言,枢纽处于闲置状态。交付切换 我们当然不能真让枢纽(HUB)闲着,这段时间正好利用起来交付升级图形。也就是说,多数时间是在交付升级图形,每隔4分钟中断一次,中断时间40秒;而关卡图形则是每隔4分钟交付一次,交付时间40秒。 两种图形的切换是借助一个由【过滤器】、【传送带读取器】,再加上一个【非门】组成的小装置完成的。参考下图,左侧的图是最简布局,分实体层和电路层;右侧的图是实际应用布局中需要走线的示例。

过滤器的机制如下: - 当输入信号为1或者输入内容和输入信号匹配时,从↑输出端输出内容; - 当输入信号为0或者输入内容和输入信号不匹配时,从×废弃端输出内容; - 当无任何输入信号时,则阻塞。 关卡图形走①路线经读取器,升级图形走②路线经过滤器后并入①线。 当①线有关卡图形到来时,读取器的计数侧输出1,使用非门取反后得0并给到过滤器,则过滤器流向×废弃端,停止交付升级图形,①线的吞吐量将全部用来交付关卡图形。反之,则过滤器流向↑输出端,交付升级图形。超速率交付 关于超速率交付可参考下图左侧部分,使用【平衡器】、【合并器】、【分离器】将HUB的所有交付口围起来,相互之间不保留传送带,这样可以多出4个输入口用于交付。 其原理是利用了游戏的一个特性,即当两条传送带经合并器或平衡器合并后,不经过传送带而直接输入HUB或垃圾桶时,其速率之和会大于单条传送带。

如上图右侧部分所示,等级为50,效率11.10倍,即传送带速率为22.2/s的情况下—— - ①号装置是正常的单带满速率22.2/s; - ②号将两条传送带合并到一条传送带,然后交付,速率仍然是11.1×2=22.2/s; - ③号则合并两条传送带后,直接交付,速率变为13.3×2=26.6/s。 本来升级图形的生产交付比为2:1:1,正好打满16个交付口,预留的两带蓝图产线是用一个开关暂停的,只在需要时手动开启,开启后需要暂停两带的升级图形转而交付蓝图。有了超速率后就可以满足16带升级图形和2带蓝图的同时交付。当然蓝图在后期基本用不完,看需求吧。不过,超速率并不是任何时候都有这么明显的效果,这跟升级等级有很大关系,具体可以参阅相关指南,感兴趣的话可以参考一下。 中心HUB总览图


交付模块 交付速率的需求从第27关的4个/秒开始,每4关增加1个/秒,直到第811关达到200个/秒后不再增加。生产和传送的效率升级到10倍后,提升幅度就很小了。10倍效率的传送带满速率为20个/秒,需要至少10座MAM才能满足200个/秒的需求,由于游戏本身的规模性能问题,这不太现实(或许有更精简的MAM设置,只是我没有想到)。 好在游戏提供了存储器,每个存储器最多可存储5000个物品,且有2个输入口和2个输出口。我们可以利用8个存储器对物品进行缓存,当积累到一定数量后,通过16个输出口一次性同时交付,这样能在短时间内打满HUB的16个交付口,从而满足交付速率需求。为了方便说明,我把交付模块分为三个区域:交付区、拦截区、输入区。 交付区 交付区是交付模块的核心区域,由①、②两部分实体层以及A、B两部分电路层组成。 ①部分包含8个存储器以及16个出口过滤器,结合A电路,实现关卡图形的缓存,姑且称为缓存机。 ②部分包含1个存储器和1个过滤器,负责控制缓存量并激活①部分的过滤器,姑且称为计量机。 至于B电路,则是一个保障措施,没有它的话交付模块虽然也能运行,但效率会打很多折扣。

MAM生产的图形从左上角经过4个【分离器】,大部分进入上方的缓存机,少量进入下方的计量机。 存储器电路层有两个输出:存满时数字侧输出1,否则输出0;图形侧输出当前存储的图形信号,仅在存储图形时才有信号,图形途经时无信号。 利用这一机制,配合过滤器,可实现缓存机与计量机之间的互锁和互激活。 可以看出,缓存机在激活输出前能缓存的图形数量取决于两方面: 其一,计量机中存储器与过滤器之间传送带的长度。该传送带越长,计量机输出图形信号的间隔时间就越长。区域空间有限时可采用S型路线加长。其二是左上角分离器的数量,分离器越多,分发给计量机的图形就越少,相应的计量机输出图形信号的间隔时间也会越长。 上图示例中的缓存机只有一个存储器,若有多个存储器,需将它们的电路图形侧信号使用【非门】取反后,再通过【与门】连接,这样只有当所有存储器都清空后,才会重置计量机。理论上,连接多个存储器的图形信号可能出现信号冲突,例如多个存储器存储的图形不一致时,但实际上在B电路的保障下,配合拦截区的“脏图形”过滤可避免这种情况。关于B电路,还是以上面示例为基础介绍,如下图所示—— 缓存机的过滤器不再由计量机直接激活,而是由B电路的输出来控制,下图红色箭头指示的方向就是B电路的信号输出,底部红色圆圈标记的恒定信号是模拟中心HUB的信号。

具体的电路逻辑不再赘述,可自行查看,这里只说明业务逻辑。B电路会有三种信号输出:计量机的图形信号、无信号以及0信号。 当缓存机中尚未存储图形,或者存储的图形与HUB信号一致时,B电路的输出由计量机决定。此时,若计量机已积累足够的图形,就会输出图形信号激活缓存机的过滤器进行交付;否则无信号输出,缓存机保持锁定。这种情况发生在MAM正在生产当前关卡的图形时。 当缓存机中存储的图形与HUB信号不一致时,B电路会忽略计量机的信号,直接向缓存机的过滤器输出0信号。此时缓存机被激活,但并非进行交付,而是通过过滤器的【×】废弃端清空缓存。这种情况通常发生在刚通过一关后,但缓存机仍残留着上一关卡的图形。 这是因为在交付图形时,HUB统计速率需要一定时间,此时HUB信号尚未切换,而MAM又生产了更多图形。这些图形本应在HUB完成速率统计切换信号后被清理掉。当然,我们可以在交付期间切断MAM的信号输入以使其停止生产,但一方面确实没有这个必要,更重要的是即便MAM停止生产,传送带上也会有残留图形。 存储器同时只能存储一种物品,不同的物品会堵在输入口无法进入。B电路可以确保缓存机在关卡切换时及时清理上一关的图形,释放缓存空间以接收新关卡的图形。拦截区 ③拦截区的设置较为简单,使用16个过滤器,对应交付区8个存储器的16个输入口。这些过滤器仅接收中心HUB的信号,即只允许当前关卡所需的图形通过,其他图形则全部废弃。拦截区的作用是防止交付区缓存“脏图形”,确保交付区电路的正常运行。 输入区 ④输入区接入MAM生产的图形,本方案中接入了四座MAM。每座MAM的产出都通过多个分离器来控制进入交付区计量机的图形数量。总览图中输入区下部中间类似沙漏的布局,用于平衡左右两侧MAM的产量输入。四座MAM分左右各两座,虽然它们稳定状态的产能相同,但预热所需时间不同,且实际过关所需的缓存量无需等到它们全部进入稳定态,因此左右两侧的产量存在差别。利用平衡器摆放这样一个负载均衡装置可以平衡交付区8个存储器的输入量。 交付模块总览图

万能制造机 进入本方案的主体部分,MAM(全称Make Anything Machine,即万能制造机)。虽说名为万能,但其实并非真正万能,毕竟它还无法制造悬空图形。不过对于游戏本身的过关需求而言,确实可以称得上万能了。 一个关卡图形最多需要堆叠四层,每一层由1~4个象限形状构成。游戏中共有四种象限形状:圆形、矩形、星形、扇形。也就是说,每一层的每一个象限都有五种可能,除了上述四种象限形状外,还可能为空。此外,游戏中有8种颜色:红色、绿色、蓝色、黄色、紫色、青色、白色、无色,其中红绿蓝为基本色,可以直接采集到;黄紫青白需要使用混色器制作,而无色则是形状的原始颜色。所以一个图形的每一层的每一个象限有8种颜色可能性。 MAM需要兼顾上述的所有可能性,把问题拆分来看,只需要做出单层图形的工厂,然后复制3次,将4座单层工厂的输出按顺序堆叠起来就是目标产出。所以下方的总览图只是其中一层的工厂,我在上面做了标记,可以先看看。图形分析电路 MAM要生产关卡图形,首先得知道当前关卡需要的是什么样的图形,中心枢纽会输出当前需求的图形信号,游戏提供了一系列电路层的模拟器件,可以用来分析这个图形信号。在真正开始介绍本方案的MAM之前先看看具体如何分析图形吧。 图形是可以多层堆叠的,最多四层,那么就需要至少3个【模拟拆分器】对图形信号进行拆分,然后使用【图形分析器】逐层分析。 【模拟拆分器】的机制是提取最上层的图形信号从右侧输出,其余的图形信号从左侧输出,所以需要多个拆分器逐层提取。【图形分析器】的机制是分析图形最底层的第一象限(右上区域),并从右侧输出其形状信号,从左侧输出其颜色信号。其中,形状信号是由该象限形状组成的完整图层形状,而非仅为象限本身的形状。因此,需要对形状进行旋转,以分别分析每个象限的信号。

如上图所示,从下到上使用四个【模拟拆分器】对图形进行拆分,然后每一层分别使用四个【模拟分析器】分析四个象限的形状。最下面的拆分器右侧输出的是图形最顶层的形状。 上例中使用了四个【模拟拆分器】,但其实三个就够,最顶上的第四个是不需要的,因为第三个的左侧输出的就已经是最后一层形状了,不需要再拆分。 生产区 生产区包含混色机和上色机两部分。如下图所示,这是负责一个象限形状的生产区实体层和电路层,请暂时忽略电路层黑线覆盖的部分。 所需原料是基础的形状和颜色,也就是圆形、矩形、星形、扇形四种完整的基础形状,以及红、绿、蓝三种基础颜色。

混色机包含两个【混色器】和若干【过滤器】,一个混色器负责生产黄、紫、青三色,两个混色器配合生产白色。混色机依据【图形分析器】的颜色信号,经过一系列条件判断和过滤,输出目标颜色。也就是说混色机的输入为红绿蓝三原色,输出则是包含三原色在内的7种颜色,由于单层形状的单一象限只可能是一种颜色,所以混色机同一时间也只需输出一种颜色,合并到一条传送带即可。 上色机使用一个【双面上色器】对形状进行上色,【双面上色器】的颜色入口处放了一个【过滤器】,这个过滤器也会接收【图形分析器】的颜色信号,可以将上一关卡时残留在传送带上的颜色快速废弃,避免影响当前关卡的响应速度。双面上色器的形状入口处也安装了一个过滤器,该过滤器接收的信号是一个表示当前颜色需求是否为无色的开关量。若颜色需求为无色,形状则绕过混色器直接输出。 最后,完成上色的形状会进行四切处理,并旋转到对应的象限,随后输送至后方的堆叠机进行堆叠。 关于生产效率的说明如下: 如前所述,本方案是在所有升级选项同步升级的前提下设计实施的。 在此前提下,一个双面上色器的效率,即对形状的需求及产出为每带的四分之一,对颜色的需求则为每带的八分之一,这是因为一种颜色可同时为两个形状上色。 而一个混色器的效率为每带的六分之一,完全能够满足一个双面上色器的需求。同时,一个完整形状可以切割成四个象限形状,切割效率也是一带的四分之一。 那么,只要单位时间内生产一个完整形状,然后将其切割为四,刚好打满一带。 所以,只需要一个双面上色器,配合一个可以生产白色的双混色器串联组,就可以满足单层单象限的产能需求。 堆叠区 每一层都需要三套堆叠装置:首先四个象限形状两两堆叠为2个半形状,然后2个半形状堆叠为1个完整形状。每套堆叠装置简化图如下——

一套堆叠装置需要两个原料入口和三个产品出口。虽然枢纽需求不会出现悬空图形,但缺角的情况还是会出现的,而【堆叠机】只有当两个输入都有的时候才会输出,因此如果遇到缺角的情况,应该绕过堆叠机直接输出。 如上图所示,两个原料入口处放置两组【过滤器】和【读取器】,当右侧没有形状输入时,则左侧形状直接走①线输出,反之右侧形状直接走②线输出,只有当左右输入都有形状输入时才会经堆叠机走③线输出。 原料输入的尽头放置垃圾桶,将来不及进堆叠机的形状销毁,防止堆积后造成阻塞。上图只是一个用了4个堆叠机并联组成的简化装置,一个堆叠机的效率是一带的八分之一,因此需要至少8个堆叠机并联才能满足一带的速率。考虑到会有来不及进入堆叠机而被销毁的形状,可以让堆叠机的数量更多一些,尽量提升堆叠效率,降低原料损耗,从而提升生产效率。如本方案的每套堆叠装置都使用了14个堆叠机,虽然仍会有极少量的原料被销毁,但其实已经可以说是没有产能损失了。 进料区 进料区负责向MAM出入形状和颜色原料。 MAMv4所需的原料都是基础的形状和颜色,但是完整的基础形状产地较少,且分布比较分散,需要各种飞传送带,所以我干脆直接使用【隧道】来代替传送带运输。官方社区有一个叫做【ShapeGenerator】的模组,这个模组是一个只占一格面积的设施,可以生成任何指定的物品。使用这个模组一方面可以代替原料产地,另一方面可以进一步减小设施规模。毕竟我们的核心玩法是MAM的建设和优化,原料方面可以简略一下。 不过本方案暂时没有引入任何模组,还是架设了不少进料用的隧道和传送带。因为这个原因,最初是打算接入四形混合形状作为原料的,所以制作了下图这样的装置——

这个装置是将四形混合形状四切后重组。不过这种四形混合形状的产地同样不多,通常与MAM之间存在一定距离,运输路线一点也不少。而且MAM的每一层都需要四个这样的装置,这本身也会增加存档的设施规模,所以干脆直接采集基础形状。当然,由于原料产地的距离原因,以及不存在完整的扇形基础形状,有些原料还是需要在产地加工后再运输过来。 在之前的版本中,还采用过这样一种方案:先对四形混合形状进行上色,然后四切后直接输出。
如上图所示,这种方案直接输出象限形状,堆叠之前不需切割,但需要电路层多做一点事情,由于【图形分析器】输出的是完整的形状信号,那么要想用这个信号控制过滤器的输出,需要先对其进行模拟切割和模拟旋转。 之前的版本也尝试过其他方案,最终都被淘汰,就不一一介绍了。 还是回到本方案的进料区,如下图所示——

基础形状和颜色的进料路线没什么可说的,主要看飞线如何布置。 前面已经对生产效率做过说明,本方案使用的是【双面上色器】,那么一种基础颜色的一条传送带产量可以支持8个象限工厂。一种基础形状的一条传送带产量可以支持4个象限工厂,而基础形状刚好有4种,也就是说,每种基础形状各取四分之一的产量合并为一条传送带,刚好是一条传送带的量。将这四种形状组成的一条传送带产量输送给象限生产区,在进入【双面上色器】之前,用一个进料过滤器筛选出该象限当前需要的基础形状即可,这个过滤器接收的就是【图形分析器】的形状侧信号。值得注意的是,如上图红框标注的电路,进料过滤器并不是直接接收【图形分析器】的信号,而是经过这个电路调制的信号。 由于关卡图形的任意层都可能存在缺角的情况,那么某个象限的【图形分析器】就可能无任何信号输出,这时进料过滤器无任何信号输入的话会处于锁定状态,又由于本方案基础形状的进料存在共用的传送带路段,那么一个象限进料阻塞就会导致其他象限进料拥堵,降低效率。 这个电路的作用就是将【图形分析器】的无信号调制为【0】,让形状走过滤器【×】废弃端销毁。当然,如果各个象限的进料是完全独立的,那就不需要这个电路。 单层总览图

其他工厂 其他的升级图形和蓝图工厂就不多说了,简单贴几张图吧。





游戏已完结,祝您玩《Shapez》愉快!
2026-02-15 13:00:18 发布在
异形工厂(Shapez)
说点好听的...
收藏
0
0
