从一个可见的产线和可验证的生产规则开始,打造一款原创工厂游戏。在虚构的里德台地(Reed Mesa)车间中,提取机将原始瓷砖输送给压机,压机再将成品面板发送至货箱码头。如果压机速度过慢,输入队列最终会填满,导致提取机停止工作。
运行产线六个时钟周期(ticks),然后仅修改压机的调度。下方的两条轨迹展示了第一个货箱到达的时间、物品等待的位置,以及更快的处理速度如何改变结果。
放置一条短生产线

Coffee Stain 将 Satisfactory 描述为一款第一人称工厂建造游戏,包含传送带网络。对于你自己的项目,请使用连接生产阶段的广泛概念,制作一个拥有自身设备、场景和规则的小型空间谜题。
在网格位置 (0, 0) 放置一个提取器,在 (2, 0) 放置一个压机,在 (4, 0) 放置一个货箱码头。用传送带 A 将提取器连接到压机,用传送带 B 将压机连接到码头。每条传送带跨越两个网格单位。从提取器中的八个原始方块开始,其他地方没有任何物品。
定义缓冲区和滴答阶段
每条传送带最多容纳两个物品,并且每个滴答最多交付一个物品。每个接收机器都有一个两物品的输入缓冲区。当压机运行且传送带有空间时,它会消耗一个原始方块并将一个面板放到传送带 B 上。码头每个滴答最多消耗一个面板,并记录一个完成的货箱。
| 阶段 | 动作 | 等待条件 |
|---|---|---|
| 1. 提取 | 将最多一个原始方块放到传送带 A 上。 | 没有原始库存或传送带 A 已满。 |
| 2. 交付 | 每条传送带在每个时钟周期开始时最多交付一个位于其上的物品。 | 接收输入缓冲区已满。 |
| 3. 压制 | 在运行周期内,消耗一个原始方块,并在传送带 B 上放置一个面板。 | 无输入、传送带 B 已满,或压制任务被安排为空闲。 |
| 4. 对接 | 最多消耗对接输入中的一个面板,并添加一个成品板条箱。 | 对接输入中没有面板。 |

同时应用传送带交付。在当前时钟周期内添加到传送带上的方块,无法在当前周期交付,只能稍后交付。在第二阶段交付到压机输入的方块,可在同一时钟周期的第三阶段进行处理。在第二阶段交付到对接输入的面板,可在第四阶段使用。这确保了阶段顺序的可复现性。缓冲区已满不会删除物品。传送带会保留该物品,当上游机器自身的输出传送带填满时,该机器将等待。
追踪瓶颈
在基线情况下,压机仅在奇数节拍运行。表格记录每个节拍结束后的状态。传送带和缓冲区列统计当前位于这些位置的物品数量,而货箱列统计累计完成的产出。
| 节拍 | 原材料库存 | 传送带 A | 压机输入 | 传送带 B | 货箱 |
|---|---|---|---|---|---|
| 1 | 7 | 1 | 0 | 0 | 0 |
| 2 | 6 | 1 | 1 | 0 | 0 |
| 3 | 5 | 1 | 1 | 1 | 0 |
| 4 | 4 | 1 | 2 | 0 | 1 |
| 5 | 3 | 2 | 1 | 1 | 1 |
| 6 | 3 | 1 | 2 | 0 | 2 |
在第六个节拍开始时,传送带 A 已满。尽管第二阶段稍后会将一个方块移入压机缓冲区,但提取器仍停留在第一阶段等待。因此,原材料库存保持在三个。在提取器旁边显示该等待原因,比仅显示单个输出计数器更便于诊断积压问题。

修改一个调度并重新播放
重置库存、传送带、缓冲区、计时器和成品箱。仅修改 Press 的操作,使其在每个 tick 执行。第 1 至第 6 个 tick 后的成品箱数量分别为 0、0、1、2、3 和 4。原材料库存最终为 2,传送带 A 上有一个方块,Press 输入为空,传送带 B 上有一个面板。
基准方案最终产出 2 个箱子,而修订后的时间表产出 4 个。这两种结果均符合此虚构六 tick 测试用例中的规则。为了隔离疑似 bug,请比较两条轨迹中首个出现差异的 tick。在第 2 个 tick,修订后的 Press 可以消耗第二阶段交付的方块,并在第三阶段将一个面板放置到传送带 B 上。
向 AI 提供工厂测试用例
向构建者提供初始状态、阶段顺序以及视觉布局。下方的提示词包含这两个验收运行。
构建一款名为 Reed Mesa 的原创浏览器工厂游戏。
在 (0,0) 放置提取器,在 (2,0) 放置压机,在 (4,0) 放置码头。
用传送带 A 连接提取器和压机,用传送带 B 连接压机和码头。
每条传送带跨越两个网格单位,容纳两个物品,且每个 tick 最多交付一个物品。
每个接收机器的输入缓冲区容量为两个。
初始状态:提取器中有八个原始方块,传送带、输入和输出均为空。
对于每个 tick:首先,如果空间和库存允许,在传送带 A 上放置最多一个原始方块。
然后,如果目的地有输入空间,同时从每个在 tick 开始时存在的传送带交付最多一个物品。
接着,如果已排程且空间允许,压机消耗一个输入并在传送带 B 上放置一个面板。
最后,码头从其输入中消耗最多一个面板,并记录一个完成的货箱。
新添加到传送带上的物品不能在同一 tick 内交付。
在阶段 2 交付到机器输入的物品,可在同一 tick 的该机器后续阶段中使用。
被阻塞的机器等待而不删除物品。显示每个等待原因以及按时间顺序排列的状态日志。
基线压机仅在奇数 tick 工作。提供一个选项使其在每个 tick 都工作。
每个 tick 后记录原始库存、传送带 A、压机输入、传送带 B 和完成的货箱。
基线预期行:(7,1,0,0,0), (6,1,1,0,0), (5,1,1,1,0), (4,1,2,0,1), (3,2,1,1,1), (3,1,2,0,2)。
每 tick 预期行:(7,1,0,0,0), (6,1,0,1,0), (5,1,0,1,1), (4,1,0,1,2), (3,1,0,1,3), (2,1,0,1,4)。
包含一个步骤控制和重置功能,用于恢复库存、所有队列、输出和基线排程。
使用原创的 mesa 车间艺术和可读的键盘可访问控件。
从重置状态逐步执行两次运行。检查每个 tick 的传送带计数和压机输入,而不仅仅是最终的货箱总数。使用 首次构建指南 来调整测试用例。在 SEELE AI 游戏制作器 中构建 Reed Mesa,并在添加更多机器之前验证其日志。
常见问题
第一款工厂游戏应该包含多少台机器?
从一个源、一个处理器和一个输出码头开始。两条连接传送带为你提供了一个有意义的观察点,用于查看等待中的物品。里德台地(Reed Mesa)测试用例使用三台机器和六个刻度的运行周期,因此你可以在扩展布局之前检查所有状态。
如何展示生产瓶颈?
在机器当前状态旁边显示每个缓冲区和传送带的数量。当满载的传送带阻塞源时,保留该物品并显示等待原因。比较不同刻度下等待物品的位置,以识别哪个阶段造成了积压。
为什么要定义模拟阶段的顺序?
阶段顺序决定了新生产的物品是立即移动还是必须等到后续刻度。固定的顺序使追踪可复现,并使边缘情况更容易调试。指定每个刻度开始时存在哪些物品。
我应该如何测试更快的机器调度?
重置所有缓冲区和计数器,仅更改处理器调度,并运行相同数量的刻度。在添加升级或新资源之前,比较完整的追踪记录。在这个虚构的测试用例中,两种调度在第六个刻度时产生了不同的板条箱数量。


