Hey Pierre, thanks for the share. I think procedural generation is pretty well known in gamedev and most programmers have dabbled in it during their time making games.
Maybe its just me, but I would prefer to hear more about where or how you use the techniques! (Just an explanation about what they are and a few links don't excite me that much :) )
Are you using L-systems to create the branching monster legs in that pick? Are you using any cool technique for terrain generation in the first picture?
L-systems are probably over-kill, was just wondering how you did it :)
Sweet! I'm pretty familiar with voxel's and marching cubes, marching cubes still seems to be really good for fast mesh reconstruction (not precision). I've looked at marching tetrahedra and a few of the modificaitons of that too. I'll go research the dual contouring method! I'm actually writing a literature investigation on mesh reconstruction methods for my thesis so this helps :)
Have you looked at Dreamworks's OpenVDB? I've been using it in the research for my masters, they have a really awesome voxel datastructure and fast mesh reconstruction method. I want to try make a Unity wrapper for it sometime (it's a c++ library).
Edit: oh! Another question, how are you doing your texturing for the mesh you create with marching cubes? Most importantly I want to find out how you are parametrizing the mesh.
The computer is designed to generate endless variation, and when we try to do that ourselves, we are likely to be wasting our time, and wasting the machine's potential.
Yes, this is a fundamental truth that I think many people have yet to catch onto. It's the same principle behind good tooling (several areas of which could also be called PCG).
Per my question, I was referring to the hard limits you face when running something like this to its full potential. For example, I'm writing a procedural RTS/RPG and the hardest part of the early process is balancing efficiency of data structures when you need to do the following, in a timely fashion, for *many* units / agents:
...Every part really needs to operate efficiently off the fundamental parameters / data structures. Everything needs to be able read / write / send / receive those values in an efficient and timely fashion. So this is crucial to the entire experience being possible. IME this requires a good deal of forethought and prototyping and you are still likely to spend time balancing these well into late production. The problem is that the cost of changing the way your terrain is subdivided (for instance) at a later stage is no mean feat. And that's exactly what this balancing entails: changing fundamentals.
If you look into the higher end, funded voxel engine development, one of the most costly areas to research and get performant has, I believe, been realistic & performant collision detection and response in a complex atomic world.
I think other than playing with voxel demos, there isn't (?) a lot of local interest in the sorts of possibilities for PCG in terms of social, historical, dynamic narrative etc. I'd love to be proven wrong but I'm not seeing much of it so far.
I use procedural generation all the time. Of course DD uses a bunch of different generation systems for our dungeons, but I've also messed with min-max plot point trees, randomly coloured images that behave like vector spaces for AI state changes, polygon-based random spaceship generation recipes and loads of smaller/weirder prototypes.
I generally don't build terrains, but I did some height-map + mesh stuff years ago for a client so I missed the "everybody's building voxel terrains" thing. Generally for prototypes you want a game system that can handle some pretty rough random inputs and turn those into fun interactions, that might be why you're not seeing the "complex" systems you'd consider "proper" PCG?
Generally for prototypes you want a game system that can handle some pretty rough random inputs and turn those into fun interactions, that might be why you're not seeing the "complex" systems you'd consider "proper" PCG?
I'm not seeing the relationship between these three things, @dislekcia. Could you restate? EDIT: I think what you mean is adapting your gameplay mechanisms such that the outputs of your random generation algorithms are "within usable/playable limits" (the converse being adapting your generation algorithms to suit gameplay limits). But not sure what relationship this has to seeing "proper PCG".
As for "proper PCG"... let's not even go there. That's an extensive grey area. Suffice to say that some things are clearly and evidently procedurally generated in the "modern" sense, whereas stuff like roguelikes clearly always have been but don't see the same recognition for it as the newer techniques, particularly in the 3D space, where people immediately see a screenshot and go "oh right, that's procedural stuff".
Comments
Maybe its just me, but I would prefer to hear more about where or how you use the techniques!
(Just an explanation about what they are and a few links don't excite me that much :) )
Are you using L-systems to create the branching monster legs in that pick?
Are you using any cool technique for terrain generation in the first picture?
http://pcgbook.com/
And this wiki page has some pretty interesting discussions on techniques:
http://pcg.wikidot.com/
This non-free textbook is pretty great too. It's kinda old school, but it covers a broad range of techniques.
http://www.amazon.com/Texturing-Modeling-Third-Edition-Procedural/dp/1558608486
Sweet! I'm pretty familiar with voxel's and marching cubes, marching cubes still seems to be really good for fast mesh reconstruction (not precision). I've looked at marching tetrahedra and a few of the modificaitons of that too. I'll go research the dual contouring method! I'm actually writing a literature investigation on mesh reconstruction methods for my thesis so this helps :)
Have you looked at Dreamworks's OpenVDB? I've been using it in the research for my masters, they have a really awesome voxel datastructure and fast mesh reconstruction method. I want to try make a Unity wrapper for it sometime (it's a c++ library).
Edit: oh! Another question, how are you doing your texturing for the mesh you create with marching cubes? Most importantly I want to find out how you are parametrizing the mesh.
What are your thoughts on adapting these structures (including the underlying data) for gameplay logic?
Per my question, I was referring to the hard limits you face when running something like this to its full potential. For example, I'm writing a procedural RTS/RPG and the hardest part of the early process is balancing efficiency of data structures when you need to do the following, in a timely fashion, for *many* units / agents:
-collision detection
-pathfinding
-network sync
-rendering
...Every part really needs to operate efficiently off the fundamental parameters / data structures. Everything needs to be able read / write / send / receive those values in an efficient and timely fashion. So this is crucial to the entire experience being possible. IME this requires a good deal of forethought and prototyping and you are still likely to spend time balancing these well into late production. The problem is that the cost of changing the way your terrain is subdivided (for instance) at a later stage is no mean feat. And that's exactly what this balancing entails: changing fundamentals.
If you look into the higher end, funded voxel engine development, one of the most costly areas to research and get performant has, I believe, been realistic & performant collision detection and response in a complex atomic world.
I think other than playing with voxel demos, there isn't (?) a lot of local interest in the sorts of possibilities for PCG in terms of social, historical, dynamic narrative etc. I'd love to be proven wrong but I'm not seeing much of it so far.
I generally don't build terrains, but I did some height-map + mesh stuff years ago for a client so I missed the "everybody's building voxel terrains" thing. Generally for prototypes you want a game system that can handle some pretty rough random inputs and turn those into fun interactions, that might be why you're not seeing the "complex" systems you'd consider "proper" PCG?
As for "proper PCG"... let's not even go there. That's an extensive grey area. Suffice to say that some things are clearly and evidently procedurally generated in the "modern" sense, whereas stuff like roguelikes clearly always have been but don't see the same recognition for it as the newer techniques, particularly in the 3D space, where people immediately see a screenshot and go "oh right, that's procedural stuff".