[In this reprinted #altdevblogaday-opinion piece, Namaste Entertainment CTO Phil Carlisle describes the content conundrum -- that content requires too much effort to produce -- and procedural methods that help alleviate the problem.]
There are plenty of problems with game development as a business. But one of the biggest ones is the problem of the cost of "content". Content is basically the assets used in the game, be it sound, character models, animation, textures, images, or whatever. Essentially, this is the "stuff" that makes it possible to realize your imagined game world.
Now the problem of content is a thorny one. Because many people would have you believe that so-called "AAA" development doesn't really have a constraint on content. But the reality is that content is a huge part of any game budget and as such it can hit hard on any development budget, be it AAA or indie.
So What Is The Problem?
In a nutshell, it takes too much effort to produce.
The overall quality of content has been rising ever since games first started being played. Moving from single colour blocks in Pong to sprites in Mario to fully realized 3D worlds in Gears the cost of producing all that content has been rising. Not to mention the skill and time to produce it has been growing also.
As an indie developer, I've often been very tightly constrained by my lack of ability to produce my own content. To the point where I've looked for alternatives. So I thought it might be useful to enumerate some of the alternatives in this post.
Now, let me get this point across before we start. I am NOT advocating that we can ever totally replace artist-created peices. What I am suggesting is that there has to be a smarter way to produce some types of content. Or at least streamlining the content production process so that we reduce the burden of both cost and effort.
Procedural Methods, A Potential Solution?
As others have talked about before. Procedural methods are a very good way of producing content. Not least because they generally have some designer feedback mechanisms to allow the artistic shaping of content, whilst also allowing the content producer to be vastly more productive.
Procedural methods seems to work best at producing content where there is some systemic structure to it. By this I mean that there are patterns of composition in the content that can be processed to produce variation. So, for a simple example, texture synthesis seems like a good choice, because textures have a mixture of varying frequencies and procedural methods are good at handling variations on a theme.
Whilst texture synthesis seems useful, it can also be augmented by use of procedural blending to allow for more variation. So, for instance, a perfectly normal sythetic texture can be aged by adding a procedurally generated "scratch map" texture to it. This layered approach is another key aspect of procedural methods. Adding layers of control into the content allows for variations in the mixing of those layers, again leading to more variation.
The point of most procedural tools is not to replace the artist, but rather to amplify their output. Or to allow rapid iteration on a basic theme in a way that allows artistic choice while handling much of the donkey work involved in the work itself.
Now of course, there are issues with entirely procedural methods. Mostly revolving around the problem of aesthetic quality (procedural methods are great where patterns and rules are involved, but no necasarily where artistic intent is involved) and of the "vision" of an artist being hampered by the synthesis tool. In effect, when you choose a procedural approach, you do give up some artistic direction because you are constrained by the algorithms represented in the tool.
Sometimes, though, it feels like that is a reasonable thing to give up to allow for more variety. At the very least, it is reasonable to allow for artistically inspired procedural content generation. A very good example of this approach is apparent in MMO's where they have character creation screens.†Have a look at some of the examples from this Youtube search.
Most of these character creators use relatively simple techniques. Adding artist created content in peices such that you can swap out individual elements and swap amongst a limited pallete of choices. The point is that if you think of the complexity of the approach versus the number of potential variations it is a very powerful value proposition.
But of course, you trade off entirely individualized characters for a more "template" based approach. In essence for all the combinatorial variation allowed, you are constrained within some limitations to allow for it. In a way, the potential spectrum of artistically created works is infinite. But the procedural approach limits you to the number of variations allowed by the underlying algorithms involved in the generation.
So, the common approach to character creation. Using the "template base character, plus variations on clothing and accessories/texture" based approach is reasonably common, but as you can see from the Spore crature creator, it isn't the only method you can use.
Another approach to the generation of humanoid characters, is to allow morph based variation and to allow the blend-space of the morph shapes.
You can have a look at this approach on the MakeHuman website, although this is not the only tool using this approach. Both FaceGen and Evolver also take this approach. It is a powerful technique because, again, the core of the content is based on artist created input meshes (in the form of morph targets). So, the quality of the result is based on the quality of the artists involved, rather than the underlying algorithms.
I once saw an internal tool at a certain game company here in the UK that was working on a football game. They had made a 3ds Max-based toolset for morph based generation of football players using morph meshes and morphed textures. The results were unbelievably impressive even compared to the commercial tools linked above. The approach is capable of making high-end and high quality content, if it is fed with high quality input meshes.
The most obvious area for procedural methods to be used, is in the generation of organic shapes/textures/deformations where nature has essentially played the part of the algorithms in shaping the natural world. So, for instance, grass only growing on relatively flat ground is a great rule that can then be duplicated as a procedural parameter in a generation step.
One area I have been hoping would see more development is in the area of procedural animation. Specifically, things like automated rigging and procedural animation of walk and idle cycles would be very nice. I have noticed that 3ds Max now has a procedural walk cycle generation within its CAT rigging system. However, that is still relatively rudimentary.
There are approaches to procedural animation that involve procedurally generating footsteps and then making a character move along with those footsteps using some kind of forward search and/or with ik based solvers to actually plant the feet. But I'm more interested in actually generating the motion in an artistic sense than actually procedurally generating it in the game right now.
If I get time soon, I'll check out some of the procedural animation toolsets and post them. But I think thats enough to be going on with for now!!
Thanks for reading.
[This piece was reprinted from #AltDevBlogADay, a shared blog initiative started by @mike_acton devoted to giving game developers of all disciplines a place to motivate each other to write regularly about their personal game development passions.]