View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0000720 | The Dark Mod | AI | public | 02.06.2008 01:31 | 27.10.2011 05:17 |
Reporter | crispy | Assigned To | grayman | ||
Priority | normal | Severity | major | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Product Version | SVN | ||||
Target Version | TDM 1.05 | Fixed in Version | TDM 1.05 | ||
Summary | 0000720: Guards can be made to repeat their door-closing cycle | ||||
Description | Find 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.) | ||||
Tags | No tags attached. | ||||
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. |
|
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. |
|
I changed the severity to "major" because there's a chance that partially-open doors can block AI. | |
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 |
|
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 |