Star System Generator v2: scale, habitation, and a Why Here that finally reads
The Star System Generator just shipped its biggest reshape since launch. Population and habitation are now separate fields, twelve new exotic habitation forms cover the Expanse and Culture-series vocabulary, and the Why Here paragraph is finally graph-aware.
The Star System Generator has been quietly accumulating changes for a couple of months. Most were small, the kind of edits where I'd sand down a rough prose pattern or fix a settlement that didn't quite cohere. Two of them turned into actual cascades, and the result is enough of a reshape to call it v2. So this is the announcement: what changed, what it looks like at the table, and what's still cooking.
Why Here got rebuilt around the system graph#
The Why Here paragraph is the one settlements use to explain themselves. Why is anyone here. Why does this body matter to that one. What the route situation looks like. In v1 it was templated against scoped facts, which produced output that was technically correct but read like a hostage statement. Same five connectors, same flat rhythm, same tendency to repeat the body name three times in one sentence.
I tore that apart and rebuilt it against the system graph. There are now per-tone templates, so cinematic settlements actually sound cinematic instead of clinical, and astronomy systems get a more procedural register. Hazards and factions blend into the same prose layer instead of being walled off into separate sentences. And there's a tautology guard that catches the cases where two clauses end up saying the same thing in slightly different words, which was the most common voice failure in v1. The data underneath is the same. It just finally compounds.
Scale and habitation are now separate fields#
This is the bigger change, and it's the one that breaks old seeds.
In v1, a settlement had a single field called scale that tried to do two jobs. It described population magnitude, and it also described the physical form the habitat took. So one string had to convey "twelve thousand people in a rotating ring" or "six people in an automated relay shack." That worked when the form vocabulary was small. It stopped working the moment I wanted the table to include both an O'Neill cylinder and a hollow-asteroid spinhab, because those are roughly the same magnitude but live in very different fiction.
So I split it. Settlements now have a population field and a habitationPattern field, and they roll independently. Population is a magnitude axis with ten orders of scale. Habitation is a form axis with twenty-one entries.
The new habitation forms are where I had the most fun. I wanted the table to feel like the bookshelf I actually read off when I'm GMing space games. The additions are Ring station, O'Neill cylinder, Modular island station, Hub complex, Hollow asteroid, Belt cluster, Underground city, Sealed arcology, Sky platform, Tethered tower, Drift colony, and Generation ship. Between them they cover Expanse-style spinhabs and Belters, Culture-series Orbitals, Mars Trilogy domes and beanstalks, classic Stanford Torus and Babylon 5, Schismatrix-style untethered drifters, and the slow boats from Aurora and Hyperion. The roll table is gated by site category and population band, so a Sky platform only appears on bodies with actual atmosphere, an O'Neill cylinder won't try to house six people, and a Generation ship lands in the middle bands where slow boats actually make sense.
What it looks like at the table#
Settlement cards now show Population and Habitation as separate rows, which is a bigger ergonomic win than I expected. Hub-class names came back too, after a regression in v1 quietly broke them. A million-person settlement now reliably gets called a Hub or a Center instead of falling through to a generic Hold.
The tone axis matters more than it did. Cinematic systems show more Abandoned sites, more Distributed swarms, and more exotic forms generally. Astronomy systems suppress those bands. Encounter sites and crises scale with population now: urban settlements pull Transit lock overflow and Mass-clinic intake corridor, outposts pull Single-room briefing cell and Two-witness sealed lock. Tags weight the same way. Civic-flavored tags like Strikebreaker City lean urban; remote-flavored tags like Derelict Yard lean outpost. None of this needs GM intervention. It falls out of the rolls.
The seed break#
Old seed strings will produce different output. There's no way around it. The roll signatures changed when habitation became its own axis, and the dice consumption shifted again when population started conditioning encounter sites and tag selection.
I sat with whether to ship a compatibility flag. Decided no. The point of v2 is that the corpus reads better, and a compat flag would just freeze users on output I've already decided I don't want to defend. The trade is one-time pain for output that's meaningfully closer to the Expanse and Culture-series feel I was aiming for.
What's next#
Hub complex is in the table as a habitation pattern, but the right way to use it is as a composite: a Hub plus its named satellite outposts, generated together, treated as one settlement at the system level but multiple at the encounter level. That's the next big plan, and Hub complex shipping in v2 is the seed for it.
The other thing v2 makes easier is that adding new habitation forms is now mostly a JSON edit. Pattern descriptors, exotic-band candidates, and joint constraints all live in one place each. If I want to add a Solid-state ringworld or a Faraday-cage shantytown later, that's a small change instead of a refactor. I expect this to make the table grow faster, and continued prose variation per pattern is also on the list, one pattern at a time.
If you've been using the tool and you've got systems generated in v1 that you're still running, those are fine. The change only affects fresh rolls. And if you find a pattern that lands wrong, or a phrase that won't shake loose, send me the seed. The prose layer is the part I'm still actively tuning.
Drop a comment on X and let me know your thoughts!