🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

Procedural Content Genration (Devs please share your thoughts)

Started by
12 comments, last by Geri 6 years, 6 months ago

This is for a dissertation im working on  regarding procedural generation directed towards indie Developers so if you're an indie dev please feel free to share your thoughts :)

  1. Does run-time procedural generation limit the designer's freedom and flexibility?
  2. if( Have you ever implemented procedural generation ==true){ talk about  some of the useful algorithms used}  else {explain why you haven't}
  3. Do you think indie Devs are taking advantage of the benefits provided by procedural generation?
  4. What are some of the games that inspired you to take up procedural content generation?
  5. If there is anyway i can see your work regarding proc gen please mention the link ( cz i need actual indie developers to make a valid point in my dissertation)

Thank You So Much

Advertisement

Are you asking only about procedural content used IN the game, or do you include procedural generation as a part of the game creation process? Because even games that have static (ie, not generated at run-time) worlds frequently make use of procedural stuff during the creation phases. For example, using algorithms to generate a large chunk of terrain, then using editing tools to make modifications such as building placement, spawn locations, etc.... The procedurals allow the designer to quickly rough-in large areas, rather than forcing them to hand-create every mountain and ridge and valley. Algorithms also allow for more advanced realism, ie an erosion pass on a generated terrain, then using splines to locate roads and rivers and trails. Stuff like that (realistic terrain) is quite difficult to hand-model, but quite easy to model using algorithms as a starting point.

I've got a terrain editor in the works that allows to do just that kind of thing. Rapidly generate a terrain from various functions, erode and perform various editing and texturing tasks, place some roads or rivers using splines, then export height and texture blend maps. You can very quickly (ie, in just a few minutes) rough-out a large map. (An example.)

As far generation techniques go, I've experimented a bit with some of it and have written about various things over the years in my blog, including generating rock and dirt textures using particle system scattering in Blender, generating a side-scroller level using 3D blocks,  generating Minecraft-like block worlds, generating mountain tiles for a 2D game, creating textures from noise functions (more), procedural islands, and so on, and so on. Some of the stuff I've played with have been in-game techniques, but most of it has been for offline content creation stuff.

Other techniques I've used include noise functions (quite extensive), tile-based stuff, Wang tiles, architectural grammars, space colonization for procedural trees, meta-tiles (where the 'tile' is a large piece, such as an entire dungeon room, complete with contents), drunkard's walk, labyrinth generation, and many more.

Personally, I see procedural generation as a critical part of the game design process, even if only during content creation. With a comprehensive set of rules, you can generate levels for simple puzzle games all the way up to entire open worlds populated with fleshed-out NPCs and monsters.

22 hours ago, @Teejay_Cherian said:

What are your thoughts on the contribution of procedural content generation in the field of game design? Does Proc Generation limit the design aspect of the game?

It is a essential tool.

It does in fact limit design and content, a better designed system can get around these limits but end up consuming more time to make than doing things by hand.

Art is the one place where procedural content is most limiting.

22 hours ago, @Teejay_Cherian said:
  • if( Have you ever implemented procedural generation ==true){ talk about  some of the useful algorithms used}  else {explain why you haven't}
  • Do you think indie Devs are taking advantage of the benefits provided by procedural generation?

This can be answered at the same time. All developers everywhere uses procedural content in some way, unless they only hard code.

All games have some part of it that was made procedurally, even if it was just the names of loot items or a function that creates crass object to populate a map.

Procedural games are just the ones that use procedural content as a focus of game play.

 

I use procedural generators all the time to create swarm enemies. These will select a material instance, weapons, armor and AI; stitching all the parts together to spawn enemy variants.

22 hours ago, @Teejay_Cherian said:

What are some of the games that inspired you to take up procedural content generation?

None. It was a part of learning how to make games, creating large worlds by hand takes too much time.

22 hours ago, @Teejay_Cherian said:

If there is anyway i can see your work regarding proc gen please mention the link

If you want I can attach a image showing how procedural content is used in modern engines. It will just take some time as I would have to make it all and am a bit busy at the moment.

Engines like Unreal are full of procedural tools.

1 hour ago, JTippetts said:

Are you asking only about procedural content used IN the game, or do you include procedural generation as a part of the game creation process?

I was referring to procedural generation as part of the game creation process ....something like the game Spelunky.

Ive Seen your work and im in awe....the dirt and rock textures, that awesome terrain editor and the "voxel" environment are insane......could you refer or name some of the study material that helped you  understand and implement procedural work?

Its easy to do a lunar landscape, julia, perlin simplex, diamond square whatever. The hard part is dealing with water. If the terrain is not self aware (ie a super map that spans entire continents) then how do you know if the river is going downhill all the way to the sea? The pic is my current work is a compromise with a swizzled Julia template and simplex style hills (I need the skate park look because I use a VR hoverboard). I deal with rivers by having everything at ground zero, flat earth. The below UAV height map is generated by compute as the camera moves around. Splat maps and content are also generated. In reality its not linear scale like that but the further out the further apart the points are (torus grid). 

image.png.48529f72d1ae88bcd676878b6e3b1ec0.png

I've done height map with overhangs by the way, there's no rule that says you cant displace non vertically you just need to deal with collisions.

Beyond just pure height map generation, its really more about content generation. Who cares about miles and miles of the same stuff. We want roads and towns etc. How do you path roads? What type of content can you randomly generate? 

I generate roads after the fact and do road works following a pathing algorithm that tries to not go up or down. Notice the contradiction here because I just said I don't do that for water but rivers can go for unknown distances and don't make sense if they die out or hit a dead end. Doesn't matter with roads, just put something there.

All I have at the moment are points of interest, I don't actually create villages yet just the roadworks to them so that's as much as I can say.

 

 

 

18 hours ago, @Teejay_Cherian said:

I was referring to procedural generation as part of the game creation process ....something like the game Spelunky.

Ive Seen your work and im in awe....the dirt and rock textures, that awesome terrain editor and the "voxel" environment are insane......could you refer or name some of the study material that helped you  understand and implement procedural work?

Mostly just a lot of googling. I 'got started' by playing various roguelikes back in the day, then at some point I purchased the book Texturing and Modeling: A Procedural Approach and that got me started on using noise functions. After that, it was all just various experimentation and some internet googling.

I think it is a great tool for laying down a starting point that you like to then hand-design from there.  I think attempting to make a game where everything is procedural generated is a mistake.  The technology is not there yet, and you wind up with something that the human brain perceives as "wrong, empty, and repetitive".  Someday in the future a game that procedural generates its world, even on the fly as new areas are encountered, will work and work well.  But that day is still a long way away.

For now it remains a useful tool to "throw some paint on the wall" to save the development team a lot of time.  But without that then being re-arranged, re-organized, and added too by a human mind... you wind up with No Man's Sky.

 

"I wish that I could live it all again."

9 hours ago, Kavik Kang said:

For now it remains a useful tool to "throw some paint on the wall" to save the development team a lot of time.  But without that then being re-arranged, re-organized, and added too by a human mind... you wind up with No Man's Sky.

No Man's Sky's Technical foundation is nothing short of amazing but the game literally has nothing in it.....18 Quintilian barren planets ...but at the same time games like "the binding of isaac" and spelunky seemed to have hit the spot.

On 30.11.2017 at 5:31 AM, @Teejay_Cherian said:

What are your thoughts on the contribution of procedural content generation in the field of game design? Does Proc Generation limit the design aspect of the game?

Maybe you should not ask that question in such a broad context - sounds a bit unprofessional to me.

Using porcedural content or not is a decision of game design, so any limitations / possibilities will be considered along that. It may be a fundamental decision (No Mans Sky would be impossible without), or a unimportant decision about details (Do we use Speedtree or do we model plants by hand).

Only in the gray area in between your question makes sense, e.g. Asassins Creed: Do we use procedural cities, or do we model each building like GTA? But in this case the answer is more related to available resources than to game design.

On 30.11.2017 at 5:31 AM, @Teejay_Cherian said:

if( Have you ever implemented procedural generation ==true){ talk about  some of the useful algorithms used}  else {explain why you haven't}

I used procedural levels for a mobile action puzzle game, think of Zuma  / Breakout /Match 3. I used perlin noise / worley noise etc. to control which types of bricks appear how often and in what patterns. The goal was to have levels that are unique each time you play, but overall they still feel the same in diffulicty and appearence. This was more work than hand made levels. Finally i did not feel limited about level design which still was a creative process. Everything worked good for that type of game. (I think Spelunky is very similar in how it uses proc. gen, but i never played it)

On 30.11.2017 at 5:31 AM, @Teejay_Cherian said:

Do you think indie Devs are taking advantage of the benefits provided by procedural generation?

Yes. I also think most devs constantly have that idea of procedural worlds in their heads and lots of them do some research when possible. But they are also aware that huge boring worlds are not interesting, so we do not (or at least we should not) notice where procedurals have being used when playing the game.

There are however infinite applications from procedural textures, geometry, levels, bahaviour up to whole worlds. It's an interesting and fun area and the only alternative to real world data to keep up with increasing level of detail in games.

1. While procedural generation is powerful, and I am personally a huge fan, it often leads to feature creep in a bad way. The less that is understood about the implementation in detail, the more likely you are to encounter unforeseen problems which increases development time. The problem with implementing effective procedural generation at run-time is that in order for a realistic result you have to approximate the infinite possibilities of reality. In other words, repetition and predictability are often the pitfalls of procedural generation (with some exceptions, i.e random seeds) and counter-acting them sometimes requires more processing power than is available. Basically, procedural generation is a double-edged sword for indie devs. By leveraging a small amount of static assets and creating a lot of content, it can help developers create things not otherwise possible as a small or solo team. The added complexity of the implementation, however, presents certain risks all by itself and tends to lead to undefined scopes for the project.

2. In my experience the most useful procedural generation concept for anything remotely complex is Perlin Noise or its more modern variations like Simplex Noise and Wavelet Noise. Essentially Perlin Noise works on the principle of creating random gradients instead of purely random values. So, in the case of 2D noise, when creating a random sample you get the smooth transitions between extremes instead of a result that looks like static. This is commonly used in terrain generation for heightmaps that produce rolling hills. Since it's so smooth though, layers of Perlin Noise are used on top of one another to create small bumps and ridges in the overall landscape to reduce repetition (a process sometimes called fractal noise). In the case of terrain this often still looks unnatural and is best supplemented with something like the Diamond-Square algorithm, a variation on midpoint displacement where points are randomly raised and lowered by a reduced range while increasing resolution. Terrain isn't the only thing that can be made with noise of course, pretty much anything that has an unnatural-looking gradient can be supplemented with random noise to break up the change. Although procedural generation with a semi-random number generator of some kind is common, it doesn't necessarily have to use one. Procedural mesh generation can be used to create 3d geometry on the fly according to a particular algorithm. For example, creating a firing arc to display the path a projectile will take or a simple ring used for a selection circle.

3. Depends on what kind of procedural generation you mean. Like JTippets pointed out so well, content generation uses quite a bit of procedural generation. Whether indie devs realize they're using it or not, almost all of them are probably using it at some point in the creation process. Photoshop now has so many algorithms to apply filters and transformations it's amazing, Substance Designer and Filter Forge are pretty much designed around procedural generation for textures, and 3D modeling apps use complex algorithms to do a variety of things like boolean operations, decimation, and beveling just to name a few. If you mean run-time procedural generation, I'd refer you to my assertion that it is a double-edged sword and while they may be missing out on some of the pros they're also avoiding the cons. Also, not every project is ideal for procedural generation, sometimes it hurts more than it helps.

4. This is a tough one since there are a lot of games that use procedural generation but I think the biggest impact on me personally has been the Civilization games. I have lost track of the amount of time I've spent playing the beginning of a game and exploring the new terrain. Even after I got bored with actually making a civilization, the fact that the terrain was new and interesting every time made me keep coming back. That idea, the ability to have an infinite amount of content to explore, is both the greatest promise and biggest pitfall of procedural generation. While I think that it is unquestionably the way of the future, I don't think it's there yet, not by a long shot. While a lot of the dreams people have for random generation are unreachable now, that isn't to say they won't be as hardware and software improvements continue to stream in.

5. Most of the work and research I've done on procedural generation has been for small prototypes that I never published. I did make a procedural island generator for this game but I ended up just using static geometry for a set amount of islands instead. Although in that game I did use procedural generation for the firing arc and the docking ring.

This topic is closed to new replies.

Advertisement