Dwarf Fortress Bug Tracker - Dwarf Fortress
View Issue Details
0010261Dwarf FortressPathfindingpublic2017-07-04 07:382017-07-05 01:46
Soadreqm 
 
normalminorsometimes
newopen 
Windows7
0.43.05 
 
0010261: Dwarves become stuck trying to go around each other in one-tile corridors
Sometimes, two dwarves can become stuck trying to pass each other in a one-tile passageway. They collide, and both turn around to take an alternate route. Then, because the alternate route is also a one-tile passageway, they inevitably collide again once they get there. This often continues until more traffic comes along, so that both available passages are blocked with dwarves, and they begin to crawl past each other.
Dwarves seem to always prefer an open route to crawling, even if it's much longer than the one they're on and takes more time. This works well in open areas where dwarves can pass each other, and when there is exactly one route to the dwarf's destination (forcing them to just crawl all the time), but not so much when there are multiple one-tile corridors a dwarf can take.

Also, when looking for the way around, they first go to the tile behind where the obstacle was, and resume their original course, instead of trying to find a new shortest path to their actual destination. This results in backtracking, and exacerbates the dwarf jams, since they're backtracking through one-tile corridors where they're likely to collide with dwarves.

There's an obvious workaround to all this, making corridors wider, but it would still be nice if dwarves were a bit more sensible about narrow passages.
No tags attached.
Issue History
2017-07-04 07:38SoadreqmNew Issue
2017-07-05 01:46PatrikLundellNote Added: 0036649

Notes
(0036649)
PatrikLundell   
2017-07-05 01:46   
It's definitely a problem that re-pathing takes the dorf(s) back to the collision point to continue from there (by turning around 180 degrees) to the destination, rather than re-path to the destination, or, at the least, to the junction the re-pathing joins up with the original path in the reverse direction.