In brief, the purpose of the specification phase is to do the following:
This is done in three steps:
Sketching possible options in one creative burst.
Rationalizing to check for consistency internally and with requirements.
Formalizing the chosen model using knowledge representation and corresponding data structures.
The process of specification becomes easier with practice, but we can follow some rough guidelines:
Starting with the outputs is often simpler. The rest of the solution can fall into place around them.
Selecting the inputs is a matter of determining what information is required to solve the problem. Thinking about this as programmers helps; the AI will need similar information.
It's a good idea to keep the specification very flexible to save us the hassle of having to update it during the application.
With a robust specification, all problems are easier to solve. The next chapter uses the specification for movement to create a simple working prototype that can navigate complex dynamic worlds using steering behaviors.
Diving back into developing movement behaviors, another animat demonstrates the flexibility of the specification. Sir Tank uses straightforward reactive behaviors to bounce off obstacles. This animat differs because its movement is dissociated from its orientation. This separates the movement capability from other capabilities, such as aiming, which will prove useful in the next parts. The demo and code is available online at http://AiGameDev.com/.