Dwarf Fortress Bug Tracker - Dwarf Fortress |
View Issue Details |
|
ID | Project | Category | View Status | Date Submitted | Last Update |
0005964 | Dwarf Fortress | Dwarf Mode -- Jobs, Hauling | public | 2012-05-28 11:33 | 2015-03-28 07:10 |
|
Reporter | HammerDave | |
Assigned To | Toady One | |
Priority | normal | Severity | minor | Reproducibility | always |
Status | resolved | Resolution | fixed | |
Platform | | OS | Linux | OS Version | |
Product Version | 0.34.10 | |
Target Version | | Fixed in Version | 0.40.20 | |
|
Summary | 0005964: Haulers carry (heavy) full bin to pickup single item (lighter) |
Description | I love the bin/barrel hauling, but it has some rough edges. This is a bug report with suggestions -- the bug (IMO) is that they carry around heavy containers to pick up light objects.
Dwarves often carry a full, heavy bin to pick up a single lighter item. This is most annoying when they do it with bins full of lead bars. It is also noticeable that they usually take a bin to pick up a single sock, or a barrel to pick up a single fish. Worst case, 10 dwarves pick up 10 not-quite full containers from the same stockpile to pick up 10 individual lighter items close to each other, instead of one dwarf carrying around a single bin.
Another annoying thing about this is when traders come, a bunch of bins/barrels which you want to take to the trade depot are being carried around picking up items.
Some suggestions come to mind:
1. Assign hauling jobs every Nth tick to let them be batched up more and optimize according to weight and space. Maybe only use a container when several items can be optimized into a hauling run. If this is already being done, increase N a little bit. :D Side benefit: dwarves can immediately use a new item for a few ticks, instead of waiting for it to be hauled.
2. Don't carry a heavier container to pick up a lighter object. Either use an empty/lighter container or no container at all.
3. Assign only empty bins to hauling jobs. When the dwarf arrives at the stockpile redistribute items to their appropriate containers. If this empties the bin use it again for hauling, if not empty then drop in stockpile. Yes, this will result in #bins used exceeding stockpile size, maybe drop it on a nearby tile causing clutter. ;) |
Steps To Reproduce | |
Additional Information | |
Tags | barrels, bins, hauling, Intentional/Expected?, wheelbarrows |
Relationships | has duplicate | 0008534 | resolved | Footkerchief | Hauling bins to collect multiple items outside means dwarves only pick up one item each trip | related to | 0005992 | resolved | Toady One | Conflict between hauling jobs (i.e. filling containers) and other jobs using items in those containers | related to | 0009004 | confirmed | Loci | "Store item in container" jobs block access to all items already in the container |
|
Attached Files | |
|
Issue History |
Date Modified | Username | Field | Change |
2012-05-28 11:33 | HammerDave | New Issue | |
2012-06-13 06:51 | Telarin | Issue Monitored: Telarin | |
2012-06-21 01:38 | MECHAnized | Issue Monitored: MECHAnized | |
2012-09-06 23:05 | Stromko | Note Added: 0023537 | |
2012-09-08 12:15 | arclance | Issue Monitored: arclance | |
2012-12-25 23:17 | Ookpik | Note Added: 0023802 | |
2012-12-25 23:36 | Ookpik | Note Edited: 0023802 | bug_revision_view_page.php?bugnote_id=0023802#r8883 |
2012-12-25 23:39 | Ookpik | Tag Attached: barrels | |
2012-12-25 23:39 | Ookpik | Tag Attached: bins | |
2012-12-25 23:39 | Ookpik | Tag Attached: hauling | |
2012-12-25 23:39 | Ookpik | Tag Attached: wheelbarrows | |
2012-12-25 23:40 | Ookpik | Issue Monitored: Ookpik | |
2012-12-26 11:35 | Dwarfu | Note Added: 0023803 | |
2013-02-23 17:34 | HairyDude | Note Added: 0023858 | |
2013-04-10 17:28 | HairyDude | Note Added: 0023931 | |
2013-05-16 02:06 | starlight | Note Added: 0023966 | |
2013-05-16 03:33 | starlight | Note Added: 0023973 | |
2014-07-20 12:20 | mostevil | Note Added: 0027041 | |
2014-07-20 12:21 | mostevil | Issue Monitored: mostevil | |
2014-07-21 16:11 | mostevil | Note Edited: 0027041 | bug_revision_view_page.php?bugnote_id=0027041#r10146 |
2014-07-24 04:10 | Doren | Note Added: 0027394 | |
2014-07-24 04:31 | cephalo | Note Added: 0027396 | |
2014-07-24 07:54 | Zahariel | Note Added: 0027416 | |
2014-07-24 10:00 | krenshala | Note Added: 0027433 | |
2014-07-24 20:41 | enlait | Issue Monitored: enlait | |
2014-07-25 13:05 | Quietust | Note Added: 0027535 | |
2014-07-25 13:07 | Quietust | Note Edited: 0027535 | bug_revision_view_page.php?bugnote_id=0027535#r10376 |
2014-07-25 19:37 | enlait | Note Added: 0027571 | |
2014-07-28 02:51 | crossmr | Note Added: 0027749 | |
2014-07-28 02:51 | crossmr | Note Edited: 0027749 | bug_revision_view_page.php?bugnote_id=0027749#r10478 |
2014-07-28 04:51 | Loci | Note Added: 0027753 | |
2014-07-28 16:50 | crossmr | Note Added: 0027830 | |
2014-07-29 09:28 | enlait | Note Added: 0027868 | |
2014-07-30 03:28 | mostevil | Note Added: 0027935 | |
2014-07-30 03:40 | Steb | Issue Monitored: Steb | |
2014-07-31 08:13 | Kanddak | Note Added: 0028032 | |
2014-07-31 08:14 | Kanddak | Issue Monitored: Kanddak | |
2014-07-31 08:28 | Loci | Note Added: 0028035 | |
2014-07-31 09:07 | Nevenrial | Issue Monitored: Nevenrial | |
2014-07-31 10:43 | Kanddak | Note Edited: 0028032 | bug_revision_view_page.php?bugnote_id=0028032#r10585 |
2014-07-31 10:43 | Kanddak | Note Added: 0028042 | |
2014-07-31 10:45 | Kanddak | Note Edited: 0028032 | bug_revision_view_page.php?bugnote_id=0028032#r10586 |
2014-07-31 10:45 | Kanddak | Note Edited: 0028032 | bug_revision_view_page.php?bugnote_id=0028032#r10587 |
2014-07-31 10:46 | Kanddak | Note Edited: 0028032 | bug_revision_view_page.php?bugnote_id=0028032#r10588 |
2014-08-18 07:22 | Footkerchief | Relationship added | related to 0005992 |
2014-08-26 16:57 | hv | Issue Monitored: hv | |
2014-08-27 19:21 | MrC | Note Added: 0029733 | |
2014-08-27 19:51 | 4maskwolf | Issue Monitored: 4maskwolf | |
2014-09-01 15:21 | Dame de la Licorne | Note Added: 0029879 | |
2014-09-01 19:27 | Footkerchief | Tag Attached: Intentional/Expected? | |
2014-10-03 01:48 | wRAR | Issue Monitored: wRAR | |
2014-10-12 15:40 | NekoHatsu | Issue Monitored: NekoHatsu | |
2014-11-09 14:22 | Footkerchief | Relationship added | has duplicate 0008534 |
2014-11-09 14:22 | Footkerchief | Assigned To | => Footkerchief |
2014-11-09 14:22 | Footkerchief | Status | new => confirmed |
2014-12-16 14:21 | Toady One | Status | confirmed => resolved |
2014-12-16 14:21 | Toady One | Fixed in Version | => Next Version |
2014-12-16 14:21 | Toady One | Resolution | open => fixed |
2014-12-16 14:21 | Toady One | Assigned To | Footkerchief => Toady One |
2015-01-19 20:37 | 4maskwolf | Issue End Monitor: 4maskwolf | |
2015-03-28 07:10 | Telarin | Issue End Monitor: Telarin | |
2015-07-01 15:44 | lethosor | Relationship added | related to 0009004 |
2016-03-09 02:07 | Steb | Issue End Monitor: Steb | |
Notes |
|
|
I've noticed this same issue, and it's quite frustrating. Haulers will routinely drag bins full of heavy (and very valuable, precious) armor all the way to the battlefield or barracks to pick up a single helm or a shield or some other item that my soldiers have dropped.
The process takes a very long time due to the weight of the bins, and while this is going on all of that equipment being hauled is inaccessible to all. It can take the better part of a season to clear a few items away from a small fight.
I have set wheelbarrows to be used on all my armor and weapon stockpiles in an attempt to help, but the wheelbarrows are only used for bringing the bins back. The original haulers will laboriously drag the bins all the way there by hand, and then leave it there for the wheelbarrow dwarves to pick up.
At this point I would just like a toggle in the init to turn off this type of hauling, as it is neither useful nor particularly immersive. If it were working better and resulted in a dwarf with an empty wheelbarrow running up to the surface, throwing a bunch of items in and zipping back to the stockpile, that would be great and would make sense. This halfway implementation that we have now just isn't very fun. |
|
|
(0023802)
|
Ookpik
|
2012-12-25 23:17
(edited on: 2012-12-25 23:36) |
|
I'm coming back to DF after about a year away from it, and this frustrating behaviour is the first really glaring problem I've noticed in the current version (34.11 for me). My entire fortress is paralyzed by dwarves dopily carrying bins around. The haulers can't do their actual jobs and the stuff in the bins (especially ammo!) is inaccessible to anyone else. I wouldn't call this a "minor" issue, maybe "moderate", since it has quite a noticeable impact on the running of my fort.
|
|
|
(0023803)
|
Dwarfu
|
2012-12-26 11:35
|
|
If the original report covers your situation, there is no need to post. This isn't a forum to rant on. If you have further specifics to flesh out the original report, please post those in a succinct manner. |
|
|
|
When a seed-producing job finishes (say, Brew Drink), a dwarf will haul an entire barrel of seeds to the still to put the seeds in one of the bags in the barrel. While the Store Item in Barrel job is in progress, it prevents the barrel and all its contents from being used, causing many job cancellations from farmers. Basically, you have to turn off barrels in seed stockpiles for efficient farming. |
|
|
|
I will add that today I saw dwarfs haul bins to the items in a useful manner, namely to pick up some gems that had just been mined, and to put stockpiled fuel in bins. Both times carrying the bin around saved time (a lot of time in the former case... though it'd be nice if the same dwarf then immediately took the bin back to the stockpile instead of walking off to do something else!). For a single item, though, it's just not worth it - especially if there's a minecart on the route, since it can be weeks before your full bin is available again. |
|
|
|
I would say that:
1. Carrying the bin around makes sense if, and only if, there is more than one item to be fetched back. Else, the dwarf can just pick the item, and put it in the bin. |
|
|
|
To solve this, we need multiple possibilities:
1. Use bins in stockpile, but do not use bins to haul item to stockpile:
Think seeds and armor from the example above.
2. Use bins in stockpile, and use bins for hauling:
But only when more than one item is picked up in that iteration
3. Re-organise stockpile:
When it has items in a single tile, AND
free bins or bins in the stockpile that have space |
|
|
(0027041)
|
mostevil
|
2014-07-20 12:20
(edited on: 2014-07-21 16:11) |
|
I'm still seeing this a lot and its causing lots of job cancellations as the contents of the bin are not available while its on its travels.
eg.
1 Bin with lots of cloth to by dyed.
Dyer takes one cloth from the bin and some dye to the workshop, dyes cloth.
Hauler takes the bin full of un-dyed cloth to pickup the dyed cloth
Repeat dye cloth order is now cancelled as there's no cloth available.
Issue 0005992
Affects other workshops similarly.
If bins are metal they are prohibitively heavy and can tie up a dwarf for months.
|
|
|
(0027394)
|
Doren
|
2014-07-24 04:10
|
|
The solution is trivial: there's almost always an extra empty bin or barrel. So hauler can just pick that empty container instead of grabbing a full-of-steel-axes bin or whatsoever.
There is even no need in additional algorithms, like "do-i-really-need-a-barrel-for-a-single-seed-considering-there-is-some-more-seed-nearby". Just grab an EMPTY bag and go wherever you want.
Quite easy, isn't it? |
|
|
|
The problem then is that you don't want a stockpile full of barrels with only a few items in each. At some point they must put the barrel down and consolidate them, which is more complex. |
|
|
|
Personally I would just say that bins/barrels should never be used for hauling, only storage. Hauling should be done with wheelbarrows, using the current "try to pick up multiple items" logic, which is not perfect but it gets the job done. When a hauler arrives at a stockpile with a wheelbarrow full of stuff, his hauling job isn't over until he's taken all the stuff out of the wheelbarrow. This is safer because wheelbarrows never store anything permanently, so they won't be incredibly heavy (unless they're made of gold, in which case, you deserve what you get). |
|
|
|
Limiting multi-item hauling jobs to minecarts and wheelbarrows would solve the problem.
Another possible option would be to let the second task track down the barrel, similar to how soldiers track their target when given a kill order. The code would have to deal with stopping the container hauler so the second dwarf could get whatever item his task needs, then the hauler would have to start hauling again, so this might make it not worth the effort/code required. |
|
|
(0027535)
|
Quietust
|
2014-07-25 13:05
(edited on: 2014-07-25 13:07) |
|
Since some of the earliest released versions, Dwarf Fortress has had options to reserve both bins and barrels for job use to prevent them from being claimed by stockpiles. Barrel restrictions were obviously ideal for brewing jobs (as well as lesser ones like extracting dwarven syrup), but bin restrictions have never had any purpose - using reserved bins for hauling would give that setting some actual meaning.
Suggested new workflow: dwarf picks up empty container from a nearby furniture stockpile, hauls container toward the items to be collected, stuffs items into container, hauls container back to the stockpile, empties held container into the container already at the stockpile (i.e. the one that would have been picked up using the current behavior), then returns the empty container to a nearby furniture stockpile.
|
|
|
(0027571)
|
enlait
|
2014-07-25 19:37
|
|
Why use a container at all to haul a single item?
But the most important thing is, dwarves should never claim a filled container in stockpile for anything, unless it's being relocated to another stockpile. |
|
|
|
Everyone has missed the other glaring issue this causes:
Job cancellation spam
I have my thread industry on overdrive, dozens upon dozens of pig tails and rope reeds to be processed. Problem?
Constant job cancellation spam. Thread weaver constantly cancels his job, because despite their being over a hundred threads available they only need 1 bin and every time someone finished one, they have to take that bin to pick it up because. yeah, makes sense.
second the barrels holding pig tails get picked up constantly which makes the processors cancel their jobs because they can't wait 3 seconds for the barrel to get back.
This is probably my number 1 frustration playing right now. This whole let's carry a bin around to pick stuff up. It might have sounded like a good idea, but at some point someone has to come out and say it's just not working and the old way was better. I got 50 haulers standing around, let them swarm a mass hauling job. That actually worked okay in the past.
|
|
|
(0027753)
|
Loci
|
2014-07-28 04:51
|
|
Suggested resolution: Dwarves with small-item hauling labors enabled carry a bag around with them all the time. When performing multiple-small-item-hauling tasks, the dwarf will collect the items in the bag, carry it to the destination stockpile, remove the items from the bag one at a time and place them in containers or on stockpile tiles.
This leaves the majority of multi-item hauling code intact, while eliminating additional trips to the stockpile, and slowdown and cancellation spam from hauling additional items around. This, coincidentally, is also how people handle the situation in the real world--if you go out to pick up trash you take an empty garbage bag, not your half-filled garbage can. |
|
|
|
The solution is to treat jobs like they were created by the manager. If a job gets cancelled because an item is missing it tries the job again. The game should check if the needed materials are currently being carried. If they are being carried in transit, then pause the job and wait for them to be put down. When they are, activate the job.
Dwarven patience logic
is what we can call it. |
|
|
(0027868)
|
enlait
|
2014-07-29 09:28
|
|
>Everyone has missed the other glaring issue this causes
No. It had been mentioned in related threads. Someone add relation to 5992, please.
crossmr repeating jobs is hardly a solution.
Anything which is worse than not using bins at all is not a solution.
Personally, I can't make any sense of a dwarf claiming any non-empty stockpiled container "because reasons", and not only it hinders production, but it makes hauling less effective also. Because bins with bars and weapons and armor are heavy as hell. Because when you have some few containers worth of stuff in question you don't bother with having ten times more containers to keep haulers satisfied. Because even if you do, and your 20 haulers decide to take 20 bins to move 20 threads to a 4-square stockpile that's a mess.
Making a "buffer" no-bins stockpile with adjacent "take from links" stockpile with bins works, but it's unnecessary difficult to set up for an issue which is so straightforwardly irrational. |
|
|
|
[Quietust]>Suggested new workflow: dwarf picks up empty container from a nearby furniture stockpile, hauls container toward the items to be collected, stuffs items into container, hauls container back to the stockpile, empties held container into the container already at the stockpile (i.e. the one that would have been picked up using the current behavior), then returns the empty container to a nearby furniture stockpile.<
So basically use them as wheelbarrows.. but then why not just use wheelbarrows.. or have a hauling bin or 3 in the stock pile as wheelbarrows are implemented.
Either way they shouldn't be using containers with stored contents for hauling as that causes the bad. Obviously be careful to still allow multiple pickups in doing this. (evaluate empty state only on pick-up of the container not the items) |
|
|
(0028032)
|
Kanddak
|
2014-07-31 08:13
(edited on: 2014-07-31 10:46) |
|
Summary & analysis of the above discussion:
Original goal: Haulers should be able to pick up multiple items with a container and then haul the container to a stockpile, instead of making a separate trip for every single item.
The current behavior, where haulers will bring a partially-full container from the destination stockpile and pick up several items directly into the container, satisfies this goal but introduced four problems:
1. The items already in the container are made unavailable for other jobs, resulting in job cancellations.
2. The items already in the container may be exposed to loss when retrieving new items from hazardous locations.
3. The weight of the container and its contents may slow down the hauler, which prolongs the effects of the first two problems in addition to being a problem in its own right.
4. If picking up only one item, the hauler's travel distance is increased by collecting the container prior to collecting the item to be hauled. (If picking up two or more items, you're probably saving travel distance by using the container to avoid multiple trips)
All of the suggestions based on using only empty containers would solve the first two problems, but only partially solve the third problem (after picking up a large number of new items, the container might become heavy and slow the hauler's return to the stockpile) and not address the fourth at all.
The suggestion to use wheelbarrows would solve the first three problems, because dwarves can push heavily-loaded wheelbarrows without being slowed down. It also makes wheelbarrows a bit more versatile (they currently only seem to be useful when the individual items are heavy, e.g. stones). It still doesn't solve the fourth problem. If implemented, it would probably be better to just use the existing stockpile-assigned wheelbarrow system than to spend dev time making a way for haulers to borrow wheelbarrows out of furniture stockpiles.
Probably the only way to totally solve the fourth problem is to introduce additional logic to only use a container when picking up more than one item. However, if the wheelbarrow suggestion was implemented, players could work around this a bit by thoughtfully assigning wheelbarrows only to stockpiles which usually fetch multiple, heavy, or nearby items, and not to stockpiles which frequently want single light items from far away.
Meanwhile, I'm working around the issue by avoiding bins and barrels completely in favor of minecart-based quantum stockpiles wherever possible.
|
|
|
(0028035)
|
Loci
|
2014-07-31 08:28
|
|
What about:
4. Collecting the container from a stockpile can more than double the distance traveled.
Wheelbarrows, whether collected from the destination stockpile or a generic furniture stockpile, do not solve this problem. |
|
|
|
Loci: Good point, edited in. |
|
|
(0029733)
|
MrC
|
2014-08-27 19:21
|
|
There is a workaround for this bug where you set up your stockpiles to only take from other piles of the same type that have been set to allow no containers. This of course means that each item is picked up with separate hauling jobs. |
|
|
|
This is still an issue in .40.10. |
|