众所周知,在后期的飞船上,粉碎机的9种配方几乎都要用到。并且3种星岩、6种产物的供需关系会被各种各样的因素影响导致不断波动,所以设计起来其实挺头疼的:如果特定的粉碎机设置固定的处理配方,效率就会很低(要么经常摸鱼,要么干不过来成为产线瓶颈)。
所以我就突发奇想

:不如换个方向解决星岩处理的问题,与其规定某个粉碎机的配方再把对应的星岩送过去,不如把所有的星岩都送到同一台粉碎机里面,然后让粉碎机在接收星岩之后再决定怎么处理它。
那么接下来有两个问题要解决:一个是选择配方的逻辑,另一个是具体实现。当然,实现的过程有一大堆乱七八糟的细节困扰(具体的问题会在最后详细说明),有一部分我自己尚未解决,这里也希望有大佬指点一下

先讲选择配方,通过观察我们可以发现,每种星岩的处理方式对应了不同的产出:金属基础-铁、金属高级-铜、碳化基础-碳、碳化高级-硫、氧化基础-冰、氧化高级-方解石(虽然高级处理也会产出基础处理对应的产物,但是显然在你不缺高级产物时,使用基础处理的效率更高。


所以选择配方的原则很简单,就是最缺什么要什么。举个例子,假设你有一颗金属星岩,那么如果你更缺铁就需要使用基础处理,更缺铜就需要使用高级处理,铜铁都不缺就会使用再处理——所以这就是选择配方的逻辑。
然后就是具体实现了。因为我们的思路和游戏内部逻辑是反过来的:游戏需要先给工厂设置配方,然后爪子才会去抓原材料,但我们的思路是先抓原材料,然后再通过抓到的原材料给粉碎机设置配方。所以这里无论如何都需要两个爪子,一个黄爪从传送带上随便抓一个星岩同时给粉碎机设置上配方,然后蓝爪把星岩接过去塞进机器里面。
判断选那个配方则需要利用到平台枢纽:用一个常数(比如我设置了100)减去库存里的产物数量得到一个反映产物紧缺度的数值,把结果赋值给对应的星岩处理配方:

然后再用常量运算器设置再处理对应的“紧缺度”为一个很低的值(比如说0),再把每种星岩对应的三个数值传入选择运算器,让它输出最大的信号:

随后在每个粉碎机旁边放置三个判断运算器,当黄爪抓到对应的星岩的时候把对应选择运算器的输出设置为粉碎机的配方:

这样的话基本原理就大功告成了......吗?