Sign in

proc_gen

@procgen.bsky.social
982 followers 672 following 282 posts

Procedural generation researcher. Currently making games. procedural-generation.tumblr.com #procgen #gamedev

PostsRepliesMedia
proc_gen @procgen.bsky.social · 28/01/2026
I'm currently doing consulting on procgen and generative projects. As a way to give back to the community, I figured that it'd be nice to have procgen office hours on Friday, for asking questions or showing me your current project: calendar.app.google/iDs53XCnescA...
Procedurally generated mountain with a beach in front of it.
0103
proc_gen @procgen.bsky.social · 01/08/2025
Wait, I love random images and don't really need an excuse to post one. Have some Perlin noise.
Animation of white Perlin noise on a sky blue background.
030
proc_gen @procgen.bsky.social · 15/01/2025
Some entries go for traditional-ish Minecraft villages, others take things in wildly different directions.
GDMC AI Settlement 2023 generated Minecraft map: JEB_GEN_ by PositionNotLoadedGDMC AI Settlement 2023 generated Minecraft map: ReXenGen-2023 by Rexos, Xeon0X and Eclairsombre
GDMC AI Settlement 2024 generated Minecraft map: Last Minute by Xeon0XGDMC AI Settlement 2024 generated Minecraft map: Vault of Immeasurable Knowledge by Niels-NTG
"a library in Minecraft of books containing the metadata of every work ever published to the free public research repository ArXiv."
050
proc_gen @procgen.bsky.social · 15/01/2025
Entries from previous years are available on the website: gendesignmc.wikidot.com/wiki:2024-se...
Isometric view of a generated Minecraft Settlement - 2024 contest winner by SpecificProtagonist
Isometric view of a generated Minecraft settlement - 2024 GDMC AI Settlement Generation Challenge, 2nd place, by Shadow Wizard Money Gang (SWMG)
120
proc_gen @procgen.bsky.social · 21/12/2024
I find this to be one useful way to think about the aesthetic effect a generator is trying to achieve. Are we trying to emphasize the experience of the individual generated artifact, the contrast between similar generated artifacts, or the gestalt experience of interacting with all of the artifacts?
A triangular diagram, showing the relationship between Generative Aesthetic Forms: Individual, Gestalt, and Repetition. A tree or a snowflake is Individual. As is Exile (1988) which uses generativity to compress a single fixed, giant map into a tiny floppy disk. Or Nick Montfort's Megawatt which is a generated novel that uses repetition as part of creating a single artifact. In the repetition corner, we have orchards as well as things like repeating poetic forms (villanelles), the @infinite_scream bot, Aaron Reed's novel generator Aggressive Passive, and so forth. At the top in Gestalt, we have forests and No Man's Sky--insofar as No Man's Sky's original design goal was to keep you moving to the next planet, experiencing each mostly as a gestalt in passing, rather than exploring individual planets in depth.
2679
proc_gen @procgen.bsky.social · 21/12/2024
And then you could jump to the next galaxy, the seed would rotate the bits over one step, and you'd have a whole new macro-pattern to explore.
Elite, Galaxy #6. Note the cluster in the lower left, which is disconnected from the bulk of the galaxy to the right - the only way to go between them is to jump to a different galaxy, travel to the corresponding stars, and jump back. Except the galaxy seed only rotated one way, so you'd have to loop around all 8 galaxies to return.
130
proc_gen @procgen.bsky.social · 21/12/2024
And so your focus shifts to the gestalt of the trade routes, and you think about things like bottlenecks, long-distance routes, if there are additional trades to make along the way, and whether to go the long way around to avoid pirates (trade route visualization courtesy of @jatazak.bsky.social)
Trade route map of Elite Galaxy #1, with the stats for Zaonce. The lines show which stars are at a distance of seven light years or less. Since 7 lightyears is the maximum range of your ship, this traces all possible connections between stars.
141
proc_gen @procgen.bsky.social · 21/12/2024
Eventually, you have enough cargo space and ready cash that the most profitable trading commodities are worth hauling long distances to find the best price. (With diminishing returns for travel time and fuel cost, of course.) So you zoom out to the galaxy view and consult your paper notes...
BBC Elite Galactic Chart for Galaxy #1. (Or, number zero if you're looking at the internal bits.) Lave is circled in the lower left corner.
130
proc_gen @procgen.bsky.social · 21/12/2024
As you get more cash and upgrade your ship, you get more options for the optimal thing to buy. You also start thinking multiple jumps ahead; Lave is an agricultural planet and Zaonce is a high-tech industrial planet, so if you buy food at Lave and trade them for computers at Zaonce...
The Short Range Chart in Elite (1984) showing the original starting star systems. Lave, Diso, Riedquat, Leesti, Zaonce, Orerve, and Reorte are recognizable to a lot of players from back in the day and got carried forward into all of the sequels to Elite.
120
proc_gen @procgen.bsky.social · 21/12/2024
At the start, you don't have much in the way of cash, so you're looking for something that will pay off with just a few tons. You're unlikely to max out your cargo bay unless you load it with cheap stuff...but maybe the margin on the cheap stuff will be good enough.
Screenshot of Lave Market Prices, in the BBC version of Elite (1984). Food, Textiles, Radioactives, Slaves (removed in the NES version), Liquor/Wines, Luxuries, Narcotics (also removed in the NES version), Computers, Machinery, Alloys, Firearms, Furs, Minerals, Gold, Platinum, Gem-stones, Alien items. Computers are valuable here, but there are none for sale since Lave is a Rich Agricultural planet.
140
proc_gen @procgen.bsky.social · 21/12/2024
The planet generator had a number of different dependent variables, such as calculating the tech level via the economy and government type. Modern PCG might roll a die, but Elite directly grabbed bits from the seed. Mark Moxon has a deep dive into how it works: elite.bbcelite.com/deep_dives/g...
High-level diagram of how the planet seed feeds into the different planet stats: some are directly from the seed bits, such as the X/Y location and name, some are wholly derived from other parts (e.g., production) and some, like the economy level, are from both direct and indirect sources.
160
proc_gen @procgen.bsky.social · 20/12/2024
So I was talking about Elite. At the start of the game you've got your ship, limited cargo space, 100 credits, and whatever planets you can reach in your 7-light-year range. Your concerns are firmly fixed on individual planets: what can I get here that I can sell at that planet over there?
Planet data display in four different versions of the original Elite, showing the major planet stats: Distance (from the player's current position), Economy type, Government type, Tech level, Population, etc. A slight rounding error difference meant that some distances were rounded differently across platforms, so Onrira might be anywhere from 6.8 to 7.2 light years away.
160
proc_gen @procgen.bsky.social · 20/12/2024
So a forest is defined by its gestalt. I'll quote the OED dictionary definition: "an organized whole that is perceived as more than the sum of its parts." It has connections to a sense of form and shape. Sometimes we only care about the overall shape of the generated stuff, not individual trees.
A Minecraft forest: no two trees are alike, but can you tell the difference? (Probably yes in this case, because you need a little noise for the organic feel. But it's a nice picture.)
150
proc_gen @procgen.bsky.social · 20/12/2024
So I sometimes talk about where the focus of a generator is: If you have a tree generator, do you care about the player's experience of each individual tree as a unique artifact? Or about the gestalt of the whole forest? Or an orchard, and you care about the differences between apple trees?
Some forests in Age of Empires II: Age of Kings. The generator can only stamp down a handful of different trees, but no one notices because they're looking at the gestalt of the forest.
1316
proc_gen @procgen.bsky.social · 20/12/2024
So it's all down to intentional information density, whether that's encoded in 16k of RAM or a 1:1 recreation of the milky way.
A classic Elite Dodecahedron space station in Elite: Dangerous (2014)Animated GIF of the map in Elite (1984), showing the galactic chart, short range chart, and data on the planet Leesti.
030
proc_gen @procgen.bsky.social · 20/12/2024
Taking this further, their star system generator, Stellar Forge, uses real-world astronomical theories to model planet formation. Therefore, each planet you see is the result of a process that can be narrativized. There's far more data crammed into each Elite planet versus one from a random table.
An ocean planet in Elite: Dangerous. One side is covered in ice, presumably because of tidal locking.
130
proc_gen @procgen.bsky.social · 20/12/2024
The Elite: Dangerous devs have talked about letting players colonize other planets, which is the kind of thing that adds additional interactive depth: the planet I discovered might become a place other players build a mining colony. More interactivity = more meaning.
The interior of a space station in Elite: Dangerous
150
proc_gen @procgen.bsky.social · 20/12/2024
You still need a good generator that can make those interesting outlier planets, but having the player be an active part of curation gives the designer a lot more scope to work with, if that's the kind of game they want to make.
An Earth-like planet in Elite: Dangerous, with visible oceans, continents, and cloud-cover.
130
proc_gen @procgen.bsky.social · 20/12/2024
Gameplay that directly encourages you to explore the generator can support a lot bigger (and less dense) generative space, because the player is actively engaged in the filtering. Seeing an unusual planet after dozens of boring, ordinary ones becomes part of the point.
A planet from Elite: Dangerous, showing more recent impact craters with a different color than older, more worn-down craters.
120
proc_gen @procgen.bsky.social · 20/12/2024
In particular, exploration is a directly-supported first-class gameplay mechanic: you get explicit rewards for scanning planets, particularly if no one has every scanned them before. You can ignore the trading game and spend the entire game exploring the depths of the generator.
A player rover drives across a lifeless planet in Elite: Dangerous
130
proc_gen @procgen.bsky.social · 20/12/2024
Depth of interactivity is a little more obvious: there's more in each star system plus there's more for the player to do. Where the original Elite 1 planet (and 1 station) per star, Elite: Dangerous has multiple planets, the planets can have rings, you can go inside the rings and mine for space ore.
A procedurally generated earth-like planet with rings from Elite: Dangerous.
120
proc_gen @procgen.bsky.social · 20/12/2024
Elite: Dangerous famously attempts a 1:1 recreation of the Milky Way. This facilitates both of the principles, and I think it's worth digging into why it works here are where the limitations are, before you're tempted to go off and do the same.
An Elite: Dangerous screenshot: a player-driven SRV Land Vehicle Buggy is driving across a rocky red planet, with the Milky Way rising dramatically above, vertically bisecting the image.
130
proc_gen @procgen.bsky.social · 19/11/2024
But then @galaxykate.bsky.social reminded me of all of the other ways you can make mountains. Some of which don't involve elevation heightmaps at all!
Screenshot of a mountain level in Moon Hunters, which is a top-down 2D game without a lot of real elevation changes.A screenshot of a Tracery poetry project for NaPoGenMo, inspired by the Chinese geography book Shan Hai Jing. https://github.com/sprite-guard/shanhaigen

The text begins: "180 leagues west is a mountain called Mount Quick-Emperor. On this mountain are found a few Autumn-Breaking beasts. They can be eaten to cure colds. On its sides there are innumerable Cruelbreaking trees, which look like fir but with flowers like a carnation. Their leaves can be eaten to cure gluttony. The river Bridge-Hot rises here and flows northeast. On its banks are found Bad-Queen cats."
110
proc_gen @procgen.bsky.social · 09/11/2024
One of my favorite #NaNoGenMo novels is thricedotted's "The Seeker", a poetic work that I'd describe as a record of the protagonist's attempt to learn what it is to be human. From reading WikiHow.
A dream page from "The Seeker", where the protagonist dreams about the concept of DECIDE. The page starts:

==> INITIATE DREAM SEQUENCE...SYSTEM READY

[DECIDE] to leave

[DECIDE] these questions by evidence and...

...reason.i [DECIDE] to take it back and start running..A page from "The Seeker" which reads:

unvision : secret
---
( the glorious character over wayward conspiracies.
supposedly killing her compulsive acquaintance
over an undiscovered clue. utter creatures
securely storing eternal aliens. a hidden hide,
vigilantly stumbling. )
110
proc_gen @procgen.bsky.social · 09/11/2024
There have been a number of interesting NaNoGenMo projects over the years using many different approaches. Here's a page from Liza Daly's "The Days Left Forebodings and Water" which is a book of generated blackout poetry. lizadaly.com/pages/blacko...
A page of blackout poetry by Liza Daly, spelling out "The Days Left Forebodings and Water" from the generated poetry collection "The Days Left Forebodings and Water"
110
proc_gen @procgen.bsky.social · 23/10/2024
Alessandro Ghignola started work on the first version of Noctis in 1996; the latest available version is Noctis IV + community edits. Players could name stars and share them in a central repository. Pictured: one of the rare creatures you can encounter.
A creature in Noctis IV, on the planet "Procgen Eden" at Parsis: 2539262; 4580564;-1033489.
010
proc_gen @procgen.bsky.social · 23/10/2024
I was reminded of Noctis during the recent Roguelike Celebration. Noctis, for those of you who weren't aware of it when it was popular around the turn of the century, let you fly around a procedurally generated galaxy, visiting and naming planets. #procgen
View from inside the blocky interior of the spaceship in Noctis IV, overlaid with "UNKNOWN STAR / CLASS S00", "0.00 L.Y.", and "CALIBRATED"
150
proc_gen @procgen.bsky.social · 22/10/2024
I like that the generator has some subtle asymmetry built into it; it could have been perfectly symmetrical but isn't. It's also interesting how much thought went into recreating the purpose behind each room. It isn't as visible but it'd be very useful if you were exploring the castle.
Image of a castle from Ultima Castle Generator by Slashie, with some of the room placement being subtly asymmetric. It also shows furniture placement by room type.
000
proc_gen @procgen.bsky.social · 22/10/2024
As you can probably guess, I like it when people explain how they built their #procgen generators, so coming across Slashie's blog posts for the development of this particular castle generator was a nice bonus: blog.slashie.net/category/ult...
A generated castle map, top down view, similar to both the graphical style and the map layouts used in Ultima V, from Slashie's Ultima Castle Generator
100
proc_gen @procgen.bsky.social · 19/10/2024
One of the unique things about the Roguelike Celebration is that it takes place in a custom virtual world. In previous years it has looked suspiciously like Github headquarters, but this year it looks to be adjacent to a goblin night market of some sort. #procgen #roguelikes
A screenshot of the Roguelike Celebration virtual MUD, showing the Obelisk room and live chat.
096
proc_gen @procgen.bsky.social · 17/09/2024
Are we still posting numbers? #355,691 is just in the first 10%, though personally I'm more interested in how their hashtag generator for the generated post inserted the comma. And in how they decided on the placement of the 1% / 10% stamp.
Bluesky "Celebrating 10M users" card, with number #355,691 for @procgen
000