An XML "recipe" for every Spore creature is stored on the Spore servers and is publicly accessible via the Spore API. The 2D-fier reads in this XML information and renders animated 2D creatures using Flash in a web browser.
In the figure above:
Top Left- 3D Spore creature
Bottom Left- Visualization of skin, limbs and part transforms
Top Right - 2D-fied creature!
Bottom Right - stylizing by swapping part palettes
The 2D creatures are articulated as ragdolls using hierarchy information available in the creature XML. Here are some more 2D-fied creatures:
Procedural Texturing and Ambient Occlusion
Spore's "baking" technology
As a part of Spore's core engine team I helped deliver our procedural texturing and asset baking systems
Player Driven Texturing
Creatures have a particle based texturing system where players get to select combinations of effects such as stripes, dots etc. of various kinds. The system is sensitive to the morphology of the player's creature and applies three layers -base, coat and detail parameterized by player chosen colors. Buildings and vehicles have a region/swatch based paint-by-numbers scheme. For one-click painting both systems have preset themes.
Check out our Siggraph sketch on Player Driven Texturing!
Ambient Occlusion
Spore's art director calls this the "special sauce" of our aesthetic. The ambient occlusion map is generated at run time, post processed and baked into the diffuse texture of the asset.
128 shadows are collected from lights distributed uniformly on a sphere.
For buidlings and vehicles we distribute more lights in the upper hemisphere:
Baking
A key component of Spore is it's asset sharing functionality where players' creations can be easily "pollinated" across the web. Baking refers to the process of converting a compressed XML representation of a Spore asset into a fully textured, animated and optimized game model without interrupting game play. This includes a mesh simplification step, single compressed texture page generation with automatically generated UVs and ambient occlusion.
Here's a series of screenshots showing a splattered texture for a building:
Spore's Filter Chain system is a script-driven, real time, image processing toolset that is used to shape the final look of every frame rendered in the game. Here is a collection of fun effects generated with this system:
Andy Warhol Print for Spore Creatures (compress, threshold, colorize and tiled rendering)
Film Noir filter (threshold and mix in noise grain)
Oil Paint filter (image space lighting with 3 lights, use "strokes" normal map to distort the scene)
Crayon Outlines
Thresholding, distorted edges using noise texture, and noise grain
Paper Cut-out effect
Adding uneven white outline (edge detect + noisy distortion texture) to oilpaint effect. Inverted color.
After many iterations and approaches, I was able to develop a depth of field system for Spore that performed well on a wide variety of graphics hardware. I render the scene twice but split it into two parts in each render by offsetting the near and far planes of the viewer. The "far" scene is rendered into a texture, processed for atmospherics and blurring and composited with the "near" scene. The plane at which the split occurs is dynamically tuned based on camera height on the planet.
I wrote all the off-screen capture systems for Spore such as screenshots, thumbnails, super high res renders etc. One of the coolest captures in Spore is the Edit Capture. Every time a player makes or edits something in Spore, a 36 frame GIF summarizing their creative choices is automatically generated. Below are some examples. Our fans loved this system and made creative uses of it like re-enacting Pong and Tetris!
Another cool capture technology I added to Spore is a one button panorama capture tool. The panoramas can then be rendered in a Flash app I developed using Papervision 3D. Here's one such panorama:
This is a work in progress application that fits images and words pixel accurately into a word cloud. You can try the prototype here. Click to add words.
I pitched this project at Carnegie Mellon University with Kyle Gabler and Kyle Gray.
The idea was to have 1 person per game making 1 game per week and
build over 50 prototypes in a semester. BusinessWeek articleGamasutra whitepaperG4TV interview
My member page on the Experimental Gameplay website
IK Trees
This is probably the most beautiful thing I have made. It's a simple prototype where you grow a tree by winding each node around it's parent. Number of turns = number of branches that pop out. Built in 7 days in OpenGL/C++ Download IK Trees (exe)
On a Rainy Day
The IK trees prototype led to this game about building a tree of hands holding umbrellas that protects paper boats from the rain. This was one of the most popular games on the experimental gameplay website and is often referenced in articles and discussion about "art games". Built in 10 days in OpenGL/C++ Download On a Rainy Day (exe)post-mortem (doc)
Crowd
I built this game with Kyle Gabler at the Indie Game Jam 05. The theme was "people interacting". Built in 4 days in OpenGL/C++ Download Crowd (exe)
Springy Systems Editor
More of a fun little physics tool than a game. Features spring loaded metaballs and springy characters dancing to music using beat detection. Built in 15 days in OpenGL/C++
Real Time Graphics: Cg shaders Experiments in illumination, materials and visual effects using programmable shaders. Made with OpenGL and Nvidia's Cg shader language.
Spherical
Harmonic Lighting with specular term
Subdivision Surfaces Tool A subdivision surfaces tool with multiple resolution control mesh editing and sharpness features at per vertex, edge and face level. I extended the tool to make a creature breeding game that propagated sharpness/curvature traits through the lineage.