View Issue Details

IDProjectCategoryView StatusLast Update
0003647The Dark ModAIpublic04.04.2014 19:32
Reportergrayman Assigned Tograyman  
PrioritynormalSeveritynormalReproducibilitysometimes
Status resolvedResolutionfixed 
Product VersionTDM 2.01 
Target VersionTDM 2.02Fixed in VersionTDM 2.02 
Summary0003647: AI will sometimes circle beneath a goal path_corner on the floor above
DescriptionNoticed this in two places of Home Again, where the same guard can circle in two spots in the lower storage room, when his goal path_corner is up on the upper storage room. It looks like pathfinding isn't sending him along the correct route to his goal, and he is getting stuck beneath the goal. Since he can never get to the path_corner, he circles, trying.

For Home Again, I'm redesigning the patrol. But this problem should be fixed. The version exhibiting the problem is ws2_homeagain145.map.
TagsNo tags attached.

Activities

grayman

grayman

11.01.2014 05:38

viewer   ~0006345

Last edited: 11.01.2014 05:40

The guard having the problem is Stevens.

There's an elevator nearby. Maybe it's causing the problem.

grayman

grayman

26.03.2014 14:44

viewer   ~0006466

Last edited: 26.03.2014 15:27

I saw this again while testing the picked pocket code. An elevator was present on the other side of an open door.

After re-dmapping, the problem stopped.

Might have something to do with a bad AAS outcome of a damp.

Or it might have something to do with an elevator being somewhere on the path.

Edit: Leaving the door between the AI and the elevator closed allowed the AI to path properly.

Opening the door caused the AI to start circling.

So opening the door exposes the AI to the elevator.

Something's wrong with the goal that the pathing routine gives back to the AI under these conditions.

Springheel

Springheel

26.03.2014 20:23

administrator   ~0006467

Last edited: 26.03.2014 20:23

Don't know if this is actually relevant to this issue, but while testing my map I had a guard who was alerted by an alarm in the basement while he was on the main floor, and I found him running in circles in the room he started in. There were no elevators in the map, just stairs and two doors between him and the location of the alarm. If I see it again I'll save a copy of the map.

grayman

grayman

26.03.2014 21:31

viewer   ~0006470

Okay, thanks.

I've only seen permanent circling these days in two maps: Home Again (until I changed the path corners so it stopped happening) and the pickpocket test map I'm working with atm. Both incidents happened near elevators.

Closing in on the bug.

Is there a path_corner for the circling guard somewhere directly above or below him?
Springheel

Springheel

26.03.2014 23:46

administrator   ~0006471

No. He was a sitting character who had an alert_only pathnode outside the building. But at the time of circling he was fully alert trying to respond to an alarm that had sounded in the basement.
grayman

grayman

27.03.2014 00:35

viewer   ~0006472

Perhaps he was just stuck in a tight area?
grayman

grayman

27.03.2014 04:33

viewer   ~0006473

Found the problem. Having both an elevator and an open door on a long path exposed a problem where the AI wasn't being given a goal near the door in order to go through it. He was continually being given the final goal, which messed up getting through the door.
grayman

grayman

28.03.2014 00:27

viewer   ~0006476

Aaaand found another problem. A small window between pushing a task and actually starting it allows other tasks to sneak in. This was disturbing the relationship between handling a door and handling an elevator.
grayman

grayman

04.04.2014 19:32

viewer   ~0006490

Last edited: 04.04.2014 19:32

Two spots in the door handling task needed to give the AI somewhere to go.

Needed better coordination between the door handling and elevator handling tasks. In the 4 frames between killing an elevator task and starting a door task, another elevator task was allowed onto the task queue. This extra task was causing problems when the door task finished.

Added a PopMove() variant that doesn’t restore the popped move. This prevents unnecessary pathfinding.

Fixed a problem that happens when you hit an AI on an elevator with a moveable. He reacts to the hit, flushes the elevator task, and has pathing problems when he goes back to pathing and he’s on the moving elevator between floors, where there are no AAS areas. Needed to add a pause to the pathing task in that situation, to give the elevator time to reach the next floor and get the AI back on an AAS area.

Rev. 5945:

State.cpp
HandleDoorTask.cpp
HandleElevatorTask.cpp
PathCornerTask.cpp
PathCornerTask.h
ResolveMovementBlockTask.cpp
AI.cpp
AI.h
MovementSubsystem.cpp
MovementSubsystem.h

Issue History

Date Modified Username Field Change
11.01.2014 05:24 grayman New Issue
11.01.2014 05:24 grayman Status new => assigned
11.01.2014 05:24 grayman Assigned To => grayman
11.01.2014 05:38 grayman Note Added: 0006345
11.01.2014 05:40 grayman Note Edited: 0006345
26.03.2014 14:44 grayman Note Added: 0006466
26.03.2014 15:27 grayman Note Edited: 0006466
26.03.2014 20:23 Springheel Note Added: 0006467
26.03.2014 20:23 Springheel Note Edited: 0006467
26.03.2014 20:23 Springheel Note Edited: 0006467
26.03.2014 21:31 grayman Note Added: 0006470
26.03.2014 23:46 Springheel Note Added: 0006471
27.03.2014 00:35 grayman Note Added: 0006472
27.03.2014 04:33 grayman Note Added: 0006473
28.03.2014 00:27 grayman Note Added: 0006476
04.04.2014 19:32 grayman Note Added: 0006490
04.04.2014 19:32 grayman Status assigned => resolved
04.04.2014 19:32 grayman Resolution open => fixed
04.04.2014 19:32 grayman Fixed in Version => TDM 2.02
04.04.2014 19:32 grayman Note Edited: 0006490