Technologies behind Spore

30 06 2008

By Christian Laforte

Chances are you have already heard and are waiting to play Spore, arguably the most ambitious video game ever. Spore allows the player to easily model and control the evolution of an alien species, including an original 3D, fully-animated creature. The possibilities are infinite: your creature can have multiple heads, zero or dozens of legs, multiple sets of arms or claws, a mouth in the middle of its belly, etc. Here’s an example that you can reproduce using the free Creature Creator tool.

For the game to be enjoyable, each unique creature must be animated to show feelings and intent. So how do you make a two-headed worm look excited? And how do you animate a thirteen-legged, three-armed, two-mouthed monster running happily? This would already be challenging for an experienced 3D animator. But because the user can change his creature anytime, the animations must actually be adapted on the fly.

So how did they do it? The EA engineers have opened up a lot of their secrets, most of which are collected on Chris Hecker’s page.

Their most detailed research paper will soon be published at Siggraph 2008:

Real-Time Motion Retargeting to Highly Varied User-Created Morphologies
Chris Hecker, Bernd Raabe, Ryan W. Enslow, John DeWeese (Maxis/Electronic Arts), Jordan Maynard (Trion World Network), Kees van Prooijen (Total Immersion Software)

If you’re a game or 3D graphics developer, by all mean, read this paper. As far as Siggraph papers are concerned, it’s refreshingly practical and accessible. About half of the paper concerns special cases that are only applicable if you try to animate alien characters, e.g. how to handle with look-at constraints for two-headed characters.

Still, there are a lot of techniques applicable to any game or animation system, including a much improved IK (inverse kinematics) solver which could help produce more believable animations in games. In case you don’t know, an IK solver is used to pose the character according to some constraints or goals, e.g. bring one arm to the food, bring the food in the mouth, shake hand with the hand of another character. The IK system in Spore is designed for real-time and elegantly handles conflicting goals. The same system could be applied to complex dynamic animations on human characters, e.g. animate the character aiming a gun, running and reaching for an object at the same time, in the most natural way.

Their animation retargeting technique should also help artists be more productive, by creating animations once and having the computer automatically adapt it to characters with longer legs or arms.

So how well does it work, and will it be fun? I tried the Creature Creator tool. I found it exciting to create my first two creatures. The authoring tool is extremely simple, and there’s a lot of smart usability design in there, like automatic mirroring of body parts, a simple but useful idea that isn’t as easily supported in Maya and 3ds Max.

The animations are fun to watch and listen to, especially the first ten minutes. The gait animation (walking and running cycles) is really cool to watch in action. Even the weirdest character ends up conveying fear, happiness and excitement effectively.

After ten minutes I started noticing small problems here and there. The keyboard movement is annoyingly jerky. The animation and simulation system doesn’t check for interpenetration… so one leg of my creature frequently passed through the torso, breaking the illusion. Sometimes the heads even disconnected from the rest of the body. Finally, the system doesn’t model the mass of the body parts, so you can end up with creatures that look like they should topple, but mysteriously hang in balance.

I suspect that some of these problems will be addressed in the game, especially the keyboard control jerkiness.

So how much effort would it take to reproduce this complex animation system? It all depends on what you want to achieve and where you start with. Hecker and his Spore colleagues made their own animation authoring tool, which makes sense since they wanted to integrate the functionality right inside their game. If all you’re interested in is some pre-processed animation retargeting and improved IK, you could save time by building the functionality as a plug-in to Maya or your favorite animation package… although you’ll still need to implement the runtime IK evaluation if you want to adapt the animation in the game.

If you’re interested in supporting unusual creatures, with multiple heads, arms in unusual locations, etc. then you could implement a variant of Spore’s selection menu and branching predicates. I suspect this could save a lot of time in pre-visualization for CG movies, when animating creatures like these:

Candlestick character from Disney’s Beauty and the Beast

Cerberus mythological character, unknown artist

If we were asked by a client to implement some of this functionality, we would likely start from the Feeling Engine or a Maya plug-in. The Maya plug-in would be a natural approach if the final desired result is an offline animation, to be touched up by an experienced animator. Otherwise, the Feeling Engine already supports complex character animations, physics and 3D manipulators, and easy back-and-forth with Maya or 3ds Max, so this solution would be most appropriate for a stand-alone tool.

Share/Save/Bookmark

Subscribe to RSS feed!


Actions

Informations

2 responses to “Technologies behind Spore”

10 07 2008
uber1337 (15:59:08) :

Yeah, really interesting and promising game. I’ve also spent some time trying to figure out a little about their tech: http://uber1337.livejournal.com/588.html

10 07 2008
Christian Laforte (16:39:17) :

Thanks for the link, uber1337! Your observations on the texture assignment and the geometry/skin generation completes the Siggraph paper quite well. :-)

Leave a comment

You can use these tags : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>