This chapter started by analyzing the platform for the AI, notably explaining the objects and contraptions in the environment and how they are handled by the engine. We've identified the following information:
Assumptions— Items are picked up automatically. Some are activated instantaneously, whereas others are placed in the inventory. The contraptions operate mostly autonomously, occasionally requiring the player to press buttons.
Restrictions— Certain items have limited applicability. (For instance, a silencer works when firing, and quad damage relies on damage.) Contraptions require particular sequences of actions to be used correctly.
Guidelines— Environments with many items around are necessary to simplify the development of the AI. Many different game levels are needed for all the contraptions to be attempted by the AI.
The second section of this chapter tried to understand the problem, investigating the behavior of human players. This enabled us to define a problem definition on two levels:
Criteria— High-level properties specific to this problem were identified (effectiveness and consistency) and used when evaluating the AI behaviors.
Problem definition— A description of the expected outcome of each task was provided as a step-by-step walkthrough. This serves as a reference in the upcoming application phase.
The final section of this chapter established a specification, or rather, extended existing interfaces. This provided us with additional inputs and outputs, allowing the AI to interface with the platform.
Before putting these interfaces to use, another AI technique is investigated. Fuzzy expert systems can be seen as an extension to rule-base systems, capable of expressing behaviors to use doors and platforms, or even climb up ladders.
An animat, known as Greedy, demonstrates the concept behind collecting objects. Greedy attempts to collect every object in sight, moving on when the item is not picked up or remains inaccessible. The AI is built upon the steering behaviors used in Chapter 10, "Steering Behaviors for Obstacle Avoidance." See http://AiGameDev.com/ for the code and binary.