AI Perception Behavior Enhancement: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
(tweaks)
mNo edit summary
Line 1: Line 1:
In HL2, if an idle NPC hears a sound but doesn't see its emitter, it will only turn in the direction of the sound for a time before returning to its previous action.
In HL2, if an idle NPC hears a sound but doesn't see its emitter, it will only turn in the direction of the sound for a bit before returning to its previous action.


With the modification below the NPC will instead investigate the source of the sound.
With the modification below the NPC will investigate the source of the sound instead.


Open the <code>ai_basenpc_schedule.cpp</code> file and look for the function <code>SelectAlertSchedule()</code>. Look for the following code:
Open the <code>ai_basenpc_schedule.cpp</code> file and look for the function <code>SelectAlertSchedule()</code>. Look for the following code:
Line 24: Line 24:
  {
  {
 
 
  return SCHED_INVESTIGATE_SOUND;//E.Y.E , AI Search for the source of alert  sound
return SCHED_INVESTIGATE_SOUND;
  }
  }


==Conclusion==
==Conclusion==
With this code,as soon as NPC will hear alert sound, they will investigate
With this code, as soon as NPC hears sounds that meet conditions, they will investigate it.
I use this for my own project [http://eye.streumon-studio.com E.Y.E] and it runs perfectly.
 
[[Category:Programming]]
[[Category:Programming]]
[[Category:AI Programming]]
[[Category:AI Programming]]

Revision as of 15:28, 26 December 2006

In HL2, if an idle NPC hears a sound but doesn't see its emitter, it will only turn in the direction of the sound for a bit before returning to its previous action.

With the modification below the NPC will investigate the source of the sound instead.

Open the ai_basenpc_schedule.cpp file and look for the function SelectAlertSchedule(). Look for the following code:

	if ( HasCondition ( COND_HEAR_DANGER ) ||
			  HasCondition ( COND_HEAR_PLAYER ) ||
			  HasCondition ( COND_HEAR_WORLD  ) ||
			  HasCondition ( COND_HEAR_BULLET_IMPACT ) ||
			  HasCondition ( COND_HEAR_COMBAT ) )
	{
		return SCHED_ALERT_FACE_BESTSOUND;

	}

Replace this code with:

	if ( HasCondition ( COND_HEAR_DANGER ) ||
			  HasCondition ( COND_HEAR_PLAYER ) ||
			  HasCondition ( COND_HEAR_WORLD  ) ||
			  HasCondition ( COND_HEAR_BULLET_IMPACT ) ||
			  HasCondition ( COND_HEAR_COMBAT ) )
	{
		
		return SCHED_INVESTIGATE_SOUND;
	}

Conclusion

With this code, as soon as NPC hears sounds that meet conditions, they will investigate it.