Map generation in the in-development Skytorn.




Gfycat

Procedural generation has practical applications, not just aesthetic ones. Often, a computer will need an index for something important, so it can be referenced and found again. These could just be completely random strings, but humans are notoriously bad at remembering noisy data like that. Humans are really good at pattern recognition, though, so a very complex set of information can be represented by a compact procedurally-generated alias.

Gfycat needs to name billions of GIFs, so it generates a string by adding two adjectives in front of an animal name. While the names don’t have much to do with the content (except in amusing accidents) they are easy to remember and type.

There’s been quite a bit of research into making interfaces for hash values via procedurally generated, human-comprehensible representations. Images, words, and other representations are easier for humans to use than random numbers. 



Audio is an often overlooked part of experiencing a virtual space. And, as Proteus highlights, it often incorporates more generative elements than the visuals, with the various sound cues combining in different ways as you travel through the space.

The degree with which generative methods are used can vary greatly, from simple sound cues positioned in space to complex mixes that build an aural picture of the environment. Getting deeper, the sound effects can be altered, starting with doppler shifts. And at the extreme end, sounds can be synthesized from scratch, via sine waves or white noise.

The video above, from Matthew Florianz ’s portfolio, shows some of the audio design created by the team on Elite: Dangerous. The dynamic environment ambiences combine to create a subtle, ever-changing layer of background sounds that reacts to the player’s current environment. 







Generative Methods (2013)

The primary argument of this paper presented at the PCG in Games Workshop 2013 by Kate Compton, Joseph Osborn, and Michael Mateas is that “Procedural Content Generation” is a somewhat misleading term. They propose that academic research instead should use the term “Generative Methods” to match the way that other fields talk about generative art. 

I don’t disagree: the name of the blog doesn’t have “content” anywhere near it, and I go out of my way to talk about generative stuff that might not fit whatever strict label of PCG there might be. Don’t limit your vision of what you can use for inputs and outputs. Better art comes through absorbing lots of influences: things from related fields, ideas from nature, inspirations from philosophy. While the exact name doesn’t matter as much from a popular perspective, researchers should be aware of the vocabulary. (And you should use “generative” as a search term too.) 

“Generative Methods” didn’t quite catch on as a name: the sixth workshop, held this past June, was still called PCG 2015.

More importantly, the paper proposes a model for how generative methods work in general: a set of inputs that feed into a generator, which proposes an artifact. The artifact might be used as-is, evaluated by a critic, or fed into yet another generator as input. This is a useful way to think about generators as you are designing them.

Lastly, the paper has a brief look at generative systems and what they have in common. Some of these things we’ve talked about before, but I find the list of issues illuminating: granularity, expressive range, adaptive features, and hard and soft failures probably deserve more discussion.

http://www.fdg2013.org/program/workshops/papers/PCG2013/pcg2013_6.pdf




Overtone, Clojure and Minecraft

Overtone is an open-source audio environment for programmable music. Clojure is a Lisp-family programming language that runs on the Java Virtual Machine. Minecraft is a game that you are probably aware of that also runs on the JVM. Integrate them together, and you get this.

This video by Joseph Wick is an example of live coding, where the musician-programmer enters code to produce music and visual effects. Here, Minecraft is used as the visualizer. You can see how changes to the code show up instantly in the game, synced to the music.

You can read more about how this was done here: http://blog.josephwilk.net/clojure/overtone-driving-minecraft.html






In Dialogue (2013)

Alice’s Adventures in the Whale & Through the Prejudice Glass

Here are two generated novels created through the conceptually simple technique of swapping the dialogue between two separate texts. Having tried it before, I can report that implementing this can be tricker than it sounds. Parsing the text correctly is the first step. But you also have the problem of how to decide which bit of dialogue goes where. 

The results, in this case, are eerily effective. No doubt part of this speaks to the enduring enchantment of Lewis Carroll’s absurdist mathematical repurposing of common subjects, but much of the credit goes to Leonard Richardson’s script making just the right substitution. When the Red Queen starts discussing Wickham, or The King of Hearts compares the Cheshire Cat to Moby Dick, it seems to fit. 

The source code is provided, so you can make your own textual mashups. Oliver Twist on Treasure Island? Julius Caesar in War and Peace?

https://github.com/leonardr/In-Dialogue/




Darius Kazemi of the many bots, who also started NaNoGenMo, did a live coding session the other day. Want to see the process of building a new project, step by step? Complete with serendipitous artistic discoveries!









MirrorMoon EP

Take your spaceship and explore a procedurally generated galaxy as you name the planets that you explore and unravel the mystery they lead to. No, it’s not No Man’s Sky: This is MirrorMoon EP, the game of procedurally generated puzzles and exploration.

With an interface that’s deliberately an unexplained puzzle, MirrorMoon EP can be tricky to learn. But after you’ve finished enough of the tutorial on Side A, you’ll unlock your ship’s controls and gain access to the rest of the season’s galaxy on Side B.

Each planet you explore is a Myst-ish puzzle, incorporating the device you carry with you and the enigmatic mirror moons of the title. Some puzzles are short, with the sliced-egg-goal-thing unlocking easily, while others are more complex. Solve a planet’s puzzle, and you get to name it. Each season of the game has a larger puzzle pointing to a mysterious anomaly, but you’ll have to figure that one out for yourself…




“There must be order”

A talk by Mario Klingemann at Eyeo 2015. It’s focused on the concept of order, which you might think is an odd topic for a generative artist. Isn’t order the exact opposite of the chaotic randomness that powers procedural generation?

But maybe not if you’ve been paying attention: a theme I’ve tried to emphasize these past few months is that procedural generation shouldn’t just be random chaos: it needs a degree of order to give us humans something to latch on to.




L-Systems

Invented by Aristid Lindenmayer, L-Systems started as a way to classify plants, but they have a long history in procedural generation. A L-System is basically a grammar: it follows a set of rules to replace symbols in the initial string, and then repeats the operation on those symbols.

L-Systems are less chaotic than some of the other popular procedural generation techniques. Substituting other symbols or rules creates different results, making it relatively easy to modify in a controlled way.

While turning the output of an L-System into a generated plant is an obvious use, that’s not the only possible output. L-Systems have been used to generate dungeons, describe growth patterns, and design buildings.

Here’s a handy explanation of how to use an L-System (with code!):

http://blog.rabidgremlin.com/2014/12/09/procedural-content-generation-l-systems/
https://github.com/rabidgremlin/Procedural-Generation-Examples