GeistHaus
log in · sign up

Procedural Generation

Part of tumblr.com

Everything generative and procedural

stories
The end of Twitter bots
twitter botsbotsperiodic pictures of cute animals are a vital servicetumblr botfortunately tumblr bots still existbotsin.space
oh, huh, guess that's the end for CBDQ! https://t.co/QZ3Sb1hvIv

— v buckenham (@v21) February 2, 2023ALT

View on Twitter

Twitter is removing the free API access, which will have the inevitable consequence of driving most twitter bots into extinction.

I’ve written a fair bit about art bots over the years, since they’re one of the more accessible generative art forms (and therefore one of the most creative and prolific).

Here’s a talk by Kate Compton on the poetics of bots, which will have to stand in as an eulogy for now.

One bot use that I think I’ll particularly miss is the use of bots as periodic chimes. Having something that marks the passage of time is a frequent part of the human experience; before clocks we had periodic chants and rituals that marked the hours of the day or the changing of the seasons. Big Ben chiming hourly, reminders that the weekend has started, and so on.

Other bots generated moths or tiny gardens, or painted like Bob Ross, or just posted pictures of cute animals.

Some bots performed practical services, like generating a feed of new arXiv papers or emergency service notifications. Some of those will survive, if whoever is running them deems it worth paying for the API access, but most of the delightful little bots that make people happy will be going away. And on social media, that’s an important part of the experience for many people.

Many bots have migrated over to Mastodon, of course. The CBDQ equivalent is cheapbotstootsweet.com and many bots live on a bots-only server at botsin.space.

I think I’ll let @infinite_scream have the last word:

AAAAAAAAAAAAAAAAH

— scream is on mastodon: @botsin.space/@scream (@infinite_scream) February 2, 2023ALT

View on Twitter

https://procedural-generation.tumblr.com/post/708160396876562432
Extensions
Li'l Taffer
thiefli'l tafferprocgemprocjamdavid pittmanlevel generationbuilding generation7dfpsprocjam 2022

Li'l Taffer by David Lindsey Pittman

I have a taxonomy I use to determine which games made the biggest impression on me. The highest category is “games which I have incorporated into my dreams” and it is fairly rare that a game gets added to that list. One of the first games on that list is Thief: The Dark Project, and if you’re going to tell me that you made a Thief-inspired stealth game with procedurally-generated levels that will of course catch my attention.

Thus when David Lindsey Pittman’s 7DayFPS/ProcJam game crossed my path, Li'l Taffer caught my attention.

It definitely captures the vibe of Thief, though the procedurally-generated levels made me think about how much of the original game is about learning the layout of buildings and how architecture works. So while the levels do have the feel of some of the more surreal Thief maps, they lack the hand-placed coherency that the original game relied on.

There’s ways Li'l Taffer could have mitigated this. There’s already some logic to the way that some rooms are constructed (libraries and bathrooms and the like) but I think a generative project needs to go harder on signaling to the player what is going on. We can’t rely on the presence of a human sensibility in the level designer, so that sensibility needs to be encoded into the level generator in a very visible way. Or, it could have gone the other direction, and played up the surreal nature of the levels. They are, after all, designed by an alien intelligence intruding into our dimension (i.e. an AI level designer).

In the event, the rules of Li'l Taffer as a game make bad situations recoverable, using the Thief approach to dealing with partial failure margins and applying it to generated content, similar to the shovel in Crypt of the Necrodancer. Which is a good reminder that the fixes for weaknesses in your generator don’t necessarily need to be in the generator itself. In this case, the gameplay is about recovering from the difficult situations the level generator throws at you.

But ultimately, I was just happy it gave me the occasion to revisit Thief.

https://procedural-generation.tumblr.com/post/706709933448626176
Extensions
Murdle
murdlemurder mysteryprocgenprocedural generation

While I was procrastinating on my slide deck for my ICIDS presentation on Umineko and story volumes, I happened across a link to Murdle: a daily generated murder mystery.

The murder mysteries are more in the Clue/Cluedo style, rather than being presented as murder mystery novels. There’s a long, long history of attempts to make interactive murder mysteries, including a group effort in 1931 by the famous murder mystery writers of the Detection Club to write a murder mystery exquisite corpse style, a subscription box of ‘feelies’ that predated Infocom, and Italo Calvino’s Anticombinatorics.

The description of how Murdle works is, alas, light on the details at the moment, beyond saying that:

These puzzles are generated by MORIARTY, a proprietary algorithm capable of planning a 1,000,000 murders a minute.

I have my guesses as to how it works: if I was building it, I would have used constraint satisfaction, though I suspect you could make a decent attempt at it with a grammar or a procedure like Calvino’s combinatorics.

When I’m not making slide decks, I hope to find out more about how it works.

https://procedural-generation.tumblr.com/post/702640984659509248
Extensions
Photo


https://procedural-generation.tumblr.com/post/702337290698162176
Extensions
Context, Framing, Flags
vexillologygenerated flagsprocgenprocedural generationimage generationgenerative art
Grain among lush vegetation and equality pic.twitter.com/FX5XOycya6

— flag gen (@vexillographing) November 10, 2022ALT

View on Twitter

This generated flag by vividfax struck me as a good example of how context and framing matters in procgen. Without context these are a just abstract colors and shapes. With context, it’s a flag generator. What pushes this over the top, though, is that this bot also tells us a meaning behind the symbolism.

I don’t know how much intentionality is in the generation of the explanation of the symbolism, though I believe there is some; humans are overly good at pattern matching so you don’t need a lot of intentionality. It’s often, in my experience, a good idea to have some associations: generators have more character when there’s a visible grain in their output. But you can get away with very little.

https://procedural-generation.tumblr.com/post/700493016855691264
Extensions
November 1 means first day of NaNoGenMo 2022.
NaNoGenMoprocgennanogenmoprocedural generationnovel genertionstory generationnarrative generation

November 1 means first day of NaNoGenMo 2022.

I think National Novel Generation Month is more relevant than ever, as I write about here, because the most important thing about a generative model is having a strong concept and conveying that in a context the reader can experience.

It’s time for NaNoGenMo

https://procedural-generation.tumblr.com/post/699750126881734656
Extensions
Loremen SimulatorSomething that I’ve written about (together...
procgenlorementext generationgenerativist readingprocedural generationgenerators that read


Loremen Simulator

Something that I’ve written about (together with Max Kreminski) is the idea of a generativist reading of a text: reading something with the end of creating a generative model of it. That is, we closely examine the symbols and meaning of something and try to build a machine that can create similar symbols (with hopefully similar meaning).

A ‘text’ in this sense is the view from literary theory: in essence, a ‘text’ is anything that can be read - that is, it has symbols that can be interpreted. By considering a text through the lens of a generativist reading, we can relate the  symbols of the visible artifact (the description of folklore, in this case) with the text we’re examining (a podcast) and our model that emulates the processes of that text (Michael Reeve’s pandemic project generator that invents new folklore).

https://myk.ninja/loremen

https://procedural-generation.tumblr.com/post/685792091608137728
Extensions
Neural Cellular Automata -
neural cellular automatacellular automataprocgenprocedural generationproceduralartartificial lifemax robinsonconvolutional neural networkswormsYoutube

Neural Cellular Automata -

I’ve long been fascinated by cellular automata. There have been a lot of innovations since I first read about Conway’s Game of Life, and one of those innovations is neural cellular automata.

Here’s a video by Max Robinson explaining how they work, including these artificial life neural worms. You can play around with neural cellular automata yourself, at https://neuralpatterns.io

https://procedural-generation.tumblr.com/post/669031272531853312
Extensions
Better Constraints for Better Dungeons -
aran p inkprocedural generationprocgenmetroidvaniadungeon generationconstraintsbetter constraintsmap generationlevel generationi want more games with interesting explorationlandmarkscontrastyour generator should be lumpy
Better Constraints for Better Dungeons -

Aran P. Ink has been making a procedurally-generated metroidvania, and has been dealing with a specific problem: the generation wasn’t serving the design pillar of exploration. Procgen should be perfect for giving the player new things to explore, but the common way to structure a generator wasn’t working.

The maps were too predictable and obviously repeated the same structure, the exact opposite of what you want in an exploration game. Since the rooms were all the same size, it made it much harder to make them feel different enough to be memorable. Basically, not enough contrast.

The solution? Relax the constraints. Or, to put it another way, rethink the constraints from a different point-of-view. This led to a solution that’s unique to their particular game.

The same idea might also work for your game, but I think a better way to approach this is to learn from the process and goals, rather than just the solution. Maybe think about the map design from an entirely different point of view, or generate history backwards, or introduce a mechanic that uses the generator’s weakness, or set up the framing to make the generator’s result feel natural.


https://aran.ink/posts/better-constraints

https://procedural-generation.tumblr.com/post/667413347967418368
Extensions
Generated Games for the Game Boy
game boyprocedural generationgame generationprocgenprocedural content generation
Generated Games for the Game Boy

One project that I’ve been working on lately is generating games for the Game Boy.

The generator builds games using GB Studio.

Why the Game Boy? There were a number of reasons, including it being a fixed target platform with a really good emulator ecosystem. Since this is part of a larger project to research new ways of building generators, it made sense to target a platform that didn’t require a lot of scaffolding just to display something on screen. Plus, it lets us build games for genres that haven’t had as much game generation attention. A generator targeting Pico8 or Bitsy might be similar, though the other advantage of GB Studio is that it has a lot of useful data structures already implemented (like scenes and triggers) and so we can concentrate on teaching the generator how to use them.

I’m not the only one working on the project, so I certainly can’t take all of the credit. And it is definitely a work in progress - the next version of the generator is using a different approach that makes the process of building the generator much more flexible.

https://isaackarth.com/games/rom_gen_test_5/

https://procedural-generation.tumblr.com/post/647317903371354112
Extensions
Questions to ask about your generatorI recently ran across this...
questionsprocgenroguelike celebrationprocedural content generationroguelikevocabulary


Questions to ask about your generator

I recently ran across this list of questions I came up with during my Roguelike Celebration talk a couple years ago, and I thought that it stands up pretty well on its own.

Individual: What effect does a single artifact have? What are the differences between artifacts? What makes this artifact stand out?

Gestalt: What is the overall impression of the generative space? What is the effect of the group of artifacts?

Repetition: What are the similarities between artifacts? What does the player learn about the generator from their commonalities?

Structure: What does this artifact tell us about the generative space? What processes can we discern? What can we predict about the next artifact we see?

Surface: What direct impact does this artifact have on our experience? What details do we pay attention to? 

Multiplicity: How much variance can we perceive across the generative space?

Cohesion: Do the artifacts feel like they belong? Do they fit in with the other artifacts? Can we perceive them as part of a cohesive system?

Style: How well do the artifacts fit their context? Can the generator adjust to match the current needs?


Are there other questions that you ask about your generators?

https://procedural-generation.tumblr.com/post/644839948606996480
Extensions
Explaining WaveFunctionCollapseThis video from Martin Donald is...
wfcmaxim guminwavefunctioncollapseprocgenexutumnomartin donaldprocedural generationexplaination


Explaining WaveFunctionCollapse

This video from Martin Donald is a great explanation of the WaveFunctionCollapse algorithm. I particularly appreciate that it also talks about calculating the adjacency constraints, which often gets overlooked when talking about WFC: There are many ways to implement both the solver and the adjacency calculations.

I also appreciate that Martin’s description digs into some of the data structure thinking that goes into actually implementing a version of WFC. I find that tends to trip many people up when they try to actually program the thing.

https://procedural-generation.tumblr.com/post/643575304072380416
Extensions