[0.12.4][posila] Blueprint Containing Roboports: Utter Chaos
Posted: Mon Aug 24, 2015 12:03 am
First, my apologies. It's hard to say if this is a bug or just a pathological use-case, and all of the solutions I can think of are giving me headaches.
When placing this blueprint, which contains 16 roboports, ~4000 other items, and a footprint of 168x168, the following behavior is observed:
The nearest roboports are placed by construction bots. This extends the construction range, and the next row of roboports is also placed. However, these ports are not guaranteed to be powered, as the substations may not be placed yet (either due to the distance to the supply chest, the order that tasks are assigned to the bots, or simply because there are not enough substations in storage). The ports have a small amount of battery power when placed.
When the new roboport is placed, the expanded construction range also assigns building tasks to new robots for the parts of the blueprint that are now in range. Construction bots fly to storage, pick up materials, and make several stops to recharge along the way. While they are en route, the roboports at the furthest edges will run out of battery power, shrinking the construction range. This cancels the build tasks for these robots, who are now ordered to return the materials to storage. Some of these materials will be substations. Some of those substations would have been meant for powering some of the further roboports. Consequently, these other roboports will also run out of battery power, leading to a cascade effect of bots flying back and forth and accomplishing absolutely nothing.
The "WTF" moment comes when you are standing between the construction zone and your storage area. When one of the distant roboports runs out of battery power and shrinks the construction range, you will see thousands of bots suddenly stop, turn around, and return the materials to storage, only to immediately take them out of storage and go to build them in the nearer parts of the blueprint. Again, making several stops along the way to recharge. This fracas will continue for long enough for the blueprint to time out, and if you personally refresh the blueprint, it can go on for much longer.
When placing this blueprint, which contains 16 roboports, ~4000 other items, and a footprint of 168x168, the following behavior is observed:
The nearest roboports are placed by construction bots. This extends the construction range, and the next row of roboports is also placed. However, these ports are not guaranteed to be powered, as the substations may not be placed yet (either due to the distance to the supply chest, the order that tasks are assigned to the bots, or simply because there are not enough substations in storage). The ports have a small amount of battery power when placed.
When the new roboport is placed, the expanded construction range also assigns building tasks to new robots for the parts of the blueprint that are now in range. Construction bots fly to storage, pick up materials, and make several stops to recharge along the way. While they are en route, the roboports at the furthest edges will run out of battery power, shrinking the construction range. This cancels the build tasks for these robots, who are now ordered to return the materials to storage. Some of these materials will be substations. Some of those substations would have been meant for powering some of the further roboports. Consequently, these other roboports will also run out of battery power, leading to a cascade effect of bots flying back and forth and accomplishing absolutely nothing.
The "WTF" moment comes when you are standing between the construction zone and your storage area. When one of the distant roboports runs out of battery power and shrinks the construction range, you will see thousands of bots suddenly stop, turn around, and return the materials to storage, only to immediately take them out of storage and go to build them in the nearer parts of the blueprint. Again, making several stops along the way to recharge. This fracas will continue for long enough for the blueprint to time out, and if you personally refresh the blueprint, it can go on for much longer.