Jump to content

  • Log In with Google      Sign In   
  • Create Account






Procedural content generation and me

Posted by Ashaman73, 21 November 2012 · 1,632 views

I love procedural content generation, but I have to admit, that it is not as powerful as I once hoped. Procedural generation in games is quite old reaching back to the days of elite and rogue-like game. Today, atleast two decades later, processing power has increased incredible, but what about procedural generated content ?

When I was a child, I got the idea to write a tool to generate 16x16 , 4 color sprites by randomly generating pixel heaps, reviewing and rejecting sprites manually, which did not look good. The idea is basicly a procedural content generation tool, thought doing some basic math, it was not a very promising idea.

But it is a good comparision of the situation of procedural generation. Back then I would have seen images in randomly generated pixel heaps, much like your brain is able to see figures in clouds. But today we no longer have 16x16, 4 color sprites, we have artistically crafted, huge paintings. Even realistic rendering is really stylized, utilizing many tricks to communicate some important emotions and messages in just every possible detail, and here we are at the point where procedural content breaks.

You can compare it with reading a book and watching a movie. While reading a book you use your imagination to build a living world from some fix points, whereas while watching a movie you are confronted with a given vision, not really able to bring in your own imagination.
Now think about something in between book and movie. No idea, me too, I can't see how it should really work, and I'm not seeing how real procedural content should work in a modern game without abstracting the visualisation.

I have experimented with procedural level generation for more than 3 or 4 years in my game now. The major issue was, that it feels, well generated. I think, that people who play an abstract game (rogue-like or minecraft) stepped already over the suspend-of-disbelieve threshold, therefore accepting to live in a procedural world. But removing the abstraction puts the pattern of generated content in the foreground which results in breaking the suspend-of-disbelieve for many people. Much like the uncanny valley, we have the situation that the improvement of a single aspect (visual) change the awareness of the audience, suddenly seeing flaws in details (generated vs design content) which were not previously an issue.

So, I'm the only one having this trouble ? Besides terrain generation, what game should have procedural generated content and the options and budget to archieve it ? At least diablo 3 should have and indeed they have kind of procedural content in a huge, painterly world. But taking a closer look, you will see that they are only really plugging together template created by some artists, which must not be bad, but which is not really what I would have expected, or hoped for. But I'm sure that the people over at blizzard looked for a way to maximize the content generation while keeping an artistically and lovely art style and environment.

Procedural content, much like art, must be consistent with the rest of your game to work properly and the current state of procedural content generation was not able to keep up with the pace of visual content creation making it really hard to incoperate it in a modern (non-abstract) game.

Therefore my final thought is, that you should consider to utilize the human brain to make sense behind procedural, though abstract, content, instead of making procedures which are able to simulate the human brain to create artistically content. The first worked so far, the latter not.




Very interesting read. I have thoroughly enjoyed your last two posts. They have invoked much thought into my own projects and the purpose/goals i have attempted to strive for. keep it up.
The biggest hurdle I've run across in my procedural generation experiments is the simple fact that procedural generation is based upon rules, but the real world (especially the world built by people) is based upon exceptions. In procedural generation, exceptions equate to code bloat and vastly inflated generation times. Yet, to achieve a believable simulation, you have to include exceptions. People have a built-in bullshit detector about these things.

Take, for example, the architecture sections at the ProcWorld blog. He generates some pretty cool stuff procedurally. At first glance, it's pretty believable. However, the more you look at them, the more you feel like they're a bit too perfect. A bit too rigid. That's pretty much par for the course for procedural generation. In order to strip away that sense of rigidity, you have to build more layers, go deeper, construct more rulesets and exceptions and just keep digging.

I've sort of come around to a few ways of thinking.

1) If you want to make heavy use of procedural generation in your game, you need to inform the design process with this in mind and steer clear of any of the trickier gotchas. Cities, for example; if much of your game takes place in a city, procedural is going to be very hard to pull off. To make the city interesting, you need to build lots of exceptions, and these exceptions take a lot of time to develop and test. The more time you are willing to spend on edge cases and exceptions to the rules, the better your procedural scheme will be.

2) Outside of that, procedural generation is best used as part of the asset-creation process; as a means to an end, rather than an end in itself. Some tasks in creating a world practically scream for procedural generation. Plenty of studios use PG tools for things like quickly populating an area with terrain, quickly roughing-out a city or town, etc... Rather than hand-build every single terrain feature, house, shed, and cave, they'll build a PG template to start, then work from there.

3) PG is slow. The more exceptions you include, the slower it gets. Simple PG is easy and fast, but beyond the deep abstraction of a roguelike, simple just doesn't cut it anymore. This is another reason for my tendency to use PG primarily as an offline tool. The nested layers of complexity very quickly outpace the player's willingness to sit around and wait. As an example, look at Dwarf Fortress. (Although, to be honest, I haven't played DF in a couple years now, so it may be improved.) I once went through the process of generating a new world. It took something like half an hour, and included a lot of abortive attempts and failures. (This happens a lot in PG, too; topological requirements are hard to enforce in many PG schemes, so you either have to wire in some exceptions to bypass them, or iterate on the generator until a result passes a specific test. Otherwise, you might end up with a dungeon that has no down staircase, or a map where the player starts in a tiny, lush little green valley completely encircled by mountains, cut off from the rest of the world.)

I've built island, continental and planetary generators that have taken upwards of an hour or more to generate a result. They were highly elaborate, with lots of little exceptions and side-rules to avoid the whole "generated by Perlin noise" appearance that so many such projects take on. It's difficult to ask the player to endure that kind of time sink during play-time.
@Riuthamus:
Yes, it was meant as thought-provoking impulse, good to hear that you like it :D

The biggest hurdle I've run across in my procedural generation experiments is the simple fact that procedural generation is based upon rules, but the real world (especially the world built by people) is based upon exceptions. In procedural generation, exceptions equate to code bloat and vastly inflated generation times.

I've experienced the same, started with some clear rule-sets, expanding them over time and at a certain point I started to build in exceptions to meet my vision and here the whole system got really complex, because the first exception was just the start.

Take, for example, the architecture sections at the ProcWorld blog. He generates some pretty cool stuff procedurally. At first glance, it's pretty believable. However, the more you look at them, the more you feel like they're a bit too perfect. A bit too rigid. That's pretty much par for the course for procedural generation. In order to strip away that sense of rigidity, you have to build more layers, go deeper, construct more rulesets and exceptions and just keep digging.

I really like the great results of the ProcWorld blog, but as you said, it is technical and visual impressive, yet it is lifeless. At the moment it is much simpler to design certain content then to write a generator for it.

Plenty of studios use PG tools for things like quickly populating an area with terrain, quickly roughing-out a city or town, etc... Rather than hand-build every single terrain feature, house, shed, and cave, they'll build a PG template to start, then work from there.

Even this contains more design processes, and which is more important, the structures which are recognised by humans will be more or less designed. E.g. the shape of a forest, the strategical placement of a town or even just a defense tower, the roads, the lake which is an important story element, a mountain pass which needs to be overcome.

IMHO there are really only two aspects which are generated in games at the current state of art: randomized designed content and noise

As an example, look at Dwarf Fortress. (Although, to be honest, I haven't played DF in a couple years now, so it may be improved.)

I think that DF is the best PCG currently available in games. But I fear that DF PCG would never work in an non abstract world. E.g. the story generation lives from the overall game abstraction, it is not really a narrative, it is more like a log file, but the players imagine and tell great stories from this log. This is what I mean by my book-movie comparision.

The funny think about your DF example is, that indeed speed was one of the problems which lead to rethinking my whole generation approach. I want PCG in my game, but at the current state it needs around ~10 minutes to generate a level which can't, and this is the crux, pull it off. I needed to add too many exceptions to get even a basic plot in my level which would be ten minute work for a designer with an editor.
Interesting blog entry. The simplest form of procedural generation I've ever approached was probably terrain generation, populating and texturing. For example I've built simple rules, that took the heightmap height, normal etc features of a point to output for example the texturing and plants preference for that point. For example, points that had steep normals and/or high attitude, need to have more rocky texture because it was assumed that the rain and elements caused the soil to wash down. On areas like moist valeys, grass needs to be placed, grass do not grow on rocky steep slopes, sands etc. Trees avoid extreme places too, grow in groups forming forests, plants needs sun to thrive and other simple rules.
@solenoidz:
There's something wrong with your account. I can't vote you up or click on your account, though I can find it by using the member search tool. I've observed this in my last journal entry too. Try to contact a moderator or admin to check this.

Interesting blog entry. The simplest form of procedural generation I've ever approached was probably terrain generation, populating and texturing. For example I've built simple rules, that took the heightmap height, normal etc features of a point to output for example the texturing and plants preference for that point. For example, points that had steep normals and/or high attitude, need to have more rocky texture because it was assumed that the rain and elements caused the soil to wash down. On areas like moist valeys, grass needs to be placed, grass do not grow on rocky steep slopes, sands etc. Trees avoid extreme places too, grow in groups forming forests, plants needs sun to thrive and other simple rules.

That is what I call noise generation to fill up large parts of a level. This is a very important and common tool to help designing terrain, but it is just the tip of the iceberg, the complexity you need to drive PCG forward in your level from this point is nicely hidden beneath the surface.

August 2014 »

S M T W T F S
     12
3456789
10111213141516
17181920212223
242526272829 30
31      

Recent Entries

Recent Entries

PARTNERS