View Issue Details

IDProjectCategoryView StatusLast Update
0003725The Dark ModAIpublic13.07.2014 13:38
Reportersotha_sil Assigned Tograyman  
PrioritynormalSeveritynormalReproducibilityalways
Status resolvedResolutionfixed 
Product VersionTDM 2.01 
Target VersionTDM 2.03Fixed in VersionTDM 2.03 
Summary0003725: AIs can get permanently stuck in each other in narrow spaces
DescriptionWhen two AI are moving and pass each other in a tight hallway, one will turn sideways and let the other by.

But when one is standing still, he won't turn.

Normally, this forces a moving AI to walk around a standing AI, which is the behavior we'd expect to see as an observer.

But when there's no room to get past, the standing AI should alter his behavior and turn sideways to let the other pass.

--

A test map is provided. Here an AI stands in a narrow corridor. The other AI is set to react to a "shoulbeclosed 1" door.

When the door opening AI tries to reach the door he gets permanently stuck on
the stationary AI.

--

This bug was first found in "A reputation to uphold" mission. Here an AI following another AI got stuck in a similar manner. The following AI was stationary and the leading AI was permanently stuck walking into the following AI, while complaining that door should be closed.
TagsNo tags attached.
Attached Files
shouldbeclosed.map (7,167 bytes)

Activities

grayman

grayman

13.07.2014 13:38

viewer   ~0006716

Allow a searching AI to walk through a standing AI when the searcher’s destination is beyond the standing AI. We want to discourage searching AI from stopping and occupying the same space as a non-solid blocking standing AI, because it doesn’t look right. In tight places, though, we have to let the searcher by, otherwise the searcher gets stuck.

If a blocking AI goes non-solid, he waits for the AI that asked him to go non-solid to pass by. If another AI has walked through the blocker, make sure that AI is not in the blocker’s space when the blocker once again becomes solid. This might not have been necessary, but it’s safer to handle the case than ignore it. The blocker then needs to wait for the second AI to pass by before he becomes solid again.

When a blocker becomes non-solid, he’ll now turn 90 degrees to the direction of the passing AI, and turn back again when the passer is gone. He was turning 90 degrees to the direction he was facing, but if he gets knocked about, this might not look the best.

Rev. 6058:

State.cpp
ResolveMovementBlockTask.cpp
ResolveMovementBlockTask.h


Issue History

Date Modified Username Field Change
13.05.2014 06:48 sotha_sil New Issue
13.05.2014 06:48 sotha_sil File Added: shouldbeclosed.map
13.05.2014 14:33 grayman Assigned To => grayman
13.05.2014 14:33 grayman Status new => assigned
13.07.2014 13:38 grayman Note Added: 0006716
13.07.2014 13:38 grayman Status assigned => resolved
13.07.2014 13:38 grayman Resolution open => fixed
13.07.2014 13:38 grayman Fixed in Version => TDM 2.03
13.07.2014 13:38 grayman Target Version => TDM 2.03