Alt-F4 #31 - 运算器速成班  2021-04-16

作者 pocarski, T-A-R, 编辑 stringweasel, Nanogamer7, Conor_, Therenas, Firerazer,
翻译 Ph.X

目录

经过一周的短休,Alt-F4 带着第 31 期又回来了。本期中,pocarski 又谈到了更多在异星工厂中构建计算机逻辑的方法,这次的主题是运算器,你能发现它的使用比你想象的要简单得多。之后,Big Community Games 宣布了他们下一个激动人心的活动,这次将围绕着工业革命而展开。

运算器以及为什么你无需畏惧它们 pocarski

在科技树中,有很多技术并不是完成游戏所必需的,因此经常被排挤。有些是可以理解的,例如和平模式下的军事科技。而另一些尽管能够提供非凡的改进但也不被考虑。信号网络就是这样一种技术,这将是我在本文中探讨的内容。

信号网络主要有四部分组成:线缆、常量运算器、判断运算器和算术运算器。

用线缆连接的 3 种运算器

常量运算器持续输出你设定的任何信号(也无需供电);判断运算器在满足某个逻辑条件时输出一些信号;算术运算器进行数学运算。线缆的作用就像一种“信号云”,所有输出到线缆上的信号都可以被连接到线缆上的所有东西读取。红线和绿线的功能相同,但可以连接到同一个设备上,而不会相互干扰。

基本元素

我们来看看三个非常简单且有着广泛应用的单运算器模块。这些模块分别是:脉冲发生器、RS 锁存器和计数器。我们先从脉冲发生器说起,它长这个样子:

用算术运算器制作的脉冲发生器

脉冲发生器是最容易理解的。输入通过红线直接传递到输出,反转的输入在经过标准的运算器延时后加到同一根红线上。两个值在同一根线上会相互抵消,也就是说输出与输入完全相等,但只持续一个游戏 Tick。在这里,使用“每个信号”可以确保电路可以接受任何信号作为输入。如果你想让它成为特定的信号,你可以用所需的信号替换输入和输出中的“每个信号”。这个电路的用途真是太多了,尤其是与计数器结合使用时。

用判断运算器制作的 RS 锁存器

接下来是 RS 锁存器。它的输入是 1 个“S”信号或 1 个“R”信号,代表设置(Set)和复位(Reset)。当它接收到一个“S”信号时,运算器的条件就变成了真。它对自己是循环的,所以它输出的 1 个“S”会加到输入上,即使在原来的“S”输入关闭后,也会保持条件为真。同理,当它接收到“R”输入时,条件变为假,关闭“S”输出,打破循环。这个电路最好用于想要某种迟滞的系统,其中一个状态触发“S”输入,另一个状态触发“R”输入。

用判断运算器制作的计数器

最后是计数器。从结构上看,它和 RS 锁存器是一样的,但这次的输出被设置为输入数值的“所有信号”。这意味着,在满足判断运算器的条件时,它将不断给自己的输出,从而记住它们。它每接收到一个信号,就会按接收到的数量递增记忆中该信号的值。一旦条件被打破,内存就会被清空,因为判断运算器不再允许信号通过。与脉冲发生器类似,如果你想让它只记住一个信号,就把输出中的“所有信号”换成所需信号。这个电路,就像脉冲发生器一样,有广泛的用途,但最流行的是用于跟踪物品的数量。

基本样例

现在,让我们来探讨一些能让这些模块派上用场的情景。

比方说你有一个反应堆的蓝图,在这个蓝图中,每取出一个乏燃料棒会触发放入一个新的铀燃料棒。这样的设计必须手动启动,因为反应堆在刚建成时是空的。你最理想的是增加一个电路,一旦所有铀燃料棒箱里都有了物品,就精确触发一次燃料补给用机械臂。这里就需要一个单稳器。每个燃料箱子都连接一个运算器,检查里面是否有足够的物品,然后把所有这些运算器连到一个运算器,检查所有箱子是否都准备好了。然后这个运算器输出一个“乏燃料棒”信号到一个单稳器,这个单稳器连接到反应堆的每一个燃料补给用机械臂。这就使得所有的燃料补给用机械臂在有燃料可用的瞬间准确地触发一次,自动启动反应堆。推而广之,这也使得反应堆在燃料耗尽时自动重启。

反应堆加料电路设置

接下来,一个经典的例子:备用电源。想象一下,你有一个蓄电器阵列,如果你想在电量不足时激活你的锅炉,你可以直接将一个电闸连接到蓄电器上,并告诉它,如果蓄电器低于,比方说,20% 的电量时,就激活它,但这只会导致它快速开关,使蓄电器一直保持在 20% 的水平。相反,你应该使用一个 RS 锁存器。当蓄电器电量低于 20% 时,一个运算器输出“S”,当电量高于 70% 时,另一个输出“R”。将它们都挂在锁存器上,并将锁存器的输出连接到一个在 S > 0 时合上的电闸,这样当电量低于 20% 时就会激活电闸,并保持备份运行,直到电量回升到 70% 以上。

后备电力电路设置

最后,一个很多人害怕建立的产线:铀增殖。我们需要查看 3 个机械臂:输入、输出、回收。最后一个不是一个单一机械臂,但我们只关心机械臂链条的第一个环节。输入机械臂不需要任何控制逻辑,它只是抓取 3 个铀-238 物品,并在需要的时候装载它们。当回收发生时,输出机械臂必须被禁用,以便不取出任何催化剂物品。回收机械臂必须 准确 地取出 40 个铀-235,以及 2 个铀-238。回收机械臂持续接收铀-238 的信号,这使它将其列入黑名单。它开始取出铀-235,每取出一次,计数器就增加抓取的数量。机械臂也在接收一个恒定的 -39 个铀-235 信号,这并不影响筛选器。最终,机械臂将从绿线读取 40 个铀-235,从红线读取 -39 个铀-235。它现在看到的是一个正的铀-235 总量,由于铀-235 在信号列表中的位置较早,它优先于铀-238 信号。机械臂现在将铀-235 列入黑名单,这意味着它转而取出 2 个铀-238。这样做有两点:清除计数器和触发输出机械臂,它现在别无选择,只能取出剩余的铀-235。回收的 2 个铀-238 物品将在下一个周期开始时放入。铀-238 的回收不需要任何额外的逻辑,因为输入机械臂最多只能放入 3 个物品,另外两个位置将留给回收的铀。

铀增值电路设置

结论

给出的每一个例子都可以根据用户进行改进以满足更具体的需求。有时可以通过基本的数学和逻辑来完成,其他时候你需要再增加几个基本模块。例如,你可以在铀增值电路中增加第二个计数器,以防止离心机在输入流中含有一些铀-235 的情况下过满而停转。

信号网络的每一个里程碑都是一步步努力实现的,把整体拆成部分,然后再把部分进一步拆分。毕竟,现代计算机就是这样发展起来的——用晶体管做一个逻辑门,然后用逻辑门做一个锁存器内存和加法器,再用锁存器内存和加法器做一个 RAM 和 ALU,然后用这些做一台计算机。如果你能做到有时想“嘿,我以前解决过这个问题”,那么你就可以用电路实现任何功能。

全速前进! T-A-R

Big Community Games 很高兴地宣布一个新的 Factorio MMO 活动。已经探查到一片富含矿石的 Nauvis 区域,这是个让我们本周六一起发射火箭的绝好机会!这次聚会的主题将是蒸汽朋克。Deadlock989 的工业革命 2(Industrial Revolution 2)将为我们带来美妙的蒸汽和冒烟的燃料,甚至更多。

IR 组装机,在 FFF #311 中有登场

与原版相比,我们的工具箱得到了诸多技术的扩展。新的材料和工艺将以一种非常愉快的方式让制作火箭的过程变得更加复杂。活动页面有完整的 Mod 合集和详情。服务器将于北京时间周日凌晨 2:00 在常规多人游戏大厅开放。

倒计时已逾期

欢迎访问我们 Discord 的聊天和语音频道。工程师们已经在收集和编制计划。BCG 也非常欢迎愿意在未来参与组织类似活动的人士。

给你的外骨骼上好油,享受活动吧!

征稿

一如既往的,我们正在召集任何想要为 Alt-F4 做出贡献的人,无论是提交文章还是帮助翻译都可以。如果您有些有趣的想法,并乐于与社区分享,这里就是一个好地方。如果您没有太大把握,我们会很乐意帮助您讨论内容创意和结构问题。如果您有意参与,从加入 Discord 开始吧!