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."

5 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 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.

  2. 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 elFarto+the+2nd · · Score: 4, Informative

      The guys at Introversion are already trying this:

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

    2. 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...