Short Circuit

Short Circuit

快速、紧凑、模块化的红石电路设计方式。

红石

短路

快速、紧凑、模块化的红石电路设计方案。

这里是用短路模组制作的《Bad Apple》视频:
视频缩略图

下载

短路模组可在 Modrinth 和 Curseforge 上下载,支持多种模组加载器,包括 Fabric、Forge、NeoForge 和 Quilt(使用 Fabric 分支)。

你也可以使用 JDK 21 并从源码构建该模组,运行以下命令:

git clone https://github.com/North-West-Wind/ShortCircuit.git
cd ShortCircuit
./gradlew build

编译后的模组文件将输出到 {loader}/build/libs/,其中 {loader} 可以是 fabric、forge 或 neoforge。

使用方法

如果你更喜欢视觉化的演示,我为此制作了一个视频。
视频缩略图

本模组提供了 4 种可合成的物品:

  • 电路 (Circuit)
  • 戳棒 (Poking Stick)
  • 真值分配器 (Truth Assigner)
  • 标签棒 (Labelling Stick)

电路

电路的合成配方
一个电路物品看起来像一个带有绿色火把的中继器。放置后,它显示为一个内部有地毯的玻璃块。这是一个未初始化的电路。要使其工作,手持戳棒,右键点击它。你将被带入电路内部。

内部有 6 面墙,其中央分别标记为 U(上)、D(下)、L(左)、R(右)、F(前)、B(后)。它们与你放置电路块的方向有关。

用戳棒潜行+右键点击墙面,根据需要将侧面标记为输入或输出。输入是外部红石信号传入的地方,输出是电路内部信号输出到外界的地方。

在内部建造你的电路。完成后,用戳棒右键点击墙面即可离开内部。

出来后,空手右键点击电路块。如果电路没有违反规则,你应该能在块中看到你放置在电路内部的组件。这个电路现在可以接收信号了!

复制

通过右键点击已放置的电路块上的电路物品,可以复制电路。

戳棒

戳棒的合成配方
如电路部分所述,戳棒是与电路互动的主要方式。然而,它还有其他用途。

潜行+右键点击一个电路,可以隐藏其内部组件。当有太多动态电路渲染导致卡顿时,这很有用。

你还可以使用戳棒设置电路的外部尺寸。对着空气右键点击该物品,可以在 4 到 256(仅 2 的幂次方)之间循环切换尺寸。

真值分配器

真值分配器的合成配方
这是短路模组中“快速”的部分。由于电路基于现有的红石组件制作,它们会有一定的延迟。真值分配器(又名洗衣机)解决了这个问题。

真值分配器是一种模拟动态(普通)电路以创建集成电路(IC)的机器。它记录动态电路的输出并为其构建真值表,因此得名真值分配器。

集成电路是真值分配器转换的输出结果。集成电路的主要优势是零刻延迟,即从外部源立即激活,并且在改变时也会立即更新相邻方块。

然而,需要注意,集成电路并非总是最佳选择。在以下两种主要情况下,你不应该将动态电路转换为集成电路:

  1. 故意需要延迟
  2. 电路包含记忆组件

第 1 点显而易见。由于集成电路是零刻的,转换后不会保留任何延迟。第 2 点指的是电路的输出是否依赖于电路内部非恒定状态的方块。例如,如果电路的输出依赖于内部的一个铜灯泡,并且该铜灯泡会根据不同输入改变状态,那么它就是一个记忆组件。

复制

与动态电路类似,集成电路可以通过相同的方式复制:右键点击块上的电路物品。任何电路物品都可以在动态电路和集成电路之间切换。

真值分配器设置

真值分配器也需要正确配置,才能输出正确的集成电路。

第一个数字字段是最大延迟。它以每游戏刻为单位。在每次模拟迭代中,如果电路输出在最大延迟后没有变化,其输出将被强制记录。

最大延迟下方的按钮是记录模式。可以在“首次变化”和“完整延迟”之间切换。“首次变化”使真值分配器在任一输出变化时立即记录输出,而“完整延迟”则等待完整的最大延迟时长后再记录输出。

最大延迟旁边的按钮是位模式按钮,可在 4、2 和 1 位之间循环。由于红石信号强度范围是 0 到 15,它可以表示为 4 位数字。在模拟过程中,如果设置为 4 位,将尝试所有可能的信号强度组合。然而,如果电路有多个输入面,这可能需要很长时间。例如,一个 3 输入电路将需要 16x16x16=4096 次迭代,即使最大延迟为 1 刻,仍需要超过 3 分钟。

对 3 输入电路使用 2 位模式将产生 4x4x4=64 次迭代,而使用 1 位模式则只需 2x2x2=8 次迭代。如果你的电路不依赖信号强度,考虑使用 1 或 2 位模式。

标签棒

标签棒的合成配方
标签棒是一种用于改变电路颜色的物品。这对于集成电路特别有用,因为它们都有完全相同的模型。改变颜色可以让玩家区分功能不同的电路。

右键点击任意电路块,该块将循环遍历 16 种染料颜色。潜行时这样做则会反向循环。

该棒也可以用于电路块内部的墙面。右键点击墙面,可以切换其注释。

已知问题

  • 当使用 MoreCulling 模组时,集成电路的方块模型可以用来透视世界。
  • 集成电路无法直接输出到电路块的墙面。

报告漏洞

请直接使用 GitHub 上的“问题”选项卡。

为了让我更容易修复问题,如果你遇到看似非预期的行为,请先尝试以下操作:

  • 创建有问题的电路的不同变体。这有助于缩小实际出错的范围。变体示例:
    • 交换组件顺序
    • 更改输入/输出面
  • 复制该电路并放置多个。检查是否有任何一个正常运行。

如果你确认某个电路始终存在错误,请在错误报告中同时包含该电路。

灵感来源

本模组的灵感来自另一个模组“压缩机器 (Compact Machines)”以及现实世界的计算机工程学。

压缩机器

这是一个模组,允许玩家创建单个方块,内部容纳更大的空间。玩家可以通过机器的侧面传递物品、液体和能量。

短路模组借鉴了这一概念,并将其应用于红石。

计算机工程学

不仅仅是计算机工程学,而是广义的电路设计。在现实世界的电路设计中,一个电路通常由更小、更简单的电路组成。

一些例子:

  • 一个 1 位全加器(FA),它将 3 个 1 位值相加并输出其和与进位,使用了 2 个异或门、2 个与门和 1 个或门。
  • 在算术逻辑单元(ALU)中,它基本上是与门、或门、非门、异或门的组合,外加一个全加器和一个多路选择器(MUX)。
  • 在 CPU 内部,它结合了 ALU、内存和其他一些寄存器来运行。

正如这些例子所示,我们使用之前设计好的电路来创建更新、更好、更复杂的电路。短路模组旨在通过将电路压缩到一个方块中,并使其可复制,从而实现电路的重用。

支持

如果你觉得我的项目很棒,请考虑在 Ko-fi 上支持我!
喝茶的 Summatia