The Big Picture
To better understand the purpose of software engineering processes in AI, and their link with the later stages of development, an abstract study of an AI component is necessary. Many concepts are involved in the development process, as shown in Figure 7.1.
Figure 7.1. A diagram representing the role of the AI solution within the platform, notably emphasizing the different layers around the AI that it depends on.
In the case of navigation, the overall goal is a behavior. The following list explains the concepts one by one, using obstacle avoidance as an example:
Platform— The software and hardware supporting the development, where the AI will have its effect (for instance, the game world and engine).
Task— A conceptual explanation of the goals of the AI within the platform (for instance, understanding the local surroundings to prevent collision).
Information— The collection of data available within the platform that may be used to achieve the task (for instance, the environment's structure and detail).
Outcome— The results of the task within the platform, and possibly outside of this to (for instance, a collision-free trajectory).
Input— A subset of the information available, converted into a suitable format (for instance, nearby obstacles). Together, the input and output form the scaffolding for the solution.
Output— The possible actions that can be taken, combining together implicitly within the platform to generate the outcome (for instance, motor actions producing movement).
Context— Implicit state that contains information about the task, defining the effect of the outputs and restricting the inputs (for instance, the player's physical properties: velocity, position).
Problem— The description of an AI module capable of mapping the information from the input to the output (for instance, avoiding individual obstacles).
Solution— A particular AI component that can resolve the problem, obtaining the desired outcome and respecting the requirements (for instance, steering behavior).
These concepts will come into play at different stages of the AI development pipeline. At first, finding the distinctions between the different concepts can be confusing. This will become easier with more experience, so we'll make a point of explaining all the concepts for each new problem in subsequent parts.