I am a CTO at a startup company called Namaste Entertainment, where we are working on an AI driven, user generated online story world toolset called StoryBricks. While I am a programmer by trade, I often spend most of my time thinking of game design, psychology, animation and aesthetics. So you can expect a degree of diversity in my blog posts.
Posts by Phil Carlisle
  1. Have you done your 10,000 hours? ( Counting comments... )
  2. The content conundrum ( Counting comments... )
  3. The side effects of programming ( Counting comments... )
  4. animation and games part two ( Counting comments... )
  5. Debugging an AI Server ( Counting comments... )
  6. The value of education ( Counting comments... )
  7. Animation and games part one ( Counting comments... )
  8. What does game design research tell us? ( Counting comments... )
  9. Work in a startup ( Counting comments... )
  10. Psychology and Game AI ( Counting comments... )
  11. Back to first principles ( Counting comments... )
  12. The future is procedural ( Counting comments... )
  13. Why we need more scientific study of games design ( Counting comments... )
  14. Deconstructing a city ( Counting comments... )
Technology/ Code / Visual Arts /

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.

There is a list of texture synthesis tools here

procedural texture

Texture procedurally generated with Mapzone

A good example of a texture synthesis tool (Mapzone) can be had for free.

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.

[youtube=http://www.youtube.com/watch?v=FQLSZCiSmC0]

You can have much hilarity with procedural methods too

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.

Makehuman example

Makehuman example

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 footaball game. They had made a 3dsmax 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.

Here is a nice list of terrain texture generation applications. As you can see, there is quite a lot of choice in terms of terrain and vegetation generators.

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 3dsMax now has a procedural walk cycle generation within its CAT rigging system. However that is still relatively rudimentary.

[vimeo 2360652]

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 here. But I think thats enough to be going on with for now!!

Thanks for reading.