The basic behaviors are the most important part of the system, and are designed manually:
Tactical behaviors depend on existing capabilities, customized using wrappers while programming, by passing data at initialization or via runtime interfaces.
Default behaviors combine different forms of movement with various ways of shooting and collecting items.
This chapter also covered Brooks's subsumption architecture in more detail to prepare for the implementation:
The subsumption architecture is an arbitration mechanism, using a behavior-based approach.
Fundamentally, behaviors are defined as augmented finite-state machines that pass messages and have timers for state changes.
Behaviors are combined in layers, using suppression and inhibition points that interrupt and override messages.
From a conceptual point of view, the vertical layers are prioritized with the most important behaviors on top.
Applying the behaviors is a matter of combining the components together with subsumption:
Planned design can be used to organize the behaviors in order of importance.
The condition under which the behaviors activate must be determined by the designer.
The implementation scans each layer in order from the highest priority down until one is found.
The system performs very well, and predictably so. However, there are minor problems with Boolean activation. The control is somewhat limited by the default tactical behaviors, which combine basic elements. Finally, the fact that the system cannot learn is also a limitation. These problems will be remedied by redesigning the prototype using reinforcement learning discussed in Chapter 47, "Learning Reactive Strategies." But first, we'll cover the theory in the next chapter.