This Person Does Not Exist

None of these people exist. They were entirely dreamed by a generative adversarial neural network–in this case, StyleGAN, which has been having great success. I mean, a couple years back, generated faces were blurry and fuzzy, and a few years before that this kind of thing was impossible. Now they’re detailed and expected.

While there’s still a lot of work that can be done to make these more convincing if you’re an expert at spotting the tell-tale signs, I’m guessing that the next series of interesting innovations will be along other perpendicular dimensions: adding motion, being able to control individual aspects of the generator, making it able to integrate with other parts of an art pipeline, and so on.

As it stands, the images aren’t much use for feeding into other systems. They look pretty convincing, but right now they don’t have the kind of metadata or parameters that other generators would need. For example, you can’t put them on 3D models without a lot of work, to the point where it’d be easier to just paint the textures from scratch. Likewise, they only have the final pixel output, and would probably need a lot more training data to separate specular and diffuse properties. 

Still, there’s a lot of information buried in the data already: there’s an ongoing project to attempt to label the latent space. It also links to this explanation of StyleGAN, which has quite a lot of details about how the whole thing works under the hood and why.

https://thispersondoesnoteist.com/






WaveFunctionCollapse and You

I recently put together a zine explaining how WaveFunctionCollapse works. It’s a very high level overview, so you’ll probably need a little more information to actually implement it, but I think the explanation has helped people understand it a bit better.

The basic metaphor for how the observation and propagation work is that each tile in your input image is a puzzle piece. (The first tricky step: figuring out which pieces can fit together.) You stack a complete set of possible puzzle pieces on each square on a chess board. Then you pick a square and toss out all pieces from these except one. Now the neighboring cells have pieces that can’t possibly fit with the remaining piece, so go through those and toss them out. (Second tricky step: this is tedious unless you’ve got a computer to do the number crunching.)

If you’d like a more in-depth look at how WFC is implemented, I’d recommend reading the paper I co-wrote about WFC, or browsing the many examples found on @ExUtumno’s GitHub page.

https://isaackarth.com/files/WaveFunctionCollapseAndYou.pdf




Generative.fm 

Generative music walks a delicate balance due to human sensitivity to music: the generated result is always linear (because music only operates through time) and must respect harmonization between elements in ways that other art doesn’t have to. A text generator can make nonsense and a visual generator can be clashing, but a music generator can cause pain with the wrong combination of notes.

This site is a collection of generative music pieces by Alex Bainter, with each piece coded as a separate generator. It’s mostly ambient music, more because Alex was influenced by Brian Eno than for any technical reason.

https://generative.fm/



That’s going to be tricky in vanilla Tracery, to the point that I’d suggest stepping outside of Tracery. If you’re running Tracery via JavaScript, for example, I’d personally add a JavaScript function to reverse the words in the generated string (fairly easy with most string libraries) and then feed it back into Tracery.

The bigger principle here is that a single generator doesn’t need to do everything. Often it’s better to have a generator that is almost what you want and then add a post-processing step to clean it up. A recent example I saw was a archipelago generator that made really nice islands, but scattered too many small extra islands in deep water. But those tiny anomalies are easy to detect and filter out, so rather than fixing the generator I advised that the best way to handle it was to fix it in post.

If you want to do it in pure Tracery (e.g. for running on Cheap Bots Done Quick) I think you could do a complicated hack with the syntax for pushing values. Tracery has the concept of modifiers, so you could probably also implement a modifier that reverses a string or something like that.



I use a very expansive definition of procedural generation around here. As such, I’m perfectly comfortable calling things like that AI tools.

AI has a definitional problem, in that once an AI problem is solved we often stop calling it AI. So simple name generators are, in my mind, perfectly reasonable to call AI tools. They’re a tool that uses AI to help you do something.

I feel like a lot of times when people ask about “AI” they’re picturing something like the robots in R.U.R. or the various computer characters in films and television. Sometimes people use terms like “Artificial General Intelligence” or “Strong AI” or “Real AI” to distinguish an-AI-as-a-person-level-intellect from the AI-as-just-a-bunch-of-math. I don’t find this particularly useful, given that we don’t have anything like that at the moment, and that even passing the Turing test is of limited utility (for both us as humans and the machine in itself).

The AI scholar Max Kreminski has been talking about the idea of xenopomorphism: rejecting both anthropomorphic & purely mechanistic ways of looking at AI. AI as companion species and household gods, rather than superhuman beings or calculators.

Humans are tool-using. While name generators are not terribly computationally intensive, they are still a tool that gives humans an ability that we wouldn’t have without it: Humans are really, really bad at randomization. Anything that prompts us to move out of our rut is useful as a creative tool. There’s a long history of authors and artists using various devices to help put them in a certain mood or to inspire ideas.

You can always make a better name generator, depending on what your goal is, but even a basic name generator can be a useful procedural generation tool.




Anyball - In Development Trailer

One aspect of procedural generation that I don’t think games use often enough generating rules and mechanics. We’ve got lots of examples of generating dungeons, landscapes, and other physical things. But for more abstract things there are way fewer things to point to.

Which is one reason why the in-development Anyball caught my attention: the players will never know the rules of the game starting out because they’re newly generated each game. I really like that aspect of procedural generation–discovery is always a fun way to use procgen techniques.

You can take discovery too far, of course: a short amount of experience with Eleusis will quickly demonstrate that humans are quite bad at figuring out complex secret rules without the affordances to guide them through the discovery process. The trick for procedural generation is that the things we generate need to have enough structure for people to anticipate what might be generated and how it relates to the rest of the world.

Fortunately for Anyball, sports equipment comes with quite a lot of affordances built in. There are both physical affordances–balls can roll when kicked–and cultural affordances–we expect that the numbers on a scoreboard will go up when we do something good. It’s a good foundation for building a generator.

https://www.anyball.info/




A Procedurally Generated Christmas Song 

By Bedford Level Experiment, which is a band who frequently do interesting things with Commodore 64s, Shakespeare, and the occasional song with procedurally generated lyrics. Like this one!



Art Description Generator

The Infinite Artwork Simulator is a tongue-in-cheek artwork description generator. It currently pulls data from Schor’s titular essay, Andrea Liu’s “Top Ten Words I Am Sick of Seeing on Artists Statements,” and descriptions of artwork and artists from the 2017 Whitney Biennial. More text sources will be added in the future.

Need an artists statement for your ProcJam project? Why not try this one that was sent to me! Well, really it’s an article by Monica Uszerowicz about Isabel Kim’s Infinite Artwork Simulator, which in turn is a response to Mira Schor.

The Infinite Artwork Simulator is a good example of generation as critique, as well as a pretty legit part of the larger art work conversations about how art is presented.



Because I am a mysterious entity who knows what shadows lurk in the hearts of procedural generators.

Mostly it is because I just never got around to putting up an about page. My original plan wasn’t to make this about me, after all. But now that I’ve made one I put a few details there for people who would like to know more.



That is really cool to hear!