Now that we know how to implement sensory-level algorithms, it's time to see how they could 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 its team at Klei Entertainment for the game, Mark of the Ninja. The mechanism moves around the notion of having interest sources that can be seen or heard by the agents, and a sensory manager handling them.
As a lot of things move around the idea of interests, we'll need two data structures for defining an interest's 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 the interest data type...