Slashdot Mirror


The Importance of Procedural Content Generation In Games

Gamasutra reports on a talk by Far Cry 2 developer Dominic Guay in which he discussed why procedural content generation is becoming more and more important as games get bigger and more complex. He also talks about some of the related difficulties, such as the amount of work required for the tools and the times when it's hard to retain control of the art direction. Quoting: "Initially, the team created a procedural sky rendering approach based on algorithms — which led to a totally unconvincing skybox that was clearly inferior to what a hand-authored skybox would be. 'We considered it to be a total failure,' he said. He explained that a great deal of focus must be put on the tools that surround the algorithms, to allow the systems to be properly harnessed. In the end, the game shipped with a revamped procedural sky system that ended up much more effective than the first attempt."

13 of 160 comments (clear)

  1. Absolutely by Mad+Merlin · · Score: 5, Interesting

    If you've never made a game yourself, you'd be amazed at how much work it is to create content. Speaking as someone who has made a game (see Game! - The Witty Online RPG), I'll tell you it's way way more work to create content than it is to create game engines or anything else code related. Try looking at the credits for most any game created in the last 10 years and you'll probably find at least 5 content creators (artist, story editor, copy writer, map/model creator, etc) for every 1 programmer, if not more.

    So, absolutely, procedural content generation is a huge boon if you do it correctly, much like the "social" aspect of Web 2.0 was a boon for the web, when done correctly. Of course, it's also tricky to do correctly, very few games are there at the moment, and it'll probably take awhile until we have lots of good examples.

    1. Re:Absolutely by RuBLed · · Score: 3, Funny

      Of course, it's also tricky to do correctly, very few games are there at the moment, and it'll probably take awhile until we have lots of good examples.

      Sorry, this might take a bit longer, I'm still working on that Procedural Game Generator. (but I think EA beat me to it)

    2. Re:Absolutely by blahplusplus · · Score: 4, Insightful

      "If you've never made a game yourself, you'd be amazed at how much work it is to create content."

      And it's so much work because of the art, animation and effects, lets face this fact. Back in the 8-bit days the amount of work required was a lot but managable, you could put a lot more content into a 2D game in a lot less time then you can in a modern 3D rendered game in which the resolution is much higher and the more artists and designers you need just to get the most basic and mundane things done that existed in the 2D area. The same content in 2D that was easy, takes infinitely more time in the 3rd dimension just to get anywhere near the artistic quality of a good team of 2D artists. But this is something companies brought on themselves with their technolust, as we've seen with MegaMan 9 there are still people out there that like games for more then just their looks.

    3. Re:Absolutely by jonaskoelker · · Score: 3, Interesting

      If you've never made a game yourself, you'd be amazed at how much work it is to create content.

      Oh yes!

      In two or three working nights*, you can go from no OpenGL programming experience to having a working, near-complete version of tetris [and you could probably get the scoring and acceleration in there if you had coded things the right way in your first try].

      *Unless you wait 15-30 minutes for your computer to boot and shutdown ;)

      But blocks each in a single color, against a black background and some dark gray well walls... nuh-uh. You need a background texture, you need textures for all the pieces. You need to consider having multiple background textures---with and without drop hints, and with different kinds of drop hints.

      If you want wells of more than one size, you need a background texture, plus some way of generating drop hint textures from some abstract description and sprites combined to form the real well texture. And maybe a nice low-alpha image of the current block at its fast-dropped position.

      I'm doing this in 3d. Really it's 2d, but with a slightly tilted view so one can see the undersides of the blocks. Should the undersides have different textures? How should the camera control work--fixed, auto or manual? Do I need to make special overside textures as well? If you want to turn it into a tetrinet client, you need special textures (maybe overlaid textures) to indicate all the special weapon blocks.

      And I need to consider what the background of the menu should be... some sort of demo mode, perhaps? Tetris Holding LLC has a sound trademark on using the song Korobeiniki in a video game. Should I find copyright-expired versions of some of the other songs used as background music for tetris? Should I record some myself? Should I cop out and just run ~/.mytetris/{pre,host}hook from a wrapper script, such that the user can easily load tetris.m3u, but on their own and not as a part of the game?

      And that's just for frigging tetris, one of the simplest games imaginable.

    4. Re:Absolutely by Cornelius+the+Great · · Score: 3, Interesting

      While many artists are paid less than programmers, you typically have to hire a lot more of them. And they require more expensive tools than your average developer, like Maya, 3dsmax, Photoshop (sounds cheap, but the master collection can cost $2500), not to mention expensive plugins for the aforementioned products. Where I used to work, each artist would have an up-to-date license for each of the above (I think the figure was about $12,000 of software, not including the PC itself). Software engineers are happy with Visual Studio Pro (or comparable IDE) and the occasional profiling tool. Plus modeling, texturing, and animating highly-detailed models takes a lot of time (= even more money).

      Trust me, art is expensive.

      A good procedural system has tweakable values and seeds, and near-instant results (great for prototyping) so an artist won't spend several days or weeks developing a snazzy model only to see their hard work on the cutting room floor.

      For professional games, art is much more expensive than code.

      /ex-game developer

      --
      Sigs are for losers
  2. Re:Quantity Vs Quality by Anonymous Coward · · Score: 3, Interesting

    the vegetation is oblivion is procedurally generated:
    http://www.barrys-rigs-n-reviews.com/reviews/2007/hardware/ev88gtx/images/game/oblivion01.jpg

    Also, introversion is working on something: http://www.youtube.com/watch?v=yI5YOFR1Wus

  3. Re:Procedural? by Anonymous Coward · · Score: 3, Informative

    Yes, the actual term is "procedural", as in procedural textures and procedural content generation.

    No, this is not a discussion of procedural programming vs object oriented vs functional, etc.

  4. Re:Spell it out for me please by Alwin+Henseler · · Score: 3, Interesting

    ... they generate buildings and clumps of grass and trees? And the textures on dirt have random mess on them to make less uniform and more believable? Something like that? (..) Are there screenshots of this?

    Just for kicks: a nice example came out of the demoscene a few years back: kkrieger

    I'd call it a 'proof of concept' 3D shooter. Nothing challenging, just a few levels you can easily walk through. Nothing exceptional on the graphics side. Runs on Windows like so many games.

    But: a true HW-accelerated 3D shooter. Has enemies that jump / try to hurt you if you let 'em. A few big spaces to walk around in and admire the artwork on the walls. And all of this packed in an amazing 97,280 bytes! Hell, each screenshot on that site is already half that!

  5. Fractal Generation by mcrbids · · Score: 5, Interesting

    Ever look at a city from the sky? No, not some 707 that jumps to 30,000 feet in a matter of seconds, but in a small plane? Google Earth is an approximation - but you lose the depth of everything, and all you see is rooftops. Go up in a small plane at 2000 feet above a medium-sized city (100,000 and up) or bigger. As a private pilot, I get plenty of chances to do so.

    One of the things that never ceases to surprise me is just how... fractal most cities are. Houses are lined up in neat rows along streets that are usually either straight or follow some landmark, EG: a river. Most towns (in California) have an older "downtown" that is always a grid with closely packed, multi-story buildings, alongside an "uptown" that widely spread out, grid-shaped buildings with large parking lots, surrounded by the "burbs", older homes on wide, grid-shaped streets and newer homes on windy, curved streets that tend to roughly follow landmarks. New cities (built in the last 50 years or so) don't have a "downtown", just an "uptown", but they all have an uptown.

    Freeways mostly go between the downtown/uptown areas, and then spread out in a roughly bicycle-wheel shape, towards the nearest large community. Like I said, it's not a great substitute, but ste here's a stereotype California city.

    I don't know, but these basic development patterns hold true down to the very substance of the buildings themselves... Older buildings use lots of brick or wood, newer buildings tend to be stucco and wood-based plywood paneling. Larger new buildings tend to be steel and concrete, larger old buildings tend to be... brick.

    If you created a pattern based on the age of the parts of town, and then applied a fractal pattern based on age, you could probably come up with an extremely realistic-looking city with very little effort. Automatically, with roads that make sense (EG: don't lead nowhere) and houses that look like real neighborhoods, etc.

    Combined with a bit of a "noise factor" and the results would likely be indistinguishable from a real city. Heck, you might not even need to save the actual city - if the results are generated by a fractal math function, you'd just need to store a seed, an integer or somesuch so that the city can be auto-generated on demand.

    --
    I have no problem with your religion until you decide it's reason to deprive others of the truth.
    1. Re:Fractal Generation by blahplusplus · · Score: 3, Interesting

      I hear what you're saying we'll get to heavily auto-generated content sooner or later with simply advancements in math, science and technology.

      Your post reminds me of midtown madness...

      http://www.microsoft.com/games/midtown/default.htm
      http://www.microsoft.com/games/midtown/screens/feb99/bacon0033.jpg

      Midtown madness had a large play area and you could drive around and do whatever you wanted but it quickly got boring, we will still need developers to tune the experience and the content. I imagine autogenerated content will not be enough, there will always be tuning required and always the need for artists and animators for art direction, and such like.

      But just generating content for contents sake today is not what is going to make a game, you have to have interesting things to do and interesting characters that inhabit them. There is one thing that makes game memorable are hitting all the notes, some games get it all right (god of war comes to mind) but most others get a few right (mainly visuals) and everything else barely passable.

      I can only imagine how long it took to tune the game mechanics in a game like god of war, the settings, the camera angles, etc. It's not merely content generation, it's the experience that the developers create for the gamers themselves. Why should a gamer care about game x/y/z? what's the hook? whats the draw?

      The thing I loved about 8-bit games was that developers had to find the fun and expression of meaning within constraints and not depend on merely flash to sell games.

    2. Re:Fractal Generation by elFarto+the+2nd · · Score: 4, Informative

      The guys at Introversion are already trying this:

      http://uk.youtube.com/watch?v=_zluTvROHXA

    3. Re:Fractal Generation by wisty · · Score: 4, Funny

      Automatic plot content? Let me help.

      def generate_mmorpg_quest():
              from random import choice as c

              Compliment = c(['brave','noble','1337'])
              PC = c(['warrior','chevalier','hunk'])
              McGuffin = c(['baby','necklace','iPhone'])
              Lost = c(['stolen','dropped','forgotten'])
              Arena = c(['cave','forest','library'])
              Reward = c(['baby','necklace','iPhone'].remove(McGuffin))
              Enemy = c(['orcs','terrorists','street mimes'])

              Dialogue = """Oh, %s %s. My %s has been
      %s was %s in the %s! If you can bring it back
      safely, I fill grant you this %s. Be careful,
      I fear there may be %s!"""%(Compliment,PC,
      McGuffin,Lost,Arena,Reward,Enemy)

              return Dialogue

      Real programmers will insist that a domain specific language gets used, so the interpreter can abstract the context handling, but it's good enough for the first version...

                       

  6. Re:Quantity Vs Quality by TheRaven64 · · Score: 3, Interesting

    It's generally a three stage process. You have something like a perlin noise function as input. Then you have a mapping function, which turns it in to something in your problem space, then you have a weighting function, which makes some things more likely than others (often the mapping and weighting functions are combined).

    The hard bit to get right is the weighting function. A perlin noise function and a mapping function will give you a universe, randomly selected from the set of all possible universes. Making universes which look good and are fun to play in more likely to appear is the tricky bit. This requires a lot of fine tuning. Often it's just a matter of tweaking a few constants when you have the basic algorithm implemented, but it can be really time-consuming to do.

    --
    I am TheRaven on Soylent News