宇宙平台加速器控制逻辑

0 点赞
Factorio
转载

这是我写的第一份攻略…… 为什么要写呢? 总之,我沉迷于你们的《幸福工厂》,建造了我的第一架“燕子”运输机,但它现在已经到了该退休的时候了——它已经无法高效运行,而且飞行时还会发出刺耳的噪音。所以,在建造新平台之前,我决定弄清楚——加速器是如何工作的以及如何使用它们,同时也想和大家分享一下我的研究结果。 配置。对于加速器的控制,我们只能向其添加燃料。这里有三种方式。 顺序式——也就是“圣诞树”式。每个加速器紧密相连地排列。

并行模式 - 每个加速器单独连接到公共管道。

总的来说,圣诞树连接方式更优。两种连接方式中,加速器的燃料分配都不均匀。例如,在并联连接时,我观察到相邻加速器的消耗量分别为97和103升/秒。串联连接的情况类似,但这种布局占用的空间要小得多…… 第三种方案是独立连接。每个加速器单独连接到各自的泵。

我最近才意识到,这样的系统会占用很多空间,但当我尝试组装时才明白——要控制加速器,只需用泵控制一种液体即可,至于是燃料还是氧化剂并不重要(从之前的两张截图可以看出,我曾用各自的泵来输送每种液体。我会把它留作示例,而不是因为懒得修改)。这意味着可以将第二种液体直接连接到储罐。这样一来,独立系统不会占用太多空间。但问题在于另一方面。对于单个加速器来说,泵的功率过大。例如,要以10%的功率运行,泵需要等待100个周期,加速器才能处理完一个周期内输送的液体。这个周期太长,会导致系统出现强烈波动。 常量组合器。 逻辑从这里开始。我们会在其中预先记录好我们加速器的计算工作模式。首先我们来了解一下这些模式。

我为自己设定了4种工作模式,并为每种模式创建了相应的组,以便通过勾选或取消勾选来切换这些模式。另一种方案是采用阶梯式系统,即后一个组在前一个组的基础上叠加——这就取决于个人喜好了。关键在于计算出数值本身。 我选择的这些模式是基于加速器的效率图表来确定的。

我成功设置了10%、20%、45%和75%的运行效率。你们也可以根据自己的需求选择合适的模式。 下面开始进行计算! 计算公式:R = P/T/(D/100) 其中: R【设置值】—— 我们在组合器中设置的模式值。 P【单流体泵功率】—— 单个流体泵或多台流体泵针对一种液体的总功率。 T【最大加速消耗】—— 连接到该泵或泵组的所有加速器的最大消耗量。 D【目标运行百分比】—— 期望的运行百分比。 为每种模式进行计算,然后将所有结果输入组合器,这样组合器的设置就完成了。重要补充。游戏无法处理小数。如果在游戏内的数值输入框中输入公式,游戏会进行整数计算,而非四舍五入。这意味着对于游戏而言,6.9等于6。因此建议在游戏外进行计算并自行四舍五入结果。这一情况也意味着,在少数情况下我们能获得模式的精确数值,大多数时候会与期望数值存在正负几个百分点的偏差。但我追求的不是精准,而是简单…… 计时器 在这个部分,我会加入所有其他逻辑,其核心是计时器。不过我们不从计时器开始,而是从启动它的组合器开始。

将此组合器连接到平台本身。在平台上勾选“从...移动”和“移动到...”两个选项。逻辑很简单:如果平台处于停靠状态,其中一个行星将传递值3;如果平台处于移动状态,目标行星将传递值2。在组合器上为每个行星设置条件为2,使用“或”条件。如果某个行星的传输值为2,那么输出端将传输计数器的单位信号和工作状态信号。 现在,计数器本身是一个比较组合器。其输入端连接自身的输出端(将其自身连接起来),并接收来自前一个组合器和常值组合器的信号。

条件:若工作信号大于0且计数器信号小于模式信号,则输出计数器信号。 工作信号用于在到达目的地时重置计时器,若无此信号,计数器将停留在最后一个值,这可能会与泵的启动条件重合。除此之外,计数器的工作方式与普通计数器相同,会循环计数至由常量组合器设定的工作模式值。如果不需要工作模式,且平台将以恒定拉力运行——则不需要恒定组合器——可以直接设定计算好的周期…… 这一整套装置的最后一个部件是泵。将计数器的输出端连接到泵上。为泵设定启动条件——当计数器等于1时启动。所有操作都只是为了启动泵一个周期,然后等待加速器将“美味的燃料餐点”烧尽。

为什么是1?因为在停靠站时数值会变为0——0不能使用。常量组合器的数值也不能使用——计数器会在R-1的数值时归零……由此还可得出,我们计算出的模式必须不小于2。上限为1的计数器显然无法工作……这也意味着,此方法仅适用于冗余系统。当最小R值为2时,泵将以50%的时间运行。 另外一点。平台只有在实际移动时才会被判定为正在移动,而非接收到移动指令时。这意味着,如果推进器中没有资源,采用此逻辑的平台将无法飞行。例如,当你刚建造好平台,或者以某种不可思议的方式在运行过程中耗尽了所有资源时。这种情况下需要“处理一下”——取消勾选泵的启动逻辑,然后恢复正常运行…… 都建好了?现在开始改造吧! 此前,我们设置的系统仅能发挥泵50%的潜力。对于初始平台而言,这已经绰绰有余,而且原则上也能满足大多数情况的需求。普通泵的性能为1200升/秒,单个加速器的消耗量为120升/秒。不过,将加速器的利用率超过50%并没有实际意义。但如果泵的数量不足怎么办?要是平台非常庞大,而加速器又是传说级别的呢?可以直接增加更多的泵——这是最简单的办法。但如果还是想将泵的利用率提升到100%,那就需要对方案稍作修改。理解何时需要添加泵或复杂化逻辑很简单——如果你的计算中R值小于2,那就是时候了。我们需要在电路中添加两个新的比较器,在常量组合器中添加工作模式状态标志,并修改公式本身。

首先,我们在组合器的模式中添加“标记”。当R≥2时,按照初始公式显示向下箭头(表示泵的功率为较低的50%);当R<2时,则显示向上箭头。对于R<2的情况,我们将使用另一个公式进行计算:R = P/(P-T×D/100)。为方便理解,我再重复一下公式中各参数的含义:R代表我们在组合器中记录的模式数值。P - 单种液体的泵/泵组性能 T - 连接到该泵/泵组的所有加速器的最大消耗量 D - 期望工作百分比 与第一种方案相同,R不能小于2。同样将重新计算后的值记录到模式中,但标记为“向上”。 现在是两个新的组合器。向它们输入计时器和常量组合器。在第一个组合器中设置条件。如果【旗帜向下】大于零,且【计时器】等于一,则发出【工作】信号。

第二个组合器 - 若【旗帜向上】大于零且【计时器】大于零,则输出【工作】信号。

将两个组合器连接到泵上。在泵中设置条件:当开启信号大于零时启动。

那么,在第一个公式中,我们计算的是泵在工作周期之间需要等待多少个周期。泵启动一个周期,提供燃料,然后等待下一个周期。根据这个公式,泵的运行效率不会超过其产能的一半。 而在第二个公式中,情况则完全相反。我们计算的是泵需要运行多少个周期后,才会停止一个周期。按照这个公式,泵的运行效率不能低于其额定功率的一半。大概就是这样。