Instant Spooling
Using procedural level generation as a way of accelerating spooling is great, but it can swiftly lead to another limited system resource: memory. If we're building the geometry in memory, then we're limited by how much memory we can reserve for geometry. In many cases, the available memory can hold far fewer polygons than the GPU can process.
The solution to this resource issue is not to use memory at all; instead, we generate the geometry in real time and feed it directly to the GPU. Theoretically, this method lets programmers fully utilize the polygon-pushing power of the GPU, while freeing up system memory for other things, such as materials or additional artist-generated geometry.
One way of generating polygons in real time is to perform dynamic tessellation, in which surface polygons are subdivided into smaller polygons, interpolating across surface normals to maintain the curve of the surface.
A better looking result can be achieved if the model is stored as higher order surfaces, such as NURBs, which can be tessellated in real time. Real-time tessellation can be dynamically varied depending on view distance, and so can be used as a very effective real-time level of detail (LOD) generator.
Dynamic tessellation can be used to enhance procedural geometry. In my tree-generating sample code, I can dynamically alter the number of polygons that make up the trunk and branches based on camera distance.
Real-time LOD is another great advantage of real-time procedural model generation. Instead of storing discrete models for several levels of detail, the procedural model generator simply generates a model to a sufficient level of complexity based on camera distance and current viewable scene complexity.
You can also code for a fractional LOD transition, where the LOD is given a floating point value, and smoothly transitions from one stage to another.

Figure 2: A forest of real-time procedural trees with continuous LOD generation.
In the tree sample, the LOD is defined by the branching depth. If this were done at the integer level, the user would notice distinct pops as the LOD moved from one stage to the next. However, by scaling the terminal branches by the fractional part of the LOD, the geometry of the tree can smoothly and simply morph from one stage to the next, providing a continuous increase in LOD that is almost imperceptible.
Figure 2 shows a variety of procedural trees being generated in real time, with the trees in the distance having lower LOD. As you move through this scene, the LOD transitions are very smooth, an effect that would be impossible to achieve without real-time procedural geometry generation.
Generated Conclusions
Procedurally generated content has the potential to support huge and unbelievably detailed worlds. It can be used to significantly augment traditionally spooled static level geometry to more fully utilize disc spooling bandwidth. Effective use of procedural content may require a new set of tools and working practices, which may take some developers a while to acquire.
The difficulty in creating swathes of content by hand, and the imbalance in spooling speed and polygon pushing power, has made the utilization of procedural content an almost unavoidable necessity. The good news is it's a lot of fun to code!
References
Sample code available at www.gdmag.com
Bulkley, Brad. "Edge of the World," Game Developer, June/July 2006.
Dapper, Tim. "Practical Procedural Modeling of Plants," University of
Bremen.www.td-grafik.de/artic/talk20030122/overview.html
Wikipedia: Procedural Generation
http://en.wikipedia.org/wiki/Procedural_generation
Stokes, Jon Hannibal. "Inside the Xbox 360, Part I: Procedural synthesis
and dynamic worlds," Ars Technica, May 24, 2005.
http://arstechnica.com/articles/paedia/cpu/xbox360-1.ars/3
[EDITOR'S NOTE: This article was independently published by Gamasutra's editors, since it was deemed of value to
the community. Its publishing has been made possible by Intel, as a platform and vendor-agnostic part of Intel's Visual Computing microsite.]
|
Artists often use real-world assets (photos, high detail models, motion captures) as a base for their work, and this is much harder with procedural methods. Until procedural systems make a quantum leap in quality, they restrict artists to create what they can with the algorithm rather than what they want with a general purpose tool.
That said, yeah if your game's art direction fits with the current state of the art in procedural generation, the benefits can be huge.
The best example of course being RoboBlitz. If the game had used a natural, organic setting the procedural content would have looked horrible. But the system they used worked great for the artificial/metallic/robotic elements in the game.
http://mrl.nyu.edu/~perlin/facedemo/
Or play krrieger and watch .debris!
I expect this will have quality about equal to modern games, but using about half as much bandwidth.
When looking at procedural animations from Natural Motion, procedural buildings generation or procedural textures from the folks at Allegorithmic, you realize that procedural content nowadays can look as good as hand made assets by mixing maths and physics with artistic inputs and control over these algorithms.
Of course, procedural content is not the answer to everything (yet), but with development budgets getting higher and higher, it can help in many ways without sacrificing the global quality or the artistic vision.