Game Development Reference

In-Depth Information

All the behaviors listed here can be simulated using a set of weights on the various

categories. Subtle changes in the weights create richness within a category; there

are a lot of different ways to be slow and steady. Gross changes in the weights

yield the compulsive or near-compulsive behaviors. Games are entertainment

products, so the AI programmer will need to use tools like these weights to create

an interesting player experience.

If the AI problem at hand does not lend itself to numbers, probabilistic methods

are of little help. Like all the other tools we have covered so far, the method forces

the AI programmer to try to think of the problem in terms of this kind of

solution. Some problems will have an elegant fit, and the AI programmer can

orchestrate a rich variety of behaviors by changes to some numbers.

The hardest question to answer is, ''Can I get the numbers?'' We have covered

three basic ways of getting the numbers. Sometimes a number may not tune well;

it may need to be lower or higher at different times. In such cases, you replace the

number with some code that computes a value based on the situation and

include more numbers that will need to be tuned. The idea is to use the simplest

methods that do the job and apply sophistication only as needed. (Note that this

idea applies to all aspects of game AI, not just methods based on numbers.)

Probabilistic methods put a floor under artificial stupidity by coming up with

reasonable actions. Random selection among best moves provides interest and

removes predictability. The methods enable the AI programmer to provide a

range of behaviors, including interesting or possibly baffling moves. Even good

moves can be nuancedâ€”possibly too subtly for the player to notice, but far more

than we saw with FSMs. In addition, adding such nuances has a lower impact on

complexity than we would see with FSMs.

There are disadvantages to these methods. The greatest is that they literally live

and die on good numbers. If you cannot get those numbers, the method will fail