异星工厂吧 关注:63,673贴子:414,626

回复:品质产线与迷你超市的终极通解——浅谈配方切换电路与产能保护

只看楼主收藏回复

说得好
我选择随机筛选器


IP属地:山西16楼2025-10-25 13:30
收起回复
    在此基础之上,通过一些简单的条件设置,我们可以用电路实现类似手搓合成的切配方效果
    如图所示,黄爪合成的启动条件为爪子数量小于等于50。

    而红爪合成启动条件为黄爪大于50。

    假设更基础的元件供应充足。现在我们想要合成红爪,但黄爪数量为0,红爪合成缺一个条件,无法启动。那么组装机就会先合成黄爪,直到满足红爪的合成条件,再开始合成红爪,直到黄爪数量变成0:

    这样,组装机会自动先合成低级配方,再合成高级配方,所有的配方合成都可以被适当的缓存上下限条件动态调节,缺了就合,多了就停,达成类似手搓的效果


    IP属地:中国香港17楼2025-10-25 13:38
    收起回复
      2026-01-20 12:15:27
      广告
      不感兴趣
      开通SVIP免广告
      支持


      IP属地:内蒙古来自Android客户端18楼2025-10-25 13:54
      回复
        来个实际运作中的动图

        切的比较鬼畜,主要是因为组装机叠的速度太高了


        IP属地:中国香港19楼2025-10-25 13:56
        回复
          百万位编码的另一个额外好处——我们只需要在配方运算器后面串联一个排序模式的选择运算器就可以实现配方优先级排序的效果,再串联一个随机模式的选择运算器就可以设置配方更新间隔,杜绝一些快速配方的鬼畜现象
          在上面的例子中,这两个技巧都有使用。

          将所有的配方按照优先级排序,高级配方分配更大的编号,并且让配方运算器输出输入数值(也就是对应的编码)

          经过选择运算器的降序排序,可以只抽取出最大的信号。

          随机运算器的本质是间隔设定时间后更新一次输出信号,并且从输入随机选取。如果输入信号只有一个,那么效果等同于设定时间后更新一次信号。这里设置了每20tick更新一次信号,防止极快的配方造成组装机鬼畜。如果你做的配方很慢的话,这个东西完全可以扔掉


          IP属地:中国香港20楼2025-10-25 14:06
          回复
            在配方切换电路中,限制抓入物品总量也很重要,因为爪子会根据组装机速度给高速组装机缓存大量物品。这在切配方的架构中非常不利,因为抓出缓存物品需要大量的时间,长此以往我们的组装机利用效率会大大降低
            抓入限制电路就很简单了,分一根线出来读取组装机内容物,再设置一系列抓入限制值,乘以-1,把两股信号同时传递给黑名单爪,这样当组装机内物品数量大于抓入限制,这个信号对于爪子来说就会变成大于0的黑名单信号,从而停止爪子的抓入


            IP属地:中国香港21楼2025-10-25 14:12
            回复
              兄弟,顶顶你


              IP属地:浙江22楼2025-10-25 14:13
              回复
                cy


                IP属地:福建来自Android客户端23楼2025-10-25 14:17
                回复
                  2026-01-20 12:09:27
                  广告
                  不感兴趣
                  开通SVIP免广告
                  那怎样才能禁用某些配方呢?很简单,在配方运算器后面串一个常量箱,塞满-1G信号就行。
                  负的配方信号无法设置组装机的配方,这一点和爪子的筛选器设置是类似的


                  IP属地:中国香港24楼2025-10-25 14:20
                  收起回复
                    先歇一会,过会来更新产能保护电路,这个是重头戏


                    IP属地:中国香港25楼2025-10-25 14:20
                    回复
                      6层深度 89个配方



                      IP属地:山西26楼2025-10-25 14:35
                      收起回复
                        很好,蓝图呢?


                        IP属地:江西来自Android客户端27楼2025-10-25 15:19
                        收起回复
                          顶顶顶,快更新


                          IP属地:浙江28楼2025-10-25 17:17
                          回复
                            支持大佬,单锁存器还能看得懂,后面就傻眼了


                            IP属地:江苏来自Android客户端29楼2025-10-25 17:19
                            回复
                              2026-01-20 12:03:27
                              广告
                              不感兴趣
                              开通SVIP免广告
                              继续更
                              上面的所有电路切换配方的根据都是原料量和产物量。一旦我们开始引入产能加成,随意切换配方就有可能导致产能条的丢失。如果想要用这类电路处理插件合成,铸造厂升品等配方,产能保护电路就是绕不开的话题。
                              产能保护电路要求我们合成某一配方的次数乘以产能加成为整数。为了实现这一目的,我们需要读取组装机配方完成时刻。

                              配方完成时刻输出的信号是一个脉冲信号,并且大小与这一tick生成的物品数量有关。具体到50%产能的经典例子上,这个信号会交替输出1和2。
                              实际应用中,我们采用下面的电路来实现产能保护,关键在于两个多出来的判断运算器以及一个排序模式的选择运算器。

                              配方锁存和前面说的一样,没什么特别的。

                              自然,为了计数配方完成信号,我们会想到用另外一个锁存器来记录信号的总值。由于信号累加起来之后循环为3,我们可以直接让锁存器的最大值为3,到了3之后自动溢出重置。如果产能加成不同导致物品产出周期不同,3可以改成其他值。

                              常见的产能保护电路一般到这里就开始准备用合成次数锁存器的信号直接禁止配方信号输入组装机了,这样可以保证合成2次之后强制切配方,变现规避了合成一次切配方带来的损失。但这样做的问题在于频繁切换配方会降低机器的总运作效率。有没有一种方法,可以让机器不受打断一直连续合成,并且保证切配方一定是在偶数次合成切配方呢?


                              IP属地:中国香港30楼2025-10-25 17:25
                              回复