Procedural Content Generation

From the {{bubbling|broiling} lava of a {monster|dragon|beast}'s lair|mossy growth on a {discarded|dishevelled|cracked} stone idol|{scaly|flaking} {orange |}rust on the {iron |}bars of a prison|rough-hewn stone-floor of a {|despot's }{castle|dungeon}}, to the {ancient |weathered |}{{layout|blue prints|map} of a {bustling|busy|crowded} {inn|tavern|village|market}|twisted {corridors|pathways} of a {labyrinthine |}{cave system|series of catacombs}}, to the {complex|rich|sophisticated|intricate} {religion|caste-system|magic-system|technology landscape|demographics} of a {sprawling|pan-galactic} {empire|civilization|society}, Procedural Content Generation is a {key|crucial|vital} part of {all |many |}modern{ fantasy| sci-fi and fantasy|} {games|{digital |}works of art|{digital |}creations|games (and movies!)}.

There's a{n entire|} wiki devoted to the art of Procedural Content Generation. {Of course there is{!|.}|And why wouldn't there be?} Creating {such wikis|wikis like that} is what the internet {is all about.|was built to do!}

From the {tiniest|smallest} {detail|scale} to the {{largest|grandest} scale|{largest|grandest|broadest} concept}, here's an overview of "Things You Might {Wish To |}Generate..."

Things You Might Generate

As well as character-related elements:

  • Monsters.
  • Robots/aliens/villains/gelfs etc.
  • Character sheets (for a Role-Playing-Game)
  • Crowds{ and traffic|}.
  • Names (gender/culture/era/etc.)({optionally |}including {generated|fictionalised|synthetic} categories of gender/culture/era etc)
  • {Religions|{Superstitious|Occult} belief systems|magic-systems}
  • Calendars
  • Demographics
  • Languages (including {scripts|fonts|runes|symbology})
  • Technologically advanced weaponry

Pretty much any {element|component} of a game can be {generated|synthesized}{, and any portion of a generated {element|component} can be {seeded|fixed|pre-determined|pre-conceived}.|.}

A {wealth|plethora|vast tangle} of algorithms are {utilised|employed} when {generating|synthesizing} {(and rendering) |}content. They are sometimes categorized into: those techniques which {simulate|mimic} {real-world|natural} processes... and those that don't. (And when you {ponder|consider} the differing scales of the things to be generated, you quickly realise that fractal methods will {{need to |sometimes| }be employed|make an inevitable appearance}{!|.})

And at the heart of everything is the concept of Randomness. Incorporating randomness into the act of creation is known as Aleatoricism and is connected to the surrealist concept of automatism.

Where To Begin!?

The best introduction to procedural content generation comes from the first thing mentioned, and {that|the thing} which is smallest{ in scale|}: texture synthesis.


Texture is the primary way that games convey a "feel", {a "mood"|an "atmosphere"} and, perhaps most important of all, {a sense of |}"{authenticity|realism|grit}." By learning how various textures are {created|generated|synthesized}, you cover a {significant amount|large percent} of the algorithms used at all other scales.

Ken Perlin discusses Perlin Noise and Improved Noise reference implementation

Awesome Video

This is Kate Compton giving a lightning fast rundown of PCG techniques. It's one of the few tech videos that you don't need to speed up to 1.5 or 2 times.

And the accompanying article: So you want to build a generator…

See Also


{{Significant p|Minor p|P}ortions|{Significant s|Minor s|S}{ections|egments}|{At least some|Several|Many|Key|Crucial|The most {intriguing|riveting|captivating}} {portions|sections|segments}} of this {{{well|poorly}-{liked|regarded|trafficked|read}}|p{altry|ithy}|fun|engaging|oft-cited|} {article|page|tale} are {progra|auto|eni|auto|mathe}ma{t|g}ically {re-|}{spun|generated|generated|rendered|engineered} with {the {staggering|miracle|intriguing} power of |}spintax. Re{load|fresh} {the {browser|page|article} |}for a{ different| unique|n altered| re-spun| re-imagined| re-defining| re-defined} {experience|encounter} {{{each|every|each {&|and} every} time}|{on {each|every|each {&|and} every} {{re-|}{read{ing|}|visit}}}}.