Originally posted at procgen.wordpress.com
In
this post I discuss the pros and cons of using procedural generation
(ProcGen). This type of analysis is a good way for you to understand
when you should use it and it varies depending on what you want to do.
Some case examples in my previous post here.
The
root cause for some of these arguments in favor or against might be the
same. Here are a few of the most common pro and con arguments:
([+] for pro, [-] for con, [+/-] for depends)
- [+/-] Efficiency: How
fast we can design our scenes? Whether ProcGen is more efficient than
manual content sculpting, really depends on what you are doing. If you
want to model a single 3D building, for instance, then maybe ProcGen
might not be as efficient as the manual method. On the other hand, if
you are to create 10, 50 or 100 buildings for a city then you could
reconsider. In short, ProcGen can have a larger overhead than manual
modelling but after you “break even” timewise, ProcGen can become
infinitely more efficient.
- [+/-] Cost: How much
time and money does it take to create? When it comes to the cost of
using manual vs ProcGen, efficiency plays a big role when you consider
the saying “time is money”. Another factor that influences cost is
whether you create your own ProcGen system or use existing solutions
such as SpeedTree, Houdini or Sceelix (shameless plug). Although you need to pay for the licenses, it may compensate the time your team saves.
- [-] Control: The ease
to define certain designs and properties. When you want to create
content with total control and specific details your best bet is to
create the content manually. For your time, wallet and sanity’s sake.
- [+] Monotony free: If
you have to create 100 3D buildings by hand, that can be a very
tiresome and repetitive job. This is a point commonly made by game
designers in favor of ProcGen.
- [+] Scalability: The ease to create small scenes as well as large.
Once you determine the properties and parameters of the content you
want to generate procedurally (which generates the overhead previously
mentioned), the time it takes a PC to generate any amount of content
depends solely on the limitations of the PC. Basically, from making 10
building to 100 can be a matter of seconds.
- [+] Compression: As you may remember from the high ProcGen purity game from my previous post,
a whole 3D first-person shooter level fit into a 96kb executable
because all its content (3D meshes, textures, sounds) were generated
procedurally. When the game loaded up it used up over 300mb of RAM.
- [+] Paranoia: Is this
tree distribution random enough? Or the number of branches and
sub-branches for that matter? Aaahhh… ProcGen can give you more peace of
mind in that sense, if you feed truly random seeds to a properly
bounded system. Testing is always important specially if generation is
at runtime.
- [+] Consistency: The
guarantee that elements follow the same style and working principles.
Almost in the opposite side of the spectrum from the previous point: Do
these trees look like they’re from different planets? If you have a well
rounded ProcGen system or tool specification, you can better guarantee
greater consistency between content of the same type than if you did
them manually. If you don’t, it can be a problem. Again, testing is
important.
- [+] Reusability: Being
able to make the most out of your work. Some ProcGen systems have a
high reusability factor. Changing a few parameters could generate a
whole new set of content. This also brings value you should consider, if
you decide to create one. The more you can reuse it, the better the
investment is of creating or specifying one.
- [+/-] Manageability: The ease of controlling the resulting output.
If you are talking about creating large quantities of content, ProcGen
can give you centralized control over the overall result. If you are
dealing with small quantities, manual creation will give you more
control. Some ProcGen tools also give you more control by giving you
visual languages (normally node-based) with parameterization.
- [+] Adaptability: change to obey the rules you defined in your system.
If you make a building double its original height, then the number of
floors could automatically double. If the ProcGen system you use is well
developed, you may change one of its parameters and the resulting
output will adapt to meet the constraints you have in place.
These are the broad strokes. There are also some general
considerations you should have when you use procedural generation, but
that I’ll leave for my next post.
If you remember more arguments beyond the ones I mentioned, or have any feedback, let me know
—
Subscribe to this blog here: eepurl.com/bSgft9
Join and Invite others to the slack on ProcGen! procgen.slack.com sign up:bit.ly/procgenregistration
Join and invite others to the facebook group on ProcGen! bit.ly/procgenfb
My twitter account: twitter.com/grillher