At the top, you have a vision of the design. At the bottom, there are resources you can use to create behaviors: animations, sounds, voice audio, etc. Naturally, making a great AI involves finding the best balance between the two, but how do you approach it?
The bottom up approach is very pragmatic. It involves taking stock of available assets, and building them up into increasingly complex behaviors.
“What can we do with what we’ve got?”
The benefit of this approach is minimalism. Nothing is created that is not required; the outcome is a “minimum-length description” of the behaviors. The AI only provides a way to manage the assets — nothing else.
The disadvantage, however, is that little or no mental model is created. So it’s not easy to add different assets since the logical structure of the AI may be very weak.
The top-down approach is much more idealistic. The process begins with a design of the game which gets refined down to the level of character AI.
“What’s necessary to implement this vision?”
The benefit of this approach is that it focuses on the parts of the AI that are important to the design. The AI is built with a certain mental model that matches this design (e.g. high-level states like idle and suspicious), so it’s easier to take new assets and make new behaviors that fit in.
However, the disadvantage of this approach is that it tends to ignore what resources are available at the start, and what behaviors are easy to create. It also doesn’t necessarily take into account what works in practice in-game with the players.
Now, most real-word design is a compromise between these two approaches. In fact, both benefit from each other:
The bottom-up approach helps the design by providing feedback of what works well in the behaviors, what needs to be emphasized, and what there aren’t enough resources to pull off.
The top-down approach helps with the low-level resources as it provides guidance to request new assets, try out new behavior prototypes, and attempt to combine resources in more creative ways to achieve the design in different ways.
Effectively, it’s important to keep in mind both the high-level design and the low-level resources. Iteratively refining the behaviors from both perspectives offers the best results. In fact, if you get stuck or encounter problems, try taking the other approach and see what the outcome is!
What design techniques do you use? Why?