Creating awareness in a stealth game
Now that we know how to implement sensory-level algorithms, it's time to see how they can be taken into account in order to develop higher-level techniques for creating agent awareness.
This recipe is based on the work of Brook Miles and the team at Klei Entertainment for the game Mark of the Ninja. The mechanism revolves around the notion of having interest sources that can be seen or heard by the agents and a sensory manager to handle those.
Getting ready
As a lot of things revolve around the idea of interests, we'll need two data structures for defining the interests' sense and priority, and a data type for the interest itself.
This is the data structure for sense:
public enum InterestSense { SOUND, SIGHT };
This is the data structure for priority:
public enum InterestPriority { LOWEST = 0, BROKEN = 1, MISSING = 2, SUSPECT = 4, SMOKE = 4, BOX = 5, DISTRACTIONFLARE = 10, TERROR = 20 };
The following is...