Logistics Protocol (物流协议)
此技能定义了殖民地内能量物流的标准操作程序。它规定了能量如何从源头(Sources)输送到目的地(Sinks),以及 Creep 如何协调供需。
1. 供应链层级
源头(生产者)
- •主要:掉落资源(衰减快,拾取优先级最高)。
- •次要:采矿容器(标准来源)。
- •第三:墓碑和遗迹(机会性)。
目的地(消费者)
- •第1级(关键):Spawn、Extensions(生存)。
- •第1.5级(优先建造):在关键建筑(Spawn/Extension/Tower)上工作且激活了
priorityRequest的建造者。 - •第2级(防御):Towers(能量 < 500)。
- •第3级(主动支持):
- •升级者:当能量 < 50% 且正在工作时。
- •建造者:当能量 < 50%(标准主动配送)。
- •第4级(存储):Storage、Terminal(盈余)。
- •第5级(缓冲):普通容器、Controller Link。
2. 主动配送协议
搬运工使用加权评分系统来选择最佳配送目标,平衡优先级和距离。
目标选择算法
Score = BasePriority - (Distance * 1.0)
基础优先级
- •200:Spawn / Extension(关键生存)。
- •150:优先建造者(标记为
priorityRequest)。 - •120:Tower(防御/维修)。
- •100:升级者(活跃)。
- •80:建造者(标准)。
- •50:目标容器(缓冲)。
- •10:Storage(盈余)。
逻辑
- •搬运工扫描房间内所有有效目标。
- •如果优先级差距较小,较近的低级目标可能会覆盖较远的高级目标(尽管当前差距设计得足够稳健)。
- •多请求处理:搬运工通过每个 tick 重新评估最佳目标来固有地处理多个请求。如果携带足够的能量供多个 creep 使用,它将首先交付给得分最高的目标,然后是下一个。
3. 请求信号
Creep(升级者/建造者)可以通过 Memory 发出求救/需求信号:
标准请求(恐慌模式)
- •信号:设置
memory.requestingEnergy = true。 - •条件:能量 == 0,附近没有供应。
- •响应:标准搬运工配送(第3级)。
优先请求(智能供应)
- •信号:设置
memory.requestingEnergy = true并且memory.priorityRequest = true。 - •标记:建造者在
memory.targetStructType中标记作业类型(例如 "spawn"、"extension")。 - •条件:
- •角色是建造者。
- •目标是关键建筑(Spawn/Extension/Tower)。
- •能量 < 30%。
- •响应:搬运工将其视为第1.5级优先级,覆盖 Towers 和升级者。
终止
- •当
store.getFreeCapacity() == 0时,Creep 清除标志。
4. 防饥饿规则
- •建造者死锁:如果建造者能量为 0 且没有供应,它绝不能阻挡采矿点。它应该移动到"等待区"或请求配送。
- •搬运工空闲:如果搬运工有能量但没有标准目的地,它必须寻找升级者来倾倒能量,而不是休眠。
- •等待超时:等待搬运工的 Creep 会在 50 ticks(约 2.5 分钟)后超时。超时后(
😤 timeout),它们将放弃等待并从最近的源头自行采集,以防止无限饥饿。