Uh oh, there’s that word. “Procedural”.
For those who didn’t follow the game fanatically in the months up to it’s release, procedural was one of the words used by Will Wright to describe Spore in the early prototypes. As a result of that innocent usage, it developed something of a buzzword hype around it and grew a semi-independant life of it’s own. Unfortunately, once Spore was released and the inevitable backlash began, Procedural fell out with it’s partner, turned to drugs and alcohol and ultimately ended up joining a cult and sacrificing the local high-school kids to Satan. True story.
Once you strip away all the correlations, though, all it means is ‘automatic’. It’s just a way of saying we wrote a procedure in code to do something, rather than doing it manually. In this case, applying texture coordinates.
Texturing is something you’d normally do in 3ds max (or any other 3d editing software), because it gives you a variety of useful tools to do so. It’s possible to use the tools in max to customise and tailure exactly how textures are applied to your models, which is how other games can apply a 2d image to something as complex as a character model, for example. That’s how we were applying textures to body parts in 0.4.0 and 0.5.0.
Unfortunately, after accepting the models we feed into the game from 3ds max, Species proceeds to stretch and scale them according to the creatures genes. This in turn stretches and scales the textures, resulting in some rather strange visual artefacts. (Note: though it’s not an official term, a certain subset of programmers use “artefact” to refer specifically to visual errors in games, and “artifact” for all the other definitions. It’s totally not a typo I swear).
I had originally planned to do this in 0.7.0, but the website being down for so long meant I ran out of smaller tweaks and fixes* to implement, so it looks like we’re gonna get procedural texturing as a bonus feature in 0.6.0.
The method I’m using is called tri-planar texturing. The idea is to apply the texture from three planes, picking which one depending on the orientation of the surface. It’s a system more commonly used for terrain texturing, and I’ve had to adapt it a bit to apply it to an animated model (we don’t want it to be affected by stretching, but we do want it to be affected by rotation and translation), but it works well. I’ve often wished 3ds max had a triplanar shader in it…
Of course, there’s always a downside. Tri-planar texturing requires a consistant, tiled texture, which means we need to remake all the older textures, which weren’t tiled. Anything that involves remaking an entire category of files is a lot of work. It’s been easier than expected though: setting up a photoshop macro’s and using the automatic healing brush (WHAT SORCERY IS THIS?!) made tiling the images almost rediculously easy.
This is still just a stepping stone for 0.7.0 though: ultimately, I plan to make all the current placeholder body covers redundant and start over. This will be a good step not just for appearance, but also for functionality: I’m sure you’ve all noticed that skin type can change drastically in a single mutation. This is because it has no sensible mutation map: any body cover can mutate in a single step to any other body cover. In fact, the current body-covering system is one of the most placeholdery things in a game filled with placeholders (we don’t even note body cover in the creature details!), and implementing a proper mutation map and a variety of extra body covering types should vastly improve that side of things.
I plan to go quite a bit further with the texturing than just tri-planing their skin: this is just a first step. I’d tell you about the other plans, but well… “spoilers”. 😀
*footnote: Speaking of fixes, you know that crash that sometimes happens when you’re importing and exporting creatures? I found it. It only happens on export when you’re in “Ecosystem mode”, so until 0.6.0 comes out just make sure you do all your exporting from Creature Mode (when you’re in creature mode the UI looks blueish, rather than green (ecosystem) or red (species)).
Release Date: Assuming we get the website back this week, Species 0.6.0 will be released to everyone on the 17th June.
Wait, should I have made that have been more dramatic? Dammit.