Today’s SporeDay is probably one of the best ones we had in some time. I absolutely love the Spore developers – they know how to conduct an interview and actually not put you to sleep! They’ve gathered the fan’s questions to Chris Hecker and he came forth and answered many of them – asymmetry, behavior, even his favorite hobbies.
Here’s MaxisCactus message that she posted on the Sporums, make sure you continue reading for the full review (or drop by the forums and leave a note for Chris)
Thanks a lot for all the great questions!
I’ve taken the list of highest voted questions, and then also included any closely related questions from the ones that didn’t get enough votes, and I’ll write the responses so they hopefully answer the entire group of questions on a given topic. I also included a few extra ones that were really quick to answer sprinkled through.
Here we go…
Asymmetry
• What do YOU think of the asymmetry campaign? Do you think it may be a good idea?
Asked by CubeTubeMan, Sgt.Waffles, TexasGamer, ZEE_EXX, poisfig, dinoboy300, nebula27, SPYDRI’m really glad this one got the most votes, because it happens to be what I’m working on right now! So, yes, I think it’s a good idea! First, some important caveats: this is research work we’re doing to investigate the feasibility of asymmetry in the creature and vehicle editors. It might not work for any number of reasons, and therefore, there are no guarantees it will ever see the light of day and ship, but please keep your fingers crossed and beam us good bug fixing karma!
A bit of history about the creature editor and asymmetry to give context: there were actually three generations of the creature editor over the years of Spore’s development, lovingly called CE1, CE2, and CE3. Each successive editor built on the lessons learned from working on and testing the previous one. Obviously, only CE3 ever got to a shippable state, and the others were just prototypes. I think they all supported asymmetry to one degree or another at various points in their development, even CE3. However, as we fixed the bugs, figured out the final user interface paradigms, and polished up CE3 into the creature creator you all know and love, the asymmetry code got less and less attention because resources were limited and it was optional for shipping, while the symmetric editor manipulations were essential to making the editor work intuitively. As we say in the business, the asymmetry code “rotted”. This is a pretty natural process for complex software…the more important features get prioritized, and some cool-but-optional parts sometimes rot and have to get disabled due to time limits and resource constraints. We always hoped to bring it back, but we just couldn’t spend the time to do so before Spore’s release.
After we shipped last year, Dave Culyba, one of the main editor programmers, and all-around awesome guy, started to resurrect the old asymmetry code and fix the bugs. Let me be clear: the old asymmetry code never actually worked well and it needed to be completely rethought, and so Dave had to do a ton of smart and hard work to get it up and going. He solved a lot of the difficult problems (like “How does the editor economy work when you can delete one of the pair of parts?”, “What do you do if you drag a symmetric part to an asymmetric limb, and then drag it back, without releasing your mouse button?”, etc.). After GDC this year, I decided to take it on, and now Dan Moskowitz, the lead editor programmer, is working with me and we’re giving it a shot.
We’re really excited by the potential, and we’ll be able to talk more about it later, assuming our confidence in it shipping increases over time. It’s still buggy with lots of edge cases that we need to fix, but we showed it to the Adventure Camp folks last week and they all literally gasped when I did the first asymmetric operation, which was great. If it ever ships, you guys will go crazy with it, and I can’t wait to see what you make!
Just remember, there are no guarantees this will get released, it’s still a research project at this point, so please be patient and think positive bug-fixing thoughts!
Animation
• Why did you get rid of the procedural animation for Spore? Was it a play testing issue? Was it buggy?
Asked by Bofosho2, Mystfan, TexasGamer
• Also, how did the original, (GDC ’05) Proc. Animation system work? (I know that it wasn’t a working game then, but you did have the editor, according to one of your interns.) It must have been a pain to code.
Asked by Bofosho2First, it’s important to understand that there never was some other version of Spore that got changed at some point, there was only a growing number of technologies that solved problems and a constant learning on our part about what game we were making and how to best use those technologies to make it. To use an biological analogy, it’s not like there was an existing, fully formed species that then went through natural selection yielding other fully formed species over time, and then we finally decided to ship one of them. It’s more like a single creature gestating in utero, starting out as a clump of cells that looks nothing like a game, eventually forming into somewhat familiar shapes (maybe it had a vestigial tail at one point in its development that disappeared, etc.), and finally it develops lungs and a heart and becomes viable and it gets born. Or something like that. 🙂
As for how the 2005 animation system worked specifically, I talk about it a bit in my GDC 2007 lecture. There’s a screenshot of one of the scripts in the slides at that link if you’re curious, and you can download the mp3 to hear the description. It was basically a scripting language built on top of Lua. There were two main problems with the original system. First, it was very difficult to get expressive motion out of it, because the motions it produced were very linear. In other words, a hand could grab towards a piece of fruit, but it was hard to naturally vary the hand’s speed during the grab, and it was even harder to script movement tangential to the direction of the fruit, both of which are absolutely vital to an animation reading as having anticipation and intent. Second, as I say in the lecture, because it was a programming language, it was unclear who we should hire: programmers who can animate, or animators who could program. Unfortunately, the intersection of those two sets is almost empty, which created a huge production risk because we had thousands of animations to create. So, to solve these two problems, we redesigned the system to implicitly handle the proceduralism as much as possible, and expose the expressive parts to the animator, as you can read about in the SIGGRAPH paper. The final system has a lot of familiar controls to a character animator, and then it handles the heavy procedural lifting of applying the animations to the different shapes of the creatures. We’re pretty proud of the results, and you can see the animators were able to get a lot of emotional expression that reads even on pretty insanely shaped creatures!
I also think there’s a misconception about the definition of the word “procedural” when it comes to Spore’s animation system in the first question. There isn’t really a consensus on what “procedural animation” means in the computer graphics community. It’s a pretty blanket term for “non-traditional animation”, so it’s not really very useful to try to label one system procedural and another not. A working definition could be, “is a given animation asset described only by code?”, in which case the old system was procedural and the current one is not, but that ignores how the line between code and data is quite blurry in practice, and so a more useful definition that would better fit the more common graphics usage would be, “is animation data just a recording of joint angles that’s played back, or is heavy processing involved in taking the source data and producing character motion?”, and by that latter definition the current system is highly procedural.
Rather than labels, I think players are more interested in what the system can do, and although I think we did an amazing job, I also know the GDC 2005 demo showed a couple cool things that really resonated with people that the system we shipped did not do. The two biggest ones are what we call weapons-anywhere, which I discuss below, and drag-carcass, which is something we hope to get back in there at some point. Both were just time/priority issues during development; there’s no inherent reason they would work in one system but not the other.
I hope that clears up some of the questions around these topics!
Here are a bunch of other similar animation system questions that I’ll answer quickly:
• Do you think it could bear fruits if Spore’s procedural animation system and evolving creatures like Karl Sims ‘blocky creatures’ would be combined? Any chance this will ever happen?
Asked by vladiI’m a huge fan of Karl Sims’ Evolved Virtual Creatures work, and there were actually some really early prototypes for Spore that reproduced some of his stuff. His system actually bred the animation system along with the morphology of the creature, so he doesn’t need us! 🙂 Our system could animate his creatures, assuming their body parts were tagged appropriately as limbs, spine, hands, etc., but the beauty of his work is that the creatures figure out how to move themselves in non-intuitive ways as they try to become more successful at the task he’s using as a fitness function, where our animations are authored by people, so you wouldn’t get the same level of serendipity. That said, his system doesn’t really have any explicit controls over the emotional expressivity of the motion (you feel kinda bad for the ones that can’t walk very well, but that’s more of a natural pathos reaction rather than something intentional), and his fitness functions are incredibly simple compared to some of the animations requirements in a big game, so it’s hard to see how you’d use it in real production. I think a lot of people have played around with his ideas, but nobody has figured out how to make a game out of it yet.
• Do you think that there will be any other games in the future not connected to Spore that will use Spore’s procedural approach to animation?
Asked by kaploy9
• Could procedural animation work for anything else other then creatures? Mechs & flora, perhaps?
Asked by kaploy9The plants in the game actually are creatures, as you can see if you turn on the blocksmode cheat, and they’re playing a particularly boring animation that makes them not move unless a creature bumps into them or picks a fruit, in which case they run our jiggles passive secondary animation system. Developers from several other games have come to talk to us about the system, and I definitely think there are specific ideas in our system that others will adopt (we describe them in the SIGGRAPH paper in detail), but I doubt other games will use the complete system as it stands because it’s just a little too wacky. Unless you have user-created creatures, you don’t need our level of proceduralism and generality, and if you don’t have user-created creatures, usually your animators will want to hand-animate the static creatures for the best quality. As for mechs, the Creepy & Cute Booster Pack has the Robot Dance in it, which is a hilariously awesome animation by the very talented John Cimino!
• Some animation is good in the game as I am sure you know but some just turns out very odd and distorted will there ever be a update for animation?
Asked by Danny13We update both the code and some of the animations almost every time we ship anything, so yeah, it’s an ongoing iterative process to improve quality. I just fixed a bug today, in fact! The editors are so flexible and the creatures you can make are so varied that it’s never going to be perfect compared to animation in a game where the character is known well ahead of time, like James Bond or Lara Croft, but we’re constantly looking at ways to improve the animation quality and give the animators ways of making more general animations that work on wider varieties of creatures. The comparison to traditional static-character animation is interesting to me. We’ll never reach the same level of quality for a given fixed character and pre-authored animation, but we bring the player’s own creations to life, which conveys something that a static character will never achieve. That moment in the creature editor when you put an arm on the torso, and the creature turns to look at its new hand, is just pure magic, and I never get tired of watching players experience this for the first time. I think this is sort of similar to the dichotomy between film and game rendering. Games will never be able to achieve the same rendering quality for a given scene as film, because film is static and linear. But, games gladly pay that price, and in exchange we get interactivity, so the player can actually move around the spaces we create and make decisions, which is something the linear art and entertainment forms can never do. I think it’s a good tradeoff! 🙂
• Why isn´t the strike animation hooked on the Placement of the Part which gives Your Creature the ability?
Asked by Mystfan, TheBuzzard, SSJ3_RaditzWe’ve actually fixed that with a feature we call weapons-anywhere, and some of the animations (like some strike levels) will be updated in GA, and we hope to update the rest of the animations where it’s applicable as well. This was just a time issue. The animators needed a feature in the animation system to allow them to select parts based on the type of body region (tail, torso, head, limbs, etc.), and that’s a little bit hard when the player can make the creature, so it took us a while to figure out how to do it generally.
• Four-legged creatures used to move differently when made to move faster by double-clicking the mouse than they do now. Now, they just do the ordinary walk animation, only faster. Why was this feature removed?
Asked by EnochI went back and looked at the history for the quadruped gait files, and I didn’t see many changes since we shipped Spore, so I’m not sure about this. Bernd Raabe, our gait expert, is currently on vacation, so I’ll ask him when he returns and update the thread. The gaits are authored so that different foot patterns and curves kick in at different speeds, so it’s possible to start galloping at a run speed, for example, but the animators have control over the timings and gait patterns and they may have decided the current ones looked better at the common speeds in the game. I’ll find out more and get back to you guys in a couple weeks when Bernd returns.
Creature Skin and Paint
• Do you think it could be figured out how to do spore fur?
Asked by MazekaYeah, there are several techniques for doing fur in real time. The problem is we sometimes have a lot of creatures on the screen, and we want the game to run on relatively slow machines so more people can play it, and fur is still pretty slow to render. We had several fur prototypes during development, but they were all too slow to ship, sadly. It sure would be cool, though!
• Why did a paint tool that would allow you to completely customize your creature or even add a single spot on them never make it into the game?
Asked by MrOwlThe problem with 3D Paint, which is what this feature is called, is three-fold: 1) it doesn’t generalize, meaning if you go paint your creature, and then go back to build mode and move an arm, it’s hard to know how to modify the paint strokes you made to fit on the new shape, 2) it’s hard to come up with an intuitive and accessible user interface for 3D Paint operations, and 3) we send all the creatures over the network to and from the Sporepedia, and the current paint information is 3 numbers (to pick which script for each layer) and 3 colors, while recording paint strokes would be much more information. This is not to say that we’ll never do this, but there are these significant problems that will need to be solved, which explains why we haven’t done it yet.
• I wanted to know what you used to make spore. Blender? Maya? Artofillusions? or did you make your own?
Asked by fidosister, cartoonworksWe used a lot of different programs, some off-the-shelf, and some custom. Maya was used for the rig blocks (the parts in the editor palettes), and most of the static objects in the game, like rocks and props and whatnot. Our creature procedural animation tool is called Spasm, and is described in the paper we wrote about the animation system. We used Microsoft Visual C++ for the code (although a very small group of us use GNU Emacs for editing, because we’re old-skool!). Our User Interface editor for doing all the dialogs and UI layouts is a custom tool. I think for procedural audio we used a mix of custom tools and Max MSP. Our particle and effects system is an internal tool called Swarm, written by the incredible Andrew Willmott. For bitmaps, most people used Photoshop, although I’m sure there were other packages in the mix since bitmaps are so standardized. The majority of the content in the game is obviously made in the game itself, from the creatures, buildings, vehicles, trees and bushes, planets, etc. Using the in-game editors ourselves during development meant we were able to ensure they worked well enough for expert users, and in fact a lot of our artists preferred to use our own editors for things because it’s so fast to get something looking good!
• Would it be possible, in a future version of Spore (if any are planned), to have a simple, easy to use skull editor, using any of the design methods you worked with? Or perhaps even something new?
Asked by Moejoe18This is possible, but hard. To explain why, I need to explain a bit about how modern games like Spore use the 3D graphics hardware in your machine. For the rig blocks that deform during play, like the mouths that open/close and smile/frown, the deformation happens inside the 3D hardware right before the mouth is drawn on the screen. The game code doesn’t actually know where the final triangles that form the mouth are in space, it just tells the 3D hardware to move the underlying “bones” in the mouth, and the hardware figures out where to move the triangles that are attached to the bones. This poses a problem for what we call pinning, which is the ability to stick one part onto another part. The child part is attached to the parent part by code running on the CPU, but the parent is deforming on the GPU, and since it’s too slow to get the triangle information back from the GPU, we don’t know how to move the child part to stay pinned on the deforming parent. You can see this problem in the game now, by taking a mouth that deforms a lot, and sticking an eye on it. Go into play mode, and play the roar animation, and you’ll see the eye float in space during the mouth deformation. We’ve talked about various ways to fix it, but they all have tradeoffs. So, to answer your actual question, a skull editor (or an editor that lets you make parts of the other editors, which was another question) would be possible, but it would exacerbate this existing problem, since you’d obviously want to be able to pin other parts to your custom skull. Hopefully we’ll at least figure out a solution to the existing problem at some point, but it’s nontrivial.
• Why do we not get another axis for body shaping, something that would allow us to have “ray” style or flattened creations?
Asked by CirrusXL
• Can there be flat surfaces, like turtle shells?
Asked by poisfigAs I mention on my Liner Notes page, handling non-spherical metaballs really complicates the system and would slow it down. Spheres are very fast to evaluate on computers because they are described by just a single point in 3d and a radius from that point. Ellipsoids and other objects that allow non-isotropic shapes are all more complex to specify and slower to evaluate. Plus, we’d need a user interface to allow the player to manipulate them, which adds complexity to the editor UI as well. We experimented with distributing the spheres over a flat area, and that works okay, but it’s pretty clunky to interact with.
• Creature creator can make bulges, but what about dimples, or recesses?
Asked by poisfigThe metaball system we use makes certain assumptions about the mathematics of the surface for performance and stability, and those assumptions are violated if you allow negative weights (sometimes called “negaballs”). So, it would be possible to support negaballs, but it would be more work to get it to the same performance and robustness as the current skin.
• How do you make the creatures look so real? (in the first page)
Asked by tomerb, AndrewBot88, 27howitzer, docpippoThose creatures were modeled by our amazing artist John Cimino directly in the prototype metaball editor, not in the creature editor. Notice there are no rigblock parts in those creatures, they’re just all skin surface. The metaball editor was the crufty test harness for the skin code, and it’s buggy and not very usable. It was just for exploring what shapes we could make with the metaball skin technology. They’re also hand painted in the 3D paint prototype, as I talk about on my Liner Notes page.
• What happened to the firefly texture thing?
Asked by FoedawgI assume you mean emissive textures, where the creatures can emit light? It was part of the prototype skin system, but it never lived past that. It was too low of a priority and used up too many hardware resources.
Creature Behavior
I grouped these questions together because they’re all related to creature game AI. I wrote the underlying system that the AI itself was implemented in (called the Behavior Tree system, as discussed in my Liner Notes), but I didn’t work on the creature game for the final year and a half, so I asked Alex Hutchinson and Tom Bui for help in answering some of these.
• And why are creatures all confined in nests in the Creature stage?
Asked by SSJ3_Raditz
• I seen the herd prototype, why did that not get in SPORE? Asked by crazy199292
• Why does it seem that the AI prioritizes the player over all other threats?
Asked by KnTenshi
• Do carnivores/omnivores go hunting? I’ve seen herbivores go to a nearby plant and chow down, but I haven’t seen much in the way of predator/prey interactions.
Asked by KnTenshi
• Do AI creatures not have a hunger stat?
Asked by KnTenshiThe basic answer to all of these is that we experimented with a lot of creature AI designs over the years. At various points we had predator/prey simulations, migration, herds, hunger, and all sorts of stuff that sounds really cool, but we found over and over again that it’s hard to make gameplay with the more natural behaviors, and it’s even harder when the levels had to be procedurally generated, and harder still when they had to be the same for an avatar-based game and RTS-style games. For example, we’d often have situations during development where you would roam around the countryside and never find another creature because they’d all run away, or all gone to the opposite side of the landmass to drink, or all killed each other. The AI we ended up with is very nest-centric and very player-centric because it made it so we could author the procedural level generation with some predictability and the player could build a model of where things were and how they’d react. I think it would be great if we’d experiment more with some of these naturalistic simulation style behaviors, but it’s a tough nut to crack, and we had a lot of nuts that needed cracking on Spore. 🙂
• Will there ever be a gender option for creatures?
Asked by lazersamaWe actually toyed with this idea several times, but it always seemed to add more complexity than it was worth. That’s not to say we couldn’t do something with gender later, obviously, but I do remember several discussions about it. There was also the issue of how you would specify the creature’s gender. Making it part-based seems, uh, problematic. 🙂
• Is that BT I saw on your Liner Notes for Spore actually implemented into Spore?
Asked by YourBreakfastNope, it was just a simple example Behavior Tree. The BTs in the shipping game are hundreds of lines long!
Miscellaneous
• Other then Spore, do you have a favorite project you’ve worked on in the past?
Asked by kaploy9I’m particularly proud of my work with the Indie Game Jam and the Experimental Gameplay Workshop over the years to encourage innovative game design research.
• Did you like Will’s hair more when it was grayish a while ago, or now since it’s a darker color. Personally, I liked the grey, aged look. He looked very wise back then.
Asked by kaploy9I hadn’t noticed a change in his hair, so I asked him, and he said: “LOL, no, I’ve never tried hair dye. Maybe it’s the way I comb it?” So the mystery endures.
• If you had any job in the world, what would it be?
Asked by demetra999
• Any hobbies that you have? Or are you the kind of person that enjoys staying in the cubicle after-hours and working ’till next morning.
Asked by kaploy9If I could have any job in the world, I would still be a game developer. Personally, I think games have the opportunity to become the preeminent art and entertainment form of the 21st century, the way film arguably was to the 20th century, and it’s incredibly exciting to be there in the early days of that. As an industry, we need to figure out how to do a better job of making games that can use interactivity to appeal to people emotionally and speak to the human condition, the way other art forms can, but if we can figure that out, the fact that our form is interactive and the player has agency in the game world will revolutionize humanity’s relationship to art and entertainment. Exciting times ahead!
• Did you volunteer to answer these questions or did you lose a bet? If you lost a bet, what was the bet that you lost?
Asked by MinionJoeNope, there was no bet, although that would have made a better story, but I didn’t exactly volunteer either. When we did the polypod gait tutorial, I answered some questions in the thread, explaining some stuff in more depth, and noticed you guys were very interested in direct communication with the developers. I mentioned to MaxisCactus that we should do a kind of Ask Slashdot type thing with various members of the team to give you guys more direct access to us, and she mentioned the interview with Stone for GA, and then asked if I’d do the next one, and here we are.
• If you could go back to the beginning when you started making Spore, would you do anything different?
Asked by karonen
• Do you have any certain hopes in the future for Spore? (like finally getting a certain feature fixed in a later expansion and what-not)
Asked by kaploy9I think these questions are two sides of the same coin, so I’ll answer them together. There are, of course, tons of little quality things in the code I worked on (creature skin, paint, animation, etc.) that I’d love to improve (either in the past or in the future!), but that’s always the case with a big complex system with aesthetic outputs. My favorite moment in the game, as I mention above, is when the creature first comes to life on the editor dais after you stick a limb on it. I think that’s pure magic for players, and I’m really proud of the work we did to bring the creatures to life, and to give them emotions, but there’s always more to do there. In terms of big things I’d like to see in the future, I think the biggest one for me is I’d love to see us explore the space of problems that have more consequence on the player’s actions in the editor. This was one of the hardest design issues we faced, and we wrestled with it during the entire 5 years I’ve been on the team. The tradeoff between accessibility, predictability, creativity, consequence, and diversity is very complex and subtle, and we tested a lot of different solutions. We’ve put down a flag in one area in that space so far, and I think it would be great to explore other areas as well, including the regions that have extreme consequence (eg. where you can’t reach the fruit if your arms aren’t long enough, and so you starve) and no consequence (how do you design a game around aesthetics instead of behavior?). There’s a lot of unexplored territory with user generated content, and it’s all pretty exciting to me.
• What’s your favorite type of cheese?
Asked by TurdsMcPoopThis is actually the question I voted for because I wanted to have to do the research to answer it with the depth it deserves. Unfortunately, I missed my chance to visit the amazing Berkeley Cheese Board before I had to turn in these answers, so I’m going to have to update the post with the answer to this question in a couple days. I can say with some confidence that my favorite will almost certainly be some really stinky French cheese. I’m a sucker for fancy cheeses.
Thanks again for all the awesome questions!
Yours,
ChrisInterview Overview
Maxoid Chris Hecker is a technology fellow on Spore. A few of his major contributions to the project include development of procedural animation, painting, and skinning of creatures.
You can find out more about Chris through his Liner Notes for Spore.