It’s text, but NSFW text. Procedural Paint-Job Generator.
This idea came to me in the wee hours of the morning. I got out of bed, coded all morning, and went back to sleep after publishing it.
I’ve been creating a vocabulary to describe the body paint at the Fremont Solstice Parade for a while. I planned to use that in some sort of database-driven visualization for Solstice Parade photos, somewhat like Atlanta Fashion Police. I still plan to do that, but this project goes the other way. Instead of describing an existing paint-job with the vocabulary, I use the vocabulary to create a description of a hypothetical paint-job. The plausibility of the paint-jobs varies, but that’s part of the charm.I used Kate Compton’s Tracery to generate the descriptions. I started by adding all the words I could think of, grouped logically into colors, color modifiers, patterns, animals, vehicles, and so on. Then I built phrases that combined those elements, built the phrases into clauses, and then into sentences. It can suggest individual paint-jobs as well as groups, and pluralizing complex phrases is tricky! The following sentences have identical meanings, but must be modified differently to be pluralized.
- green and bright yellow giraffe
- green giraffe with bright yellow spots
Putting an “S” at the end of the phrase doesn’t always work. There are also things that are always plural, like “roller skates”.
- You get your roller skates.
- You get your bicycle.
- You rent roller skates for your team.
- You rent bicycles for your team.
English is tricky!
Whenever the generator recommends a pattern, it may recommend two patterns instead. Those two could also recommend two more, so there’s no guarantee the recursion ever ends. Browsers have a lot of memory, text doesn’t take much memory, and it’s funny to get a big paragraph recommending 20 different patterns in a single paint-job, so I leave it in.
The paint-jobs produced by this generator are by turns absurd, practical, amusing, and shocking. What more could a procgen system strive for?