[2.0.28] Items overcommitted to personal logistics sometimes cause space platforms to ignore wait conditions

Post your bugs and problems so we can fix them.
nthexwn
Burner Inserter
Burner Inserter
Posts: 18
Joined: Wed Jun 28, 2017 6:20 am
Contact:

[2.0.28] Items overcommitted to personal logistics sometimes cause space platforms to ignore wait conditions

Post by nthexwn »

What did you do?
1.) Have a space platform with a wait condition of "time passed" (IE: 150 seconds).
2.) Have a space platform request a scarce item (IE: epic railguns) where there's currently no availability on the planet.
3.) Also request this item in your personal inventory.
4.) Have a setup which infrequently produces this item due to quality randomness.
5.) Wait for the item to be produced and delivered to the space platform.
What happened?
1.) The game sometimes overcommits the item to both your personal logistics and the rocket silo delivering the item to the platform
2.) Between the two delivery targets, the game prioritizes your personal logistics request.
3.) The rocket silo still thinks it's going to get the item and the request is highlighted in yellow in the space platform (indicating imminent delivery).
4.) You receive the item.
5.) The space platform continues to wait for the "imminent delivery" which is no longer coming. It will ignore the "time passed" wait condition in this state.
6.) The space platform will halt indefinitely until another of the scarce item is produced.
What did you expect to happen instead?
1.) The game doesn't overcommit the item.
2.) Between the two delivery targets, the game prioritizes your personal logistics request.
3.) The rocket silo doesn't think it's going to get the item. When the "time passed" condition is triggered, it completes any imminent deliveries for other item types and proceeds to the next destination.
4.) You receive the item.
Does it happen always, once, or sometimes?
This seems to be intermittent. I usually let the game run overnight and there's about a 50% chance when I wake up and check the game that one of my platforms is stuck like this.

I've attached two save games where this occurred. You can see in the "colossus" and "vector" space platform GUIs that there are "imminent" deliveries for epic railguns that got sent to the player inventory instead. These platforms have become "stuck" and will not move until more railguns are produced. No bots are en route to the corresponding rocket silos on Nauvis and no other epic railguns are available anywhere on the platform.
Attachments
factorio-previous.log
(311.84 KiB) Downloaded 9 times
factorio-current.log
(267.74 KiB) Downloaded 9 times
overcommitted_vector_epic_railgun.zip
(87.81 MiB) Downloaded 12 times
overcommitted_colossus_epic_railgun.zip
(90.59 MiB) Downloaded 11 times
nthexwn
Burner Inserter
Burner Inserter
Posts: 18
Joined: Wed Jun 28, 2017 6:20 am
Contact:

Re: [2.0.28] Items overcommitted to personal logistics sometimes cause space platforms to ignore wait conditions

Post by nthexwn »

Now this is interesting. I just had a ship get stuck like this again, but it was on Aquilo while I was on Nauvis. Either this is a separate bug, or my hypothesis about the interaction with personal logistics is wrong. I've attached a new savegame where the "Colossus" ship is once again stuck. This time it's waiting for 200 quantum chips to be delivered while there are only 198 available. This is a deadlock since "Colossus" is the only ship delivering the required materials to make those chips, so it would be waiting here infinitely without manual intervention.

It's interesting to note that it triggered the "imminent delivery" (yellow request highlight) on the platform early with less than one bot's worth of chips being unavailable. In the event that this is a separate bug, I'd speculate that there may be an issue with the way the delivery system has always rounded up to maximum bot carrying capacity when displaying how many items are on the way prior to the bots picking up those deliveries.

If there's less than the maximum bot capacity it will only resolve to the actual number retrieved after pickup, at which point the displayed number of "on the way" items will drop by whatever the difference is. Presumably this is an optimization to prevent a separate delivery from being triggered for each new item that's made available. This would waste bot capacity because, if more parts are produced by the time the bot arrives, it might as well pick them up when it gets there. There's no reliable way of knowing whether that will be true, so it assume it can get a full stack size in advance. This also saves a bit on performance since the CPU doesn't have to issue as many pickup orders.

If I had to guess, I'd say that logic is also being applied to rocket silo deliveries, and that they're getting confused by believing the initial overly optimistic max bot-capacity delivery numbers. By the time the bot has picked up the stack and found out that it's less than the required number for the rocket launch, it's already too late. The launch has been scheduled without enough items actually being available to launch. This would be an edge case that might not have been caught yet because typically such items are produced in enough quantities that another item becomes available again shortly and the situation rectifies itself without notice.

This is strange because the original issue I've been having is (mostly) occurring with items that have a rocket delivery capacity and/or stack size of 1, where the bot stack issue presumably wouldn't apply (unless there's no check against the stack size when performing the optimization mentioned earlier). This gives additional credence to the thought that this might be a separate issue.

At the end of the day, all I know for sure is that my space platforms are getting stuck and it's frustrating...
Attachments
factorio-previous.log
(1.34 MiB) Downloaded 9 times
factorio-current.log
(29.18 KiB) Downloaded 10 times
overcommitted_colossus_quantum_chips.zip
(91.31 MiB) Downloaded 13 times
User avatar
atomizer
Fast Inserter
Fast Inserter
Posts: 125
Joined: Sat Sep 22, 2018 3:18 pm
Contact:

Re: [2.0.28] Items overcommitted to personal logistics sometimes cause space platforms to ignore wait conditions

Post by atomizer »

I think both of the cases you describe are the same issue. In short: when a rocket silo decides to fulfill a request, it never gives up even if the item count becomes insufficient.

Reproduction:
- have a platform request an item (car)
- add and remove a car to the networks storage

Result: the silo is stuck requesting a car, the network does not have a car. Platforms always wait for pending deliveries (this is intentional), so the platform is also stuck.
Attachments
stuck silo.zip
(1.18 MiB) Downloaded 9 times
nthexwn
Burner Inserter
Burner Inserter
Posts: 18
Joined: Wed Jun 28, 2017 6:20 am
Contact:

Re: [2.0.28] Items overcommitted to personal logistics sometimes cause space platforms to ignore wait conditions

Post by nthexwn »

Had another occurrence today. This time it was for a legendary railgun that got overcommitted to my personal inventory. The "Vector" ship is stuck waiting for it in the attached savegame.
Attachments
factorio-previous.log
(28.57 KiB) Downloaded 10 times
factorio-current.log
(247.46 KiB) Downloaded 10 times
overcommitted_vector_legendary_railgun.zip
(90.79 MiB) Downloaded 9 times
nthexwn
Burner Inserter
Burner Inserter
Posts: 18
Joined: Wed Jun 28, 2017 6:20 am
Contact:

Re: [2.0.28] Items overcommitted to personal logistics sometimes cause space platforms to ignore wait conditions

Post by nthexwn »

I've been getting both versions of this bug a lot lately. The workarounds are as follows:
  1. Never schedule upgrades for structures on other planets where you currently don't have any material and also have a personal logistics request set for that item. This can be done by disabling your personal logistics request until those upgrades are completed or waiting for a sizable quantity of those items to buffer such that your personal logistics are fulfilled before you schedule the upgrades. If you do this, be careful not to use any of those items (IE: don't stand anywhere near local pending upgrades which your personal construction bots might fulfil out of your inventory) or logistics bots might end up sending the scarce items to your inventory and freezing the next outbound rocket (this has happened to me several times already).
  2. For the remote issue, I'm almost certain this is related to the overly optimistic bot optimization that I described previously. By setting a minimum cargo size of 1 for the items, you can ensure that rockets will take off even if they don't receive as many items as they thought they would. This does cause several unnecessary serial rocket launches if several of the requested items are still being constructed, but it's the only way to guarantee that your platform doesn't get stuck in a deadlock as described in this reply. I've stopped having issues with my Aquilo platform getting stuck with 197-199 quantum chips in the silo, which had become a daily occurrence until I implemented this workaround.
It would be great to have a fix for these issues since the workarounds still have a rather negative impact on gameplay.
Post Reply

Return to “Bug Reports”