
天空工厂 4 进行到第 5 期矿石树苗这条线终于全部落地。煤、铁、铜、金、红石、青金石、钻石、绿宝石……每一种树苗都开始稳定产出矿石。按正常玩法接下来要做的无非是收集、整理、熔炼、合成。但如果你这几期和我一样把产出端铺得比较大会发现一个很现实的问题材料产出速度远大于手工整理速度箱子越摆越多找一种材料要翻十几个箱子矿物倒是攒了一堆真要用的时候反而不知道去哪拿。所以这一期决定不急着继续扩张产能而是先停下来把“自动化资源存储系统”完整搭起来。目标很简单所有矿石树苗的产出自动进仓按类型自动分类按容量自动扩展缺料的时候能快速取出最好还能在系统里看出每种资源的实时库存。这篇文章会把整套系统的设计思路、搭建步骤、分类配置和常见问题完整拆开来讲。无论你是刚玩天空工厂没多久还是已经铺了一堆机器但一直被仓储问题困扰这套方案都可以直接复用或者至少给你一个值得参考的改进方向。1. 自动化资源存储系统是什么为什么要搭1.1 从“材料满地堆”到“流水线入仓”很多玩家对存储系统的理解还停留在“多放几个箱子”的层面。但天空工厂这类整合包的特点是产出源非常多而且每种产出源都会持续工作。矿石树苗种下去之后只要结构到位它就会不停地产出对应矿石不会因为你没有整理就停下来。于是你会看到这种情况主岛附近的箱子越来越多每个箱子里都混着三四组材料。想合成某个高级物品时先要把附近所有箱子翻一遍凑齐材料之后还要担心“这个材料箱子里是不是还有剩”。这种手动管理模式在初期能撑住因为产出速度慢、材料种类少。可到了第 5 期这个阶段矿石树苗种类几乎拉满每棵树苗背后还有对应的自动化收割、自动树苗补种、产物运输环节整个网络每分钟产生的材料数量已经远超手工处理能力。自动化资源存储系统要解决的问题就是把这些分散的产出统一收口形成一条清晰的流水线产出端 → 运输总线 → 分拣节点 → 分类存储单元 → 输出取料口。每一类材料只进属于它的箱子每个箱子都有明确的容量上限系统满了之后能自动报警或者自动扩容而不是让玩家一直手工搬箱子。1.2 一套存储系统的四个核心环节为了后面搭建时思路清晰这里先把自动化资源存储系统拆成四个部分后面所有操作都围绕这四个部分展开。输入层负责把各个矿石树苗的产出汇聚到同一条主通道里。通常使用管道、传送带或者物品导入设备。分拣层核心是“过滤”。系统必须知道“这块煤炭应该进煤炭箱而不是钻石箱”。常用的实现方式包括管道筛滤、分类机、标签匹配等。存储层真正存放物料的单元。可以是普通箱子也可以是扩容后的存储容器。关键指标是总容量和单类容量。输出层当你需要某种材料时能快速、准确地取出指定数量而不影响其他材料。常见做法是取料口、返回总线或者远程请求终端。一个合格的自动化资源存储系统这四个环节必须全部打通。只做到“自动进箱子”不算完整因为取料还是靠人翻箱只做到“分拣正确”也不够因为容量一旦爆掉整个分类网络就会堵塞后面所有产出都会堆在输入口。1.3 游戏里的自动化和软件自动化是同一套思维如果你接触过软件领域的自动化测试、自动化部署会发现天空工厂里的自动化存储思路和这些工程实践非常像。测试用例要分类就像矿石要按类型过滤CI/CD 流水线要处理产物就像管道要把产物送进对应仓库监控报警要关注部署是否失败就像存储系统要关注箱子是否将满。很多时候游戏里的“红石电路”和“物流管道”本质就是一套低级但直观的流程引擎。所以这篇文章虽然是在讲天空工厂但里面关于分类、过滤、容量规划、异常排查的思路完全可以迁移到其他自动化场景中。比如自动化存储的“分类配置”可以类比成接口测试里的请求分类存储系统的“防爆仓”可以类比成消息队列里的消费堆积输入层的总线汇聚可以类比成日志系统里的统一采集入口。理解了这套架构思想后续无论是玩其他工厂类游戏还是写真正的自动化脚本都会更容易上手。2. 环境准备与规划思路2.1 存档与地形要求在开始搭建之前建议先找一个比较平整的区域。很多整合包的主岛面积有限所以可以把存储系统建在主岛边缘或者单独扩展到相邻的空岛上。这一期我选择的位置是主岛北侧一块大约 20×20 的空地高度上预留了三层空间地下一层走输入总线地上一层放分拣器和存储箱地上二层留作取料通道。这里需要注意一个原则存储系统不要和产能机器挤在同一个平面。因为产能机器需要经常调整如果货运管道和机器贴在一起后期改动很容易误拆线路。优先把存储系统做成独立模块只留一个输入接口和产能区对接其余全部隔离。这样即使某一台矿石树苗机器需要重做也不需要动整个存储系统的结构。2.2 盘点资源清单先摸清“全部矿石树苗”有哪些动手之前先把所有矿石树苗列出来这是分类配置的基础。不同整合包的矿石树苗种类可能略有差异我当前这档存档里已经就位的包括这些资源类型树苗名称主要产物用途优先级基础矿物煤矿树苗煤炭燃料、合成基础矿物铁矿树苗铁锭/铁粒工具、机器基础矿物铜矿树苗铜锭/铜粒线缆、机器基础矿物金矿树苗金锭/金粒导电、合成红石类红石树苗红石粉自动化核心青金石类青金石树苗青金石附魔、合成高级矿物钻石树苗钻石高级工具高级矿物绿宝石树苗绿宝石交易、特殊合成下界类下界石英树苗下界石英观察者等合成这份清单不是最终答案因为后期可能还会加入其他树种或特殊矿产但作为第一期存储系统覆盖这些已经够用了。后面每加入一种新树苗只需要在分类配置里新增一条规则不必推翻整个系统所以前期规划时要注意模块化。2.3 设计指标容量、吞吐量、扩展性搭建存储系统之前先定三个指标否则边搭边想很容易返工。容量指标每类矿石至少要有两个大容量存储单元一个作为“热存储”日常产出入口另一个作为“冷存储”备用扩容。如果单箱容量是 64 组那么每类资源初期估算 24 个箱子比较稳妥。吞吐量指标输入总线必须能承受所有树苗同时产出的峰值。判断方法很简单把所有树苗的产出端同时打开观察一段时间内管道口是否有物品堆积。如果堆积说明输入总线处理能力不够。扩展性指标新加入一种资源时能否在不拆掉现有结构的情况下新增一个分类分支。这就意味着每条分类支线要尽量独立不要把所有过滤器串成一条链子。这三点是后面所有搭建动作的验收标准。如果系统搭完不符合这三个指标说明结构设计还有问题宁愿拆掉重来也不要勉强使用。3. 核心机制与设计原理解析3.1 输入层多个产出源如何汇聚到同一个总线上矿石树苗的机器结构通常有独立的产物出口比如收集机下方的箱子、侧面的输出口等。如果每个出口都单独接一条线到存储区线缆会非常乱而且后期不好排查。所以正确做法是先做“汇聚”再做“分发”。汇聚的思路是把所有产出源接到同一条“输入总线”上。输入总线可以理解成一条单向循环通道所有产物进入总线后按顺序向前流动。分拣器会在总线旁监听一旦发现符合条件的物品就把物品抽离总线放入对应存储单元。搭建输入总线时要注意两个细节。第一个细节是总线回路要尽量短物品从入口到最远分拣点的距离不要过长否则物流延迟会让前面分拣器拿不到后续产物。第二个细节是总线入口建议设置一个缓冲箱缓冲箱的作用是应对短时间内的产出洪峰避免产物在机器出口处堆成一地。缓冲箱容量不用太大两三组就能起到很好的平滑作用。3.2 分拣层过滤规则、优先级与筛选条件分拣是整个系统里最容易出错的位置。很多玩家搭完分类系统之后发现“钻石跑进了铁矿箱”大部分情况下不是分拣器坏了而是过滤规则没有写对。分拣器的工作逻辑是每个分拣器只认一种或少数几种物品当检测到符合条件的物品路过时就把它从总线里抽出来。所以分拣器的核心是“精确匹配物品 ID”。如果你用的是带标签的过滤方式要确保标签范围没有把其他物品也包括进去。例如煤炭有“煤炭”和“木炭”两种常见形态如果只匹配“物品:煤炭”那么木炭不会被识别会继续留存在总线里一直跑到末端造成堆积。分拣顺序也会影响效率。这里推荐的策略是把数量大、产量高的资源放在靠近输入口的位置把稀有资源放在后面。因为煤炭、铁这类产物每天都会大量经过如果它们的分拣点距离入口太远会导致大量物品在总线上反复流转造成不必要的卡顿。钻石、绿宝石这类稀有资源产量低放在后面完全不会影响运行效率。分类优先级还需要考虑“同源产物”的问题。比如金矿树苗可能同时产出金粒和金锭如果你只给金锭设置了分拣支路金粒就会一直留在总线上。因此每类树苗的产物最好把“粒、锭、原矿、成品”都纳入分类规则要么让它们进同一个箱子要么为它们单独设置分流点保证总线末端没有残留物。3.3 存储层容量估算与防爆仓设计存储层是系统的心脏。单类资源如果容量不足分拣器会把物品一直往箱子里塞直到箱子满了之后后续物品只能停留在管道里最终把整条总线堵死。这个现象和软件系统里的“队列堆积”非常像消费者处理不过来了生产者还在不停投递消息最终系统整体不可用。所以存储层必须提前做好防爆仓设计。常用手段有三个第一是分类箱后接扩容箱当主箱将满时自动把物品导向备用箱第二是在总线末端设置“溢出回收箱”一旦总线末端出现物品至少不会掉在地上同时可以通过观察溢出箱里的物品种类快速判断哪个分类支路出了问题第三是定期人工巡检或者用游戏里的物品计数装置统计各箱子的存量。容量估算方面一个比较稳妥的经验公式是单类资源存储单元数量 预估每小时产出组数 × 预计离线时间小时 ÷ 单箱容量。如果只算在线期间的存储两个箱子基本够用但如果考虑挂机产出至少按 68 小时离线来算否则第二天上线经常能看到满地的矿物。3.4 输出层取料口与回写通道很多时候存储系统只考虑了“存”忽略了“取”。结果材料是分类好了取用还是要跑到几十个箱子前面一个一个翻这实际上又回到了手动管理的老路。输出层建议做成集中取料口。具体做法是把所有分类箱的取料面朝向同一个走廊走廊上方标记资源名称玩家站在走廊里就能看到所有箱子的状态。更进一步可以在取料口和总线之间建立“回写通道”当合成站缺少某种材料时不需要人工跑到仓库拿而是通过请求信号让对应箱子自动向合成站输出一组材料。这个就相当于自动化系统的“接口调用”。在天空工厂这类整合包里实现回写通道的常见方式是使用物品请求器和远程库存终端。如果没有这些设备也可以先用“取料走廊 箱子标签”方式代替虽然不能完全自动化但至少找料效率比翻乱堆高很多。4. 实战搭建一套可扩展的资源存储系统4.1 创建项目蓝图与资源清单文件动手搭建之前先建一份资源清单。虽然是游戏内操作但用文件把设计记录下来可以避免中途忘记结构。下面是我在本地记录用的资源清单实际使用时可以按自己的整合包改物品名。{ project: sky_factory_4_storage, version: phase_5, inputs: [ coal_sapling, iron_sapling, copper_sapling, gold_sapling, redstone_sapling, lapis_sapling, diamond_sapling, emerald_sapling, nether_quartz_sapling ], outputs: [ coal, iron_ingot, copper_ingot, gold_ingot, redstone_dust, lapis_lazuli, diamond, emerald, nether_quartz ], storage_units_per_type: 4, buffer_size: 3 groups, overflow_recovery: end_of_bus_chest }这份文件的核心作用不是给游戏读取而是让自己明确“系统要处理哪些资源、每种资源分配多少容量”。如果你后面加入新的树苗优先修改这份清单再回游戏里增加对应分拣支路。4.2 搭建输入总线与缓冲节点确认地块平整后先建立主总线。我选择在空地中央挖出一条 2 格宽、1 格深的通道通道里铺设物流管道管道从产能区方向接入。产能区的各个产物出口先汇总到一个缓冲箱再从缓冲箱的单一出口接入总线。总线长度按资源种类数设计每类资源预留 3 格长度用来放置分拣器。如果当前有 9 类资源主总线上至少需要 27 格的分拣区再加上转角、入口和末端回收箱所以总线直线段建议留 40 格以上。输入端接好之后先不要装分拣器直接打开所有树苗的产物输出让产物在总线里跑一圈。这个步骤是用来验证输入层是否通畅的。如果某个地方出现物品卡住优先检查管道朝向是否接反以及是否有直角拐弯导致物品无法通过。确认总线可以完整循环一圈后再进行下一步。4.3 编写分类规则配置分类规则我习惯用表格记录因为后续维护时看起来更直观。每一个分拣点对应一条规则规则内容包含物品匹配类型、目标容器编号、优先级三个字段。下面是一个简单的 YAML 格式示例用来表达分类规则的逻辑实际游戏内需要按对应模组的过滤器来配置sorting_rules: coal: match: minecraft:coal target: storage_unit_01 priority: 1 iron: match: minecraft:iron_ingot target: storage_unit_02 priority: 2 copper: match: minecraft:copper_ingot target: storage_unit_03 priority: 3 gold: match: minecraft:gold_ingot target: storage_unit_04 priority: 4 redstone: match: minecraft:redstone_dust target: storage_unit_05 priority: 5 lapis: match: minecraft:lapis_lazuli target: storage_unit_06 priority: 6 diamond: match: minecraft:diamond target: storage_unit_07 priority: 7 emerald: match: minecraft:emerald target: storage_unit_08 priority: 8 nether_quartz: match: minecraft:nether_quartz target: storage_unit_09 priority: 9 overflow: match: * target: overflow_chest priority: 0这里的 priority 表示分拣器在总线上的先后顺序。数字越小越靠近输入口。产量高的煤炭、铁排前面钻石、绿宝石排后面最后一行的 overflow 用于回收任何未匹配物品。如果你使用的模组不支持“匹配所有”这种通配规则也可以用“空白过滤槽表示匹配任意物品”来代替。4.4 分拣节点与存储单元部署按分类规则在总线上依次安装分拣器。每安装一个分拣器都要在后面紧接一个存储单元存储单元建议用双层箱子而不是单箱因为双层箱子在同样占地面积下容量更大。具体部署顺序是总线一侧放分拣器分拣器输出面朝向存储箱总线另一侧预留检修通道。每个存储单元上方的告示牌写上资源名称和当前分拣规则方便后续快速识别。这个看起来很小的习惯在实际维护时能省下大量时间。分拣器安装完成后不要急着把所有树苗全部打开建议先单独测试一条支路。比如只打开煤矿树苗的产物输出观察煤炭是否进入 1 号箱。如果煤炭进入正确位置再依次测试其他资源。这样做的好处是一旦发现“铁矿石进了煤矿箱”你只需要检查 1 号分拣器和 2 号分拣器的过滤配置而不需要在一堆机器里大海捞针。4.5 容量扩展与溢出告警9 类资源各配备 4 个存储箱以后整体容量已经比较可观但还是有可能爆仓。我在总线末端放置了一个“溢出回收箱”同时用下面这段伪代码形式来记录容量监控逻辑方便后续用游戏内逻辑或外部工具实现for each storage_unit in storage_system: current_count get_item_count(storage_unit) max_count get_capacity(storage_unit) fill_rate current_count / max_count if fill_rate 0.8: send_notification([WARN] storage unit %s is almost full % storage_unit) elif fill_rate 1.0: redirect_flow(storage_unit, overflow_chest) send_notification([ALERT] storage unit %s is FULL % storage_unit)在游戏里如果支持输入输出总线控制可以设置一个“满箱检测信号”当箱子 80% 满时点亮黄色灯100% 满时点亮红色灯并自动把物品导流到备用存储区。如果整合包没有这种设备也可以用“比较器检测箱子满度 红石灯”实现原理一模一样。实际测试时我把煤矿树苗的产物通道加速运行了一段时间煤炭很快占满了 1 号箱。由于之前设置了备用导流后续煤炭自动进入 2 号箱总线没有出现堵塞。这说明容量扩展机制是生效的。4.6 运行验证与数据观察整套系统搭好后我持续观察了大约 30 分钟验证项包括所有矿石树苗产物是否都能被对应分拣器识别并入库。总线末端溢出回收箱是否有非预期物品进入。生产机器是否因物流不通产生停摆。从取料口取出指定材料是否顺利。验证结果显示9 类矿石树苗中8 类产物正常入库只有下界石英树苗的产物出现了少量未匹配原因是它同时产出了“下界石英”和“石英粒”两种形态而我只设置了下界石英的分拣规则。把规则补上之后问题解决。这也说明分类规则的维护不能只做一次随着矿石树苗产物形态增加需要定期复查。5. 常见问题与排查思路5.1 问题排查清单搭建和运行过程中最常见的问题基本集中在以下几类问题现象常见原因解决思路总线上物品不流动管道朝向接反或线路断裂顺着物流方向逐段检查管道连接某种物品进入错误箱子分拣规则匹配范围过宽核对过滤配置改为精确物品 ID某类资源大量堆积在入口对应分拣器位置太靠后将高产量资源分拣点前移箱子满了但总线还在送缺少溢出导流机制增加备用箱或末端回收箱取料口取不到指定材料输出层和存储箱没有连接检查取料设备方向与库存接口游戏卡顿明显总线上物品实体过多提高分拣效率减少物品在总线上的停留时间新加入树苗后原产物串仓新树苗产物 ID 与旧过滤规则冲突新增独立分支并复核匹配规则5.2 总线堵塞问题深入分析总线堵塞是自动化存储系统中最常见的故障而且通常是“二次故障”一开始只是某个分拣器没有识别某种物品导致物品一直被运到总线末端末端回收箱满了以后物品开始在总线上折返、堆积最终把整条总线堵住所有资源都无法入库。排查时不要只盯着堵住的点看要从堵点往前找看这个物品是从哪个产出端进来的它为什么没有被前面的分拣器拿走是分拣规则没匹配还是分拣器被禁用还是对应箱子满了判断顺序是先看物品类型再看过滤规则最后看对应存储箱余量。这三个检查点基本能覆盖 90% 的堵塞原因。5.3 分类串仓的边界情况分类串仓通常是因为“物品 ID 太相似”。比如铜粒、铜锭、铜矿石是不同的物品如果你设置了“匹配所有含 copper 的物品”这类模糊匹配就会把它们全部抽走全部塞进同一个箱子。这种模糊匹配虽然方便但副作用很大。正确做法是精确匹配宁可多写几条规则也不要依赖模糊匹配。如果整合包里支持 NBT 匹配还要注意带有不同标签的同名物品可能会被当成不同物品比如附魔物品和普通物品。在矿石树苗场景里这个问题不常见但如果你后期把存储系统扩展到怪物农场产物就必须考虑。6. 工程化建议与扩展方向6.1 命名与区域规划这套系统开始运行之后最重要的维护原则是每个模块都要有明确标识。总线入口、分拣点、存储箱、取料口、溢出回收箱这五类位置建议全部贴上告示牌或使用不同颜色方块区分。我现在的习惯是输入缓冲区和总线段用绿色标识分拣区用黄色标识存储区用蓝色标识溢出和报警区域用红色标识。这样一旦出现问题别人或未来的自己一眼就能看出系统里各个部分的分工。6.2 存档备份与变更回滚搭建自动化存储系统时频繁调整分拣器和管道位置是难免的。如果你和我一样经常头脑一热就改动大片结构强烈建议在改动前备份存档。特别是当系统已经稳定运行时一个不小心拆错管道可能要让整个生产线停摆很久。备份是一个成本极低但收益极高的操作。每次做比较大的变更前把存档目录复制一份变更失败后直接回滚不用重新搭建。这个习惯和开发环境里的“发布前备份”“数据库变更前导出 SQL”是一样的道理。6.3 减少卡顿与提升性能天空工厂发展到后期卡顿主要来自两方面机器实体过多和物流实体过多。存储系统能做的就是尽量减少物品在管道里的自由穿行让物品尽快进入箱子变成静态存储。具体做法包括把高产量资源的分拣点放在总线入口附近缩短物品停留时间避免使用大量循环管道尽量避免用实体形式展示物品很多模组里的“物品展示”方式会产生额外开销。如果游戏开始明显掉帧优先检查总线上有没有大量物品在循环往返这是一个非常容易忽视的性能瓶颈。6.4 从存储系统走向全流程自动化存储系统只是自动化链路中的一环。当所有材料都能自动入库、按需取用之后下一步就可以把重点放到“全流程自动化”上自动从仓库请求材料自动送入合成台合成产物自动回到仓库。这个闭环一旦形成整条生产线就不再依赖玩家手工搬运真正变成一套可持续运行的工厂系统。如果你熟悉软件自动化里的“流水线”概念会发现这个升级过程非常自然存储层是数据库合成层是业务处理取料口是 API回写通道是消息队列。先把数据库设计好后面的业务逻辑才能稳定运行。所以不要觉得存储系统“不够炫酷”它是整个自动化工厂的地基。7. 小结与下一步计划这一期把矿石树苗的自动化资源存储系统完整搭完核心成果有三个所有已就位的矿石树苗产物都能自动进入对应存储箱总线末端有溢出回收机制暂时不会因为单类资源爆仓而全系统瘫痪取料走廊已经形成日常取材料不需要再翻大量箱子。但也有一个还没解决的隐患就是下界石英树苗这类“多形态产物”的过滤规则还需要继续细化。这也是后面维护中需要重点关注的地方每次新增树苗都要第一时间更新分类规则并在总线末端观察几天确认没有未匹配物品堆积后才能放心。下一步计划先把“自动合成请求”做出来让取料口可以直接按组数向合成台输出材料而不是靠人工站在箱子前面取。这步完成之后再考虑加一套简单的库存统计装置最好能直观看到每一种矿石目前的存量。毕竟存储系统的最终目的不只是“把东西放进去”而是“随时知道有什么、用的时候拿得到”。如果你也正在搭自己的自动化存储系统建议先按这套思路把资源清单列清楚再动手铺总线。分类规则、容量规划和溢出处理这三件事无论用什么模组实现都是绕不开的核心问题。先把这部分想明白了后续接任何自动化设备都会顺手很多。