View Issue Details

IDProjectCategoryView StatusLast Update
0003755The Dark ModAIpublic17.07.2014 18:58
ReporterSpringheel Assigned Tograyman  
PrioritynormalSeveritynormalReproducibilityhave not tried
Status resolvedResolutionfixed 
Product VersionTDM 2.02 
Target VersionTDM 2.03Fixed in VersionTDM 2.03 
Summary0003755: Running AI getting caught up on doors
Description pursuing AI seem to be getting caught up on closed doors. If I'm running and I close a door behind me, AI frequently wind up running circles behind it (I can see their weapon poking through the door as they circle). Sometimes they just circle once or twice, but other times they do it for a good fifteen or twenty seconds. In the incident above, when the guard spotted me I ran into the bathroom and closed the door with the guard right behind me. It was then a good thirty seconds before the door opened. I wonder if it might be a good idea to eliminate the door_open animation at all when the AI is running? Could the door just open automatically when the AI gets within range?
TagsNo tags attached.

Relationships

parent of 0003572 resolvedgrayman Speed up AI door handling when running 

Activities

grayman

grayman

17.07.2014 18:58

viewer   ~0006726

When an AI is finished with a door, the door is marked with a delay after which it can be used again. This prevents pathfinding from sending an AI back through a door they just came through. Two changes were made to this: 1) Don’t use the delay if you finish handling a door before you go through it. This can happen when an AI loses his door-handling task and immediately goes back to using the door. If you run from an AI and close a door behind you, the AI has lost sight of you, and momentarily kills his door-handling task and starts a task to spot you again. That causes him to reuse the door immediately. Since he didn’t go through the door, there shouldn’t be a delay before he can use it again. 2) Reduce the delay from 3s to 100ms. While very short delays didn’t used to work, they appear to work now.

The result of these two changes is that an AI will spend less time opening a door to continue chasing you.

Another change was to increase the rate on the animations used to open the door. A corresponding change to the code to still pick the correct time to start opening the door was needed. This is used as the default now, whether an AI is in a hurry or not.
If an AI is running through a closing door, and he can get enough of himself into the doorway to block the door’s movement, the door bangs back at double speed. This simulates the AI putting his shoulder into the door to knock it open.

AI use the door-handling mid positions for determining which side of a door they’re on. The two mid positions aren’t the same distance from the closed position of a rotating door, which was causing problems when trying to determine “door-side” when close to a door. Added equidistant side markers to make the “door-side” calculation more accurate. This shouldn’t be a problem in 2.02; it became a problem here because of a few things that needed to be decided when very close to the door.

A running AI opening a door now causes the door to open at double the normal speed. A door that has controllers won’t open at double speed for a running AI, because the controller “controls” the door speed, not the overly-anxious AI.

Rev. 6060:

State.cpp
HandleDoorTask.cpp
HandleDoorTask.h
PathCornerTask.cpp
AI.cpp
AI_pathing.cpp
DoorInfo.cpp
DoorInfo.h
Push.cpp
BinaryFrobMover.cpp
BinaryFrobMover.h
FrobDoor.cpp
FrobDoor.h
Mover.cpp
Mover.h
UserManager.cpp

Rev. 13915:

tdm_ai_base.script
tdm_ai_female_animations.def
tdm_ai_guard_proguard_devel.def
tdm_ai_humanoid_newskel.def

Issue History

Date Modified Username Field Change
18.06.2014 01:44 Springheel New Issue
18.06.2014 19:35 Springheel Relationship added parent of 0003572
08.07.2014 14:19 grayman Assigned To => grayman
08.07.2014 14:19 grayman Status new => assigned
17.07.2014 18:58 grayman Note Added: 0006726
17.07.2014 18:58 grayman Status assigned => resolved
17.07.2014 18:58 grayman Resolution open => fixed
17.07.2014 18:58 grayman Fixed in Version => TDM 2.03