IEEE Spectrum September, 2008 - 33

abstractly in software. Wright decided
to build Spore's real-time animation
around a technique called procedural
generation. The "procedure" in Spore is
a set of algorithms that execute a player's designs, generating entirely new
content in the midst of game play. Other
game developers have used the technique for years in a limited way, but no
game has ever relied on it so heavily to
create highly customizable yet lifelike
creatures in real time.
So the Maxis team had little to go on
as they tried to figure out how to make
their exotic beasts move. Wright, who
builds BattleBots for fun and possesses a
voracious intellect and curiosity, decided
to hit the books. He began reading up on
biomechanics-in particular, the physics and physiology of how animals move.
"Depending on the leg length and how
supple the spine is," he says, "you can get
a characteristic oscillation of the [torso]
of the creature over the ground."
To get a creature to walk or run
convincingly, the software engineers
encoded an overarching set of rules on
how to generate movement. The animation algorithms start by looking at the
number of legs, the length of each leg,
and the creature's bodily symmetry to
calculate something called a walking
ratio. If one side has twice as many legs
as the other, for example, the ratio would
be one to two. The algorithms will also
compute the rhythm of a creature's footfalls-the length of time between, say, a
front leg and a back leg hitting the ground
in a single stride. The overall gait takes
all these factors into account, along with
the dimensions of the torso and head (or
heads, as the case may be). The result is
a convincingly lifelike motion.
The Maxis team then had to see if
those movement rules worked on actual
Spore beings. The team devised a huge
menagerie of test creatures, observed
www.spectrum.ieee.org

how they stumbled around, and then
adjusted the software's algorithms,
essentially creating a virtual island
of Dr. Moreau. "We have these tests
where we take 10 totally crazy, random
creatures and run animation on them,"
Wright says. "And we find out that it
works for these seven, but for these two
the legs look weird and for this one the
back isn't straight enough. We're refining those algorithms all the time."

T

o illustrate, Wright goes
over to his Dell computer and,
with a few pecks at the keyboard, brings up the game's
Creature Creator on screen. He
starts with a short, fat torso and attaches
birdlike wings on its sides for ears. From
a palette of eyeballs, he clicks and drags
a pair of big round eyes and drops them
onto the beast's shoulders. He continues to
tweak the anatomy, equipping the creature
with legs, arms, hands, and so on.
Even as Wright experiments with different looks, the beast begins to move-
wiggling its newly attached limbs and
blinking its new eyes. It even seems to
show its approval of certain choices by
smiling and nodding.
Based on each new creature's features and shape, the animation software
determines the sounds it can make, the
way it dances, and much more. A skinny
beast with a beak and decorative tufts of
hair may flutter its eyelashes and emit
a high-pitched warble, while a hulking
creature with spikes along its spine may
blink slowly and communicate in a baritone growl. Those traits in turn end up
influencing whether the creature greets
other species with a friendly advance or
with an attack, and the fate of its civilization depends on those nuances.
Wright clicks on a button to test the
creature he's just designed. With short
legs on one side and long legs on the other,

sim everything: through the course of
the game, creatures evolve from single-celled
organisms into hyperadvanced societies.
imageS: elecTronic arTS

the animal lumbers awkwardly but convincingly across the screen. Indeed, the
little legs scurry just fast enough to keep
up with the long ones. But Wright isn't
done with him yet. "What would it take
to make any creature sad?" he asks, tapping away at the keyboard. Suddenly this
alien being adopts a recognizably sad
pose, dropping its torso, curling down
the edges of its mouth, and dully drooping its eyelids. You feel kind of sorry for
the little guy.
This beast is relatively straightforward, but the Maxis team had to allow
for the most twisted possibilities a player
might dream up-for instance, a creature
with no limbs. "Now the game has to deal
with all the ramifications of that," says
Hecker. "So how do you pick up a piece
of fruit?"
In conventional animation systems,
the concept of a limb may be encoded
not as an object but rather as a set of spatial transformations that can be applied
to a body. To accomplish this, an animator can assign labels to parts of a character's skeleton. When a character reaches
for that fruit, the animation might state
something like, "Rotate bone 1 from 0 to
52 degrees."
But in Spore the skeleton is unknown
until the game is already in play. So
instead of using labels, the programmers encode generic descriptions of each
body part, referring to a specific limb by
describing its context relative to other
body parts. Let's say a creature throws
a punch at a bad guy. The animation may
dictate the action with instructions that
would read something like, "Move upper
leftmost grasper from rest position to a
position parallel to your leftmost head,

SEptEmbEr 2008 * iEEE SpEctrum * NA

39


http://www.spectrum.ieee.org

Table of Contents for the Digital Edition of IEEE Spectrum September, 2008

IEEE Spectrum September, 2008 - Cover1
IEEE Spectrum September, 2008 - Cover2
IEEE Spectrum September, 2008 - 1
IEEE Spectrum September, 2008 - 2
IEEE Spectrum September, 2008 - 3
IEEE Spectrum September, 2008 - 4
IEEE Spectrum September, 2008 - 5
IEEE Spectrum September, 2008 - 6
IEEE Spectrum September, 2008 - 7
IEEE Spectrum September, 2008 - 8
IEEE Spectrum September, 2008 - 9
IEEE Spectrum September, 2008 - 10
IEEE Spectrum September, 2008 - 11
IEEE Spectrum September, 2008 - 12
IEEE Spectrum September, 2008 - 13
IEEE Spectrum September, 2008 - 14
IEEE Spectrum September, 2008 - 15
IEEE Spectrum September, 2008 - 16
IEEE Spectrum September, 2008 - 17
IEEE Spectrum September, 2008 - 18
IEEE Spectrum September, 2008 - 19
IEEE Spectrum September, 2008 - 20
IEEE Spectrum September, 2008 - 21
IEEE Spectrum September, 2008 - 22
IEEE Spectrum September, 2008 - 23
IEEE Spectrum September, 2008 - 24
IEEE Spectrum September, 2008 - 25
IEEE Spectrum September, 2008 - 26
IEEE Spectrum September, 2008 - 27
IEEE Spectrum September, 2008 - 28
IEEE Spectrum September, 2008 - 29
IEEE Spectrum September, 2008 - 30
IEEE Spectrum September, 2008 - 31
IEEE Spectrum September, 2008 - 32
IEEE Spectrum September, 2008 - 33
IEEE Spectrum September, 2008 - 34
IEEE Spectrum September, 2008 - 35
IEEE Spectrum September, 2008 - 36
IEEE Spectrum September, 2008 - 37
IEEE Spectrum September, 2008 - 38
IEEE Spectrum September, 2008 - 39
IEEE Spectrum September, 2008 - 40
IEEE Spectrum September, 2008 - 41
IEEE Spectrum September, 2008 - 42
IEEE Spectrum September, 2008 - 43
IEEE Spectrum September, 2008 - 44
IEEE Spectrum September, 2008 - 45
IEEE Spectrum September, 2008 - 46
IEEE Spectrum September, 2008 - 47
IEEE Spectrum September, 2008 - 48
IEEE Spectrum September, 2008 - Cover3
IEEE Spectrum September, 2008 - Cover4
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1217
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1117
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1017
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0917
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0817
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0717
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0617
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0517
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0417
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0317
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0217
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0117
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1216
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1116
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1016
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0916
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0816
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0716
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0616
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0516
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0416
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0316
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0216
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0116
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1215
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1115
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1015
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0915
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0815
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0715
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0615
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0515
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0415
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0315
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0215
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0115
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1214
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1114
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1014
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0914
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0814
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0714
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0614
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0514
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0414
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0314
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0214
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0114
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1213
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1113
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1013
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0913
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0813
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0713
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0613
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0513
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0413
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0313
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0213
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0113
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1212
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1112
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1012
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0912
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0812
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0712
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0612
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0512
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0412
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0312
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0212
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0112
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1211
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1111
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1011
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0911
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0811
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0711
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0611
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0511
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0411
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0311
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0211
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0111
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1210
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1110
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1010
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0910
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0810
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0710
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0610
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0510
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0410
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0310
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0210
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0110
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1209
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1109
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1009
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0909
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0809
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0709
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0609
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0509
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0409
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0309
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0209
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0109
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1208
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1108
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1008
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0908
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0808
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0708
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0608
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0508
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0408
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0308
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0208
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0108
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1207
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1107
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1007
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0907
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0807
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0707
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0607
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0507
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0407
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0307
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0207
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0107
https://www.nxtbookmedia.com