Repository navigation
Feature Matrix
Every feature found in 176 other generators (games, libraries, engine assets, web tools, tabletop and writing tools), whether UniverseGenerator has it, and how many of the surveyed generators do. It is the short form of the knowledge base's feature matrix, which also names every generator per row, the package each feature lives in and its size cost; that file is generated from the survey by kb/features/build_matrix.py and never edited by hand.
Status: in 1.0.0 is in the package today; later (1.x) is planned for a 1.x release and is additive, so no seed changes when it arrives; rejected says why. "Others" is how many surveyed generators have the feature; 0 means only UniverseGenerator has or plans it.
Totals: 74 in 1.0.0, 58 later (1.x), 7 rejected.
| Feature | What it means | Others | Status | Notes |
|---|---|---|---|---|
seed-input |
type a seed, get the same result again | 25 | in 1.0.0 | |
seed-url |
seed and options in a shareable URL or code | 6 | in 1.0.0 | |
seed-versioned |
seeds carry a generator version so old ones keep working | 2 | in 1.0.0 | |
hierarchical-address |
any object regenerates alone from its address | 13 | in 1.0.0 | |
lazy-generation |
objects generated on demand | 14 | in 1.0.0 | |
presets |
named one-click presets | 5 | in 1.0.0 | |
options-sliders |
tunable parameters with ranges | 24 | in 1.0.0 | |
data-tables-editable |
users replace or extend the tables | 15 | in 1.0.0 | |
hooks-plugins |
code hooks and post-processors | 6 | in 1.0.0 | |
constraints |
"at least one X" guarantees | 8 | in 1.0.0 | |
explain-trace |
show why a value is what it is | 2 | later (1.x) | Explain reads the rules after the fact, so it can come later |
engine-neutral-data |
plain data usable outside one engine | 14 | in 1.0.0 | |
deterministic-cross-platform |
documented identical output on every OS and runtime | 3 | in 1.0.0 | |
seed-search |
search seeds for an output that matches a test | 1 | later (1.x) | FindSeeds(predicate); cheap thanks to lazy generation; players already brute-force seeds |
fill-around-fixed |
pin known facts, generate the rest to match | 1 | later (1.x) | writers start from one imagined world; a separate entry point leaves unpinned output alone |
detail-levels |
more detail never changes the major bodies | 1 | in 1.0.0 | |
overlay-diffs |
player changes stored as a diff over the generated base | 1 | later (1.x) | a game's job, but an Overlay type saves every user writing it |
time-coordinate |
orbital positions and seasons as functions of time | 1 | later (1.x) | PositionAt(t) from orbital elements; additive |
outlier-quota |
a share of outputs may break the rules on purpose | 1 | in 1.0.0 | |
sub-seeds |
every object exposes its own seed or stable id | 3 | in 1.0.0 | |
visited-cache |
places are saved when first visited so later changes never alter them | 1 | rejected | versioned seeds solve it without storage; a game can still save what it wants |
multiplayer-determinism |
server and clients derive the same world from the seed | 2 | in 1.0.0 | |
determinism-tests |
golden or hash tests in CI | 2 | in 1.0.0 | |
typed-units |
values carry physical units | 2 | in 1.0.0 | |
diagnostics |
soft problems returned as typed warnings | 1 | in 1.0.0 | |
cited-assumptions |
each assumption shown with its source | 1 | later (1.x) | the wiki's rules pages cite every formula; Explain can link them |
custom-fields |
users add, rename or hide fields | 6 | in 1.0.0 | |
rpg-system-profiles |
generation biased by a tabletop rule set | 1 | later (1.x) | add-on package UniverseGenerator.Exports; Traveller UWP and SWN tags as presets and exports; rules text not copied |
pinned-systems |
place hand-made or real systems into a generated map | 0 | later (1.x) | the hook every real-data feature needs; a pinned star and known planets, the rest generated around them |
| Feature | What it means | Others | Status | Notes |
|---|---|---|---|---|
universe-level |
several galaxies | 6 | in 1.0.0 | |
cluster-level |
galaxy groups, clusters, filaments, voids | 3 | in 1.0.0 | |
galaxy-shapes |
more than one galaxy shape | 24 | in 1.0.0 | |
custom-shape-map |
an image or density map as the shape | 5 | later (1.x) | a density-function hook; image decoding stays outside the library |
spiral-arm-count |
configurable arms | 9 | in 1.0.0 | |
min-spacing |
systems never overlap | 5 | in 1.0.0 | |
regions-sectors |
named regions or sectors | 21 | in 1.0.0 | |
region-traits |
regions share age, theme, danger | 4 | in 1.0.0 | |
constellations |
constellations and Bayer letters seen from home | 2 | later (1.x) | add-on package UniverseGenerator.Names; a separate naming pass from a chosen home (Star Control: Origins) |
lanes-graph |
hyperlanes between systems | 21 | in 1.0.0 | |
lane-density |
tunable lane density | 5 | in 1.0.0 | |
chokepoints |
chokepoints and bridges as data | 3 | in 1.0.0 | |
wormholes-gates |
long links, gates, relays, with requirements | 3 | in 1.0.0 | |
travel-terrain |
free travel changed by terrain instead of lanes | 2 | later (1.x) | nebula fields on their own stream; a LaneMode option (lanes, terrain, both) |
danger-levels |
danger per system or sector | 5 | in 1.0.0 | |
radial-progression |
difficulty or tier by distance from a centre, barrier rings | 1 | later (1.x) | a pure function of position (Avorion) |
factions-territory |
factions placed on the map | 7 | in 1.0.0 | |
start-fairness |
balanced start positions | 4 | later (1.x) | Starts(n) as a pass that reads the galaxy; 4X users need it |
contested-richness |
richer resources between starts | 1 | later (1.x) | Star Ruler 2's score, applied by the start pass |
nebulae-hazards |
nebulae, storms, black holes on the map | 6 | in 1.0.0 | |
galaxy-age-metallicity |
age and metallicity change the content | 6 | in 1.0.0 | |
handmade-systems |
hand-made systems mixed into the map | 10 | later (1.x) | pinned systems by address |
run-map |
a roguelike branching run map | 3 | later (1.x) | extracted from the lane graph |
landmark-guarantee |
a memorable feature at every scale | 3 | in 1.0.0 | |
real-star-catalogue |
maps from real catalogue stars | 1 | later (1.x) | add-on package UniverseGenerator.RealStars; reverses the 2026-10-02 rejection in a bounded form: larger catalogues (10 pc census, Gaia nearby stars) go to an add-on, a small nearest-stars table to core; licences first; was rejected: game and fiction scale ; catalogue data is large; a hand-made-systems hook covers a few real stars |
connected-graph |
every system reachable | 1 | in 1.0.0 | |
spatial-index |
query what is in a cell | 1 | later (1.x) | a grid index over positions; additive |
pathfinding-routes |
shortest routes over lanes | 2 | later (1.x) | Route(a, b) by breadth-first search or A*; additive |
visibility-helpers |
fog of war helpers | 1 | rejected | game logic, not generation; the lane graph and positions give a game what it needs |
galaxy-blend |
several galaxy types blended | 1 | later (1.x) | density functions compose (Gaia Sky channels); colliding pair ships in 1.0 |
real-neighbourhood |
a map of the real stars around Sol | 0 | later (1.x) | the nearest real systems with real positions, classes, companions and names, unknowns generated from the seed; research first |
real-exoplanets |
known exoplanets placed as known | 0 | later (1.x) | Proxima b, epsilon Eridani b and the rest keep their known orbits; generated planets fill the gaps |
real-and-generated |
real stars near home, generated ones far away | 0 | later (1.x) | Elite Dangerous's model; a generated or Milky Way galaxy with Sol's neighbourhood at home |
milky-way-preset |
an approximation of the Milky Way | 0 | later (1.x) | a barred spiral with its real arms and the Sun's place; tens of numbers, not a star field |
real-local-group |
the real Local Group as a cluster | 0 | later (1.x) | the Milky Way, Andromeda, Triangulum, the Magellanic Clouds and the dwarfs (about 80 rows) |
| Feature | What it means | Others | Status | Notes |
|---|---|---|---|---|
spectral-classes |
real spectral classes | 17 | in 1.0.0 | |
star-physics |
mass, luminosity, radius, temperature consistent | 20 | in 1.0.0 | |
star-remnants |
white dwarfs, neutron stars, black holes, giants | 10 | in 1.0.0 | |
multiple-stars |
binaries and multiples with configuration | 17 | in 1.0.0 | |
habitable-zone |
habitable zone computed | 8 | in 1.0.0 | |
frost-line |
frost line computed | 4 | in 1.0.0 | |
star-age |
age and lifetime affect output | 4 | in 1.0.0 | |
star-colour |
colour for rendering | 5 | in 1.0.0 |
| Feature | What it means | Others | Status | Notes |
|---|---|---|---|---|
planet-types |
varied planet kinds | 33 | in 1.0.0 | |
orbit-spacing |
believable spacing | 10 | in 1.0.0 | |
exo-demographics |
system architecture from exoplanet statistics | 1 | in 1.0.0 | |
orbital-elements |
eccentricity, inclination, period | 13 | in 1.0.0 | |
planet-physics |
radius, mass, density, gravity | 20 | in 1.0.0 | |
temperature-climate |
temperature and climate bands | 12 | in 1.0.0 | |
atmosphere |
composition and pressure | 20 | in 1.0.0 | |
hydrosphere |
oceans and ice | 8 | in 1.0.0 | |
rotation-tilt |
day length, tilt, tidal lock | 5 | in 1.0.0 | |
biomes |
biomes or surface types | 13 | in 1.0.0 | |
life-ladder |
none to sentient, flora and fauna | 13 | in 1.0.0 | |
life-conditions-table |
life placed by condition rows | 2 | later (1.x) | condition rows for creature archetypes (Elite exobiology) on their own stream |
habitability-score |
habitability or Earth similarity | 5 | in 1.0.0 | |
resources |
resources per planet | 13 | in 1.0.0 | |
moons |
moons generated | 25 | in 1.0.0 | |
rings |
planetary rings | 13 | in 1.0.0 | |
asteroid-belts |
asteroid belts | 10 | in 1.0.0 | |
surface-map |
surface map parameters | 18 | later (1.x) | a parameter pack for engines, no meshes; own stream |
planet-traits |
special traits or anomalies | 8 | in 1.0.0 | |
terraforming |
terraforming potential | 1 | later (1.x) | derived T0 to T3 |
comets |
comets as bodies | 1 | later (1.x) | minor bodies on their own detail stream |
sky-view |
what the sky looks like from the surface | 0 | later (1.x) | apparent size and colour of suns and moons, derived; the gap writers noticed |
local-calendar |
day, year and seasons as a calendar | 0 | later (1.x) | add-on package UniverseGenerator.Text; derived from rotation and orbit |
| Feature | What it means | Others | Status | Notes |
|---|---|---|---|---|
stations |
stations and starports | 5 | in 1.0.0 | |
population-society |
population, government, law, tech | 14 | later (1.x) | optional society layer on its own stream |
trade-codes |
trade or economy class | 4 | later (1.x) | derived from the society layer |
profile-code |
compact UWP-style code | 8 | later (1.x) | derived |
story-tags |
tags with enemies, friends, complications, things, places | 11 | in 1.0.0 | |
points-of-interest |
ruins, derelicts, anomalies | 13 | in 1.0.0 | |
history-events |
history timeline or events | 5 | later (1.x) | add-on package UniverseGenerator.Text; generate then explain (Caves of Qud), own stream |
description-text |
generated paragraphs | 13 | later (1.x) | add-on package UniverseGenerator.Text; tag-filtered grammar; a one-line descriptor ships in core at 1.0 |
tag-filtered-text |
text cannot contradict the data | 1 | later (1.x) | add-on package UniverseGenerator.Text; Improv's approach |
gm-secrets |
GM-only section and player-safe view | 10 | later (1.x) | add-on package UniverseGenerator.Exports; a secret per object in the text layer; a player-safe export |
names-catalogue |
catalogue-style astronomical names | 8 | in 1.0.0 | |
names-fantasy |
invented or themed names | 17 | in 1.0.0 | |
names-hierarchical |
names derived from the parent | 1 | in 1.0.0 | |
name-encodes-address |
a name decodes to its address | 2 | later (1.x) | an optional naming style (Elite boxel names) |
culture-phonology |
names from per-culture sound rules | 1 | later (1.x) | add-on package UniverseGenerator.Names; Syllabore (MIT, .NET Standard 2.0) as dependency or model |
cultures-species |
species and cultures | 8 | later (1.x) | add-on package UniverseGenerator.Text; hooks for writers, own stream |
creatures |
creature archetypes | 3 | later (1.x) | add-on package UniverseGenerator.Text; signature creature archetypes |
npcs |
named characters tied to places | 3 | rejected | characters belong to RandomNameGeneratorLibrary or the game; the library gives culture and name hooks |
entity-links |
typed links between objects | 1 | in 1.0.0 | |
llm-text |
prose written by a language model | 2 | rejected | non-deterministic, needs a service; tag-filtered grammar instead. A caller can still feed our data to a model |
| Feature | What it means | Others | Status | Notes |
|---|---|---|---|---|
map-render |
draws a 2D map | 18 | later (1.x) | add-on package UniverseGenerator.Exports; an SVG string export |
map-3d |
3D view | 28 | rejected | visual, not data; the library gives 3D coordinates and engines render |
export-json |
JSON export | 27 | in 1.0.0 | |
export-markdown |
Markdown or Obsidian export | 8 | later (1.x) | add-on package UniverseGenerator.Exports; YAML properties, relative links, GM section |
export-image |
PNG or SVG | 13 | later (1.x) | add-on package UniverseGenerator.Exports; SVG only; PNG is the caller's job |
export-vtt |
Foundry or other VTT | 4 | later (1.x) | add-on package UniverseGenerator.Exports; journal-entry JSON after the writers' survey confirms the format |
export-text-html |
text, HTML or PDF | 10 | later (1.x) | add-on package UniverseGenerator.Exports; plain text sheet; HTML is for the planned web page |
export-csv |
CSV | 3 | later (1.x) | add-on package UniverseGenerator.Exports; for spreadsheets and writer-tool imports |
edit-after-generate |
edit or lock, then regenerate the rest | 14 | later (1.x) | pins plus overlay |
open-source-licence |
source available | 35 | in 1.0.0 | |
unity-integration |
Unity package | 25 | in 1.0.0 | |
godot-integration |
Godot addon | 6 | later (1.x) | NuGet (Godot C#); Godot 4 C# takes the NuGet package; a GDScript addon is out of scope |
web-tool |
runs in a browser | 27 | in 1.0.0 | |
price |
free or paid | 36 | in 1.0.0 | |
history-log |
a log of earlier results | 1 | later (1.x) | the planned web page; the planned web page keeps recent seeds in the browser |
share-gallery |
public gallery of shared results | 1 | later (1.x) | the planned web page; seed URLs are shareable; a gallery is a site feature for later |
player-view-live |
live redacted view for players | 2 | rejected | a VTT's or site's job; the player-safe export feeds it |
player-safe-export |
export that strips GM content | 0 | later (1.x) | add-on package UniverseGenerator.Exports; with the GM secrets |
export-traveller-map |
Traveller SEC sector files | 1 | later (1.x) | add-on package UniverseGenerator.Exports; needs the profile code; a reach into an active community |
export-wiki-site |
a static wiki or site | 2 | later (1.x) | add-on package UniverseGenerator.Exports; a folder of Markdown files is the route (LegendKeeper, Foundry MD to Journal) |
export-wiki-tool |
export shaped for a wiki app | 0 | later (1.x) | add-on package UniverseGenerator.Exports; World Anvil and Kanka imports are closed or paid; Markdown first |
import-foreign |
imports other tools' formats | 1 | rejected | a generator, not a converter; hand-made systems take our own JSON |
editor-preview |
preview in the engine editor | 4 | later (1.x) | Unity package; a Gizmos sample in Samples~ at 1.0; an editor window later |
dice-tables-printable |
also printable as dice tables | 0 | later (1.x) | the wiki can print the tables for table play |
See also: Recipes for the 1.0.0 features in use, and Versions and upgrading for what arrived in which release.
This wiki describes UniverseGenerator 1.0.0 and was last updated on 2026-10-03. The library is MIT licensed. Report problems in the issues. On NuGet: UniverseGenerator. On OpenUPM: com.m4bwav.universe-generator.
Using it
- Getting started
- API reference
- Same seed, same galaxy
- Plausibility rules
- Errors and edge cases
- Recipes
- Feature matrix
- FAQ
The releases
Contributing
Elsewhere