by Wendelin Reich and Werner Schirmer
This is the first post in our series on artificial behavior and modern game AI. Find the whole series via our homepage.
A core goal for Virtual Beings is to create interactive characters that feel alive. We want to tell you more about why and how we're doing that, but this can wait for a later post. Here we'll stay focused on a single problem: How do people know that some character is 'alive' in the first place?
Nothing to see here, folks. (Source: National Geographic)
Thought's don't travel, minds are invisible, and visual appearances can be deceiving - just ask the Eastern Screech Owl. But as soon as it flies off, leaving the tree to stay stoically in place, the owl will have broadcast to the world that it is, indeed, a living animal.
More generally, it's through the owl's behavior that we understand that it's alive. What is 'behavior'? You might think that such a simple question would have been answered long ago by any of the behavioral sciences (psychology, anthropology, cognitive science ...).
Alas, not so. It turns out that a clear and sharp understanding of behavior is only necessary once you're trying to generate it - which is precisely what we at Virtual Beings are doing. Over many years of iterating on Rascal!, our Artificial Behavior (AB) engine, we have found that agent behavior - where 'agent' refers to both animals and humans - is characterized by twelve properties. We call them 'principles' as a small homage to Disney's famous twelve basic principles of animation.
Taken together, they sharply delimitate behavior from anything that resembles it without matching it. And more importantly: If you would like to create an AB-engine which allows interactive characters to feel 'alive', you'd want to make sure that it supports all twelve - like Rascal!
At first sight, behavior seems to be about muscles that move. Let's say you're sitting in a fancy restaurant, waiting for your date to show up. Your fingers are nervously tapping on the table and your heart is racing.
Does that mean you're doing two things at the same time here? Not quite. Living bodies are full of complicated stuff doing complicated things, but most of this isn't perceivable from the outside. For our purposes, behavior includes only events that are observable without special instruments (such as an MRI scanner). So if your racing heart contributes to your overall nervousness and you end up knocking over your glass of orange juice and ruining your shirt - that would be observable, hence behavior.
For AB, this first principle entails a welcome simplification: We don't have to try to recreate life itself, just its appearance. Disney called this 'the illusion of life'. We'll go one step further and call it the illusion of interactive life - something we'll cover in a later blog post.
Living beings behave all the time, from birth all the way to their death. Our language recognizes this by providing us with an arsenal of terms we can apply to someone who isn't showing any movement or making any audible sound. For example, we may say that this person is sleeping, sitting still, holding their breath, playing dead, and so on.
Doesn't this conflict with principle 1? No, because even when an agent is seemingly doing nothing, we can observe something: In the GIF above, you can tell effortlessly that sitting perfectly still under a shower of balloons is a skilled (and probably rehearsed) display of behavior. The mere act of sitting straight requires coordinated use of dozens of muscles. In a more general vein, we may say that agents emit continous behavior streams. The problem of AB is thus to generate such streams from individual behaviors that are connected to preceding and subsequent behavior.
There is no real life behavior that is not interactive. For example, playing with a friend involves responding to their actions, and climbing a rock requires adapting one’s hands to its shape. Even the most self-involved behavior takes place in a context and needs to interact with it. Take breathing as an example, where the respiration rate depends (among other things) on the density of oxygen in the atmosphere. If we take away the context (oxygen), the behavior (breathing) ceases to make sense.
Behavior is how agents relate to the world, and that is why all behavior needs to be interactive. This also means that there is no difference between behavior that is interactive, adaptive or responsive - these words just add different flavors to the fact that behavior is necessarily contextual. For AB, this means that all behavior needs to be procedurally generated - which is unfortunately the exact opposite of what happens in most games today, which instead tend to assemble behavior streams from canned packages of pre-configured behavior: stand-loop, walk-loop, jump and so on, with awkward transitions between them.