Skip to content

feat(worldgen): varied system & planet naming — registries, numerals, landmark proper names - #681

Merged
marceld23 merged 2 commits into
mainfrom
feat/system-planet-naming
Aug 3, 2026
Merged

feat(worldgen): varied system & planet naming — registries, numerals, landmark proper names#681
marceld23 merged 2 commits into
mainfrom
feat/system-planet-naming

Conversation

@marceld23

Copy link
Copy Markdown
Owner

closes #678

What

Replaces the single formulaic naming pattern (Veyra-42 / Veyra-42 1) with a varied, deterministic scheme — retroactive for all worlds:

  • Systems roll one of several registries: coined proper names (Tharion, ~55 %), catalog designations (HX-113, ~25 %), two-part region names (Ember Veil, Korveth's Reach, ~15 %), and rare archetype-flavored names (pirate space sounds menacing, hubs busy, ~5 %).
  • Planets carry designations — Roman numerals (Tharion II), exoplanet letters in catalog systems (HX-113 b) — except landmark worlds, which get coined proper names flavored by their biome (ice sounds cold, lava harsh): ringed planets, the Lone Giant, Twin Worlds (one stem, two endings), the Hub capital, and the start planet (new EnsureStartPlanetProperName server hook, mirroring the ring guarantee).
  • Moons letter after their planet (Tharion II-a) or get short coined names around landmark worlds.
  • Asteroid fields & wrecks are single coined words — the baked-in English (Asteroid, Wreck near) is gone; the space map pairs their names with the existing localized kind labels (ui.map.kind_*, DE+EN already present).
  • Stations: a Hub's first station is a coined port (Port Halvek); all others stay attributive (<planet> Station).
  • Names are galaxy-deduped (the old scheme could emit duplicates) and profanity-blocklisted (EN+DE substrings — the syllable mill really coined "Rapeearr" during development).

Safety

  • Existing universes keep their exact body layout. All naming draws come from a dedicated rng stream (salt 700); the legacy MakeName draws are burned in place so the body rng sequence is untouched. New GalaxyLayoutRegressionTests pins SHA-256 layout fingerprints (id/kind/type/parent/size/rings/orbit/position for fixed seeds) captured before the rework — they pass unchanged after it.
  • Renames are save-safe: names are display-only, everything (waypoints, saves, travel) keys on body ids. Player-renamed stations still override.
  • Known soft edge: AI-generated travel missions that matched their target by name (not id) before the update won't auto-complete; id-based objectives are unaffected.

Verification

  • Full fast tier: 1355 server + 147 client tests green, incl. 8 new naming tests + 3 layout-regression pins.
  • dotnet format --verify-no-changes clean; clean rebuild -warnaserror: 0 warnings.
  • Local Unity build (client change: SpaceMap kind label) — successful, fresh Client.dll verified.

🤖 Generated with Claude Code

marceld23 and others added 2 commits August 3, 2026 15:07
… landmark proper names (#678)

Systems roll one of several naming registries (coined "Tharion" ~55%,
catalog "HX-113" ~25%, two-part "Ember Veil" ~15%, rare archetype-flavored
names for pirate/hub/desolate/belt space). Planets carry Roman-numeral
designations ("Tharion II"; exoplanet letters in catalog systems), while
landmark worlds — ringed, Lone Giant, Twin Worlds (shared stem), the Hub
capital and the start planet (new EnsureStartPlanetProperName server hook,
mirroring the ring guarantee) — get coined proper names flavored by their
biome. Moons letter after their planet ("Tharion II-a") or coin their own
names around landmarks; asteroid fields and wrecks are single coined words;
a Hub's first station is a coined port ("Port Halvek"), all others stay
"<planet> Station".

Baked-in English ("Asteroid", "Wreck near") is gone from generated names —
the space map now pairs wreck/asteroid names with the localized kind label.
Names are galaxy-deduped and profanity-blocklisted (EN+DE substrings).

Retroactive by design: names are display-only (ids key everything), so
existing worlds keep every waypoint and wake up with better names. The
naming draws come from their own rng stream (salt 700) with the legacy
MakeName draws burned in place, so the body layout of every existing
universe stays byte-identical — pinned by new GalaxyLayoutRegressionTests
with SHA-256 layout fingerprints captured before the rework.

closes #678

Co-Authored-By: Claude Fable 5 <[email protected]>
…erprint

SystemX/Z go through MathF.Cos/Sin, whose last bits differ between the
Windows capture machine and Linux CI libm — the fingerprints failed on CI
while passing locally. Positions derive from hashes, not from the body rng
stream this test guards, so dropping them loses no signal. Hashes recaptured
from the reduced field set (id/kind/type/parent/size/rings/period), which
the full pre-rework capture already proved unchanged.

Co-Authored-By: Claude Fable 5 <[email protected]>
@marceld23
marceld23 merged commit 1f4b2d1 into main Aug 3, 2026
12 checks passed
@marceld23
marceld23 deleted the feat/system-planet-naming branch August 3, 2026 13:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Richer procedural naming for star systems, planets & moons

1 participant