View Issue Details

IDProjectCategoryView StatusLast Update
0000720The Dark ModAIpublic27.10.2011 05:17
Reportercrispy Assigned Tograyman  
PrioritynormalSeveritymajorReproducibilityalways
Status closedResolutionfixed 
Product VersionSVN 
Target VersionTDM 1.05Fixed in VersionTDM 1.05 
Summary0000720: Guards can be made to repeat their door-closing cycle
DescriptionFind a door which opens towards you, and which an AI is about to open from the other side. Let the AI push it open. They'll walk to a location on your side of the doorway where they won't get hit by the door, and start the door-closing sequence. But before the door has finished closing, frob it. It will stop moving.

Then the AI will *open* the door again, walk through to the other side, close it, and push it open again from the other side. Then they'll walk to a location on your side of the doorway where they won't get hit by the door, and start the door-closing sequence. But before the door has finished closing, frob it... And the whole cycle starts again.

If you keep frobbing the door at that point, the AI will continually go back to the other side and doing it over again and again. In this way it's possible to keep the AI trapped in an infinite loop.

Attached savefile is in Saint Lucia, facing my favourite door for messing with the AI (the double doors leading into the dining room in the rightmost corridor of the church), in a situation where you can immediately pull off this bug. Savefile works as of revision 2419 and is 1MB in size. It's not necessary to use this savefile to reproduce the bug, as it's not too difficult to set up again. (Start Saint Lucia, noclip to that place in the church, stand out of the way of the guard's patrol path, wait.)
TagsNo tags attached.

Activities

crispy

crispy

08.06.2008 02:16

reporter   ~0001269

This does not appear to be fixed in latest src (revision 2452). I can still make that guard repeat the door-closing routine as described.

To be clear, this is not an "infinite loop" in the usual sense; if you leave the AI to its own devices then it works fine. You have to keep frobbing the door at the right moment in order for the cycle to repeat again.
grayman

grayman

25.02.2011 19:28

viewer   ~0003666

Last edited: 25.02.2011 19:29

This no longer occurs in the latest SVN version. Once you frob the door to a stop, the AI turns and walks away.

However, there's a problem when the AI returns to the partially-open door. There are times when he correctly fully opens the door and goes through, and times when he gets stuck in a loop, wanting to handle the door, but never doing so. He circles around in front of the door. This same behavior occurs regardless of whether the door opens toward him or away.

This might have something to do with thinking he can fit through the door opening, but failing when he tries to walk through. The code needs to handle the failure or generate a more realistic answer from the "can I fit through?" routine.

grayman

grayman

25.02.2011 19:31

viewer   ~0003667

I changed the severity to "major" because there's a chance that partially-open doors can block AI.
grayman

grayman

01.03.2011 23:31

viewer   ~0003683

The original problem was fixed somewhere along the way. I found other problems while testing, though ...

Fixed a problem with how well an AI can fit through a partially open door. Prevents AI getting stuck as they try to go through a partially open door they think they can fit through.

Fixed a problem with calculating the open position of a partially open door. AI stopping to open the door completely were facing the wrong way when opening the door.

Adjusted a calculation used to translate a partially open door when ‘translation’ is defined in spawnargs. Prevents these doors from having a gap between them and their jamb at spawn time.

Fixed a problem with AI not reaching for the door when completely opening partially open doors. Magically opening doors is frowned upon.

Now calculate how a closed door forms an obstacle for pathfinding when the door is spawned, not when the first AI encounters it.

rev. 4645:

HandleDoorTask.cpp
ai_pathing.cpp
BinaryFrobMover.cpp

Issue History

Date Modified Username Field Change
02.06.2008 01:31 crispy New Issue
02.06.2008 01:31 crispy File Added: doortest2.zip
02.06.2008 16:49 angua Status new => assigned
02.06.2008 16:49 angua Assigned To => angua
04.06.2008 20:49 angua Status assigned => resolved
04.06.2008 20:49 angua Fixed in Version => SVN
04.06.2008 20:49 angua Resolution open => fixed
05.06.2008 05:00 greebo File Deleted: doortest2.zip
08.06.2008 02:16 crispy Status resolved => feedback
08.06.2008 02:16 crispy Resolution fixed => reopened
08.06.2008 02:16 crispy Note Added: 0001269
25.02.2011 19:28 grayman Note Added: 0003666
25.02.2011 19:28 grayman Assigned To angua => grayman
25.02.2011 19:28 grayman Fixed in Version SVN =>
25.02.2011 19:28 grayman Status feedback => assigned
25.02.2011 19:29 grayman Note Edited: 0003666
25.02.2011 19:31 grayman Note Added: 0003667
25.02.2011 19:31 grayman Severity minor => major
01.03.2011 23:31 grayman Note Added: 0003683
01.03.2011 23:31 grayman Status assigned => resolved
01.03.2011 23:31 grayman Resolution reopened => fixed
01.03.2011 23:31 grayman Fixed in Version => TDM 1.05
01.03.2011 23:31 grayman Target Version => TDM 1.05
27.10.2011 05:17 greebo Status resolved => closed