With the leaps of technological advancements seen in computer science its only natural that we assume that softwares on its own can produce something of value. This has been true main in the fields of natural processing, AI etc. The idea is simple “Put the rules down, randomize and stabilize other stuff”.
This post is an attempt to understand how we can use the power of the procedure in game development.
What is procedural?
Procedure/ function are blocks of code nothing more. Say you write a small piece of code to place a coin at a random location thats procedural level design. The power of procedure is easily seen when you sprinkle in a decent amount of randomness. This generates unique and new environments. The most important things to keep in mind with procedural things is that its not complete randomness. To illustrate this lets consider this example , weavesilk lets you draw outright stunning images. Try to close your eyes and draw few curves once on weavesilk and once on your paint tool. Notice the difference what makes and breaks a procedural generation is the rules that are put in, other part of randomness can be indeed random. Because weavesilk has rules to mirror image and adds a nice distorted effect when the movement is slow etc etc we get such a nice little piece of work.
What can be procedurally generated?
I consider two important things.
From the layout of the level, placement of npcs/powers, even things like dynamic powers and buffs almost everything can be procedurally done, but its very important to not over do it. The standard rules to be followed are
Is it feasible? anything the code emits out should still enable the game to complete/make progress. A random maze level without a route is not getting us anywhere(not just literally).
Is it interesting? whats the point of mechanic/element if that just doesn’t seem interesting.
Is it within bounds? while a procedurally generated level albeit feasible can be a stupid choice in the initial levels, ensuring that difficult stays within the limit is very important.
My favourite procedural generated works (Sorry haven’t played many rogue games, my apologies for missing any classics)
Binding of Isaac: The game features an insane number of powerups, cards etc all on which are procedurally obtained. Add to this even enemies and dungeon layout is random too.
Rogue Legacy: After each death you play as ‘your’ heir, with a random powerup and random disorder, this makes for a hilarious and unique experience each time.
As a programmer procedural art is a God send, I am just started reading up about it, so please consider this section with a bucket of salt.
Backgrounds, Menu Screens etc make excellent candidates as these while important aren’t the core of the game, hence can be easily experimented with.
Nature anything from trees, waves, sand, space etc can be made to feel natural with the power of the procedure.
A few tools I have seen online which can be used for procedural/generative art are
- Processing – has a good tutorial directed at non programmers and seems nice
- Context free Art – A vectorish approach. A few samples from their site
A stunning game in progress, almost everything about is procedurally done and its astonishing how good the game looks.
Surprisingly I haven’t personally seen or rather heard of many procedural sounds in games. But I am sure many artists use them extensively, it would be really cool if procedural level generation and sound are mixed. Something like a rayman game where each tile plays a note, so when running you here the dynamic sound.
I wanted to just introduce my thoughts on the subject, please recommend your favourite example or tools. What do you think about procedural design, what do you like about it? and what not?