Back to Dev Blog
March 21, 20267 min readJames C.

Devlog 4: How Infinite Miner Generates Its Planets

Seeded randomness, deterministic galaxies, and keeping things fair while keeping them fresh.

Seeded randomness, deterministic galaxies, and keeping things fair while keeping them fresh.

One of the questions I get most often from players is some variation of this:

Are the planets actually different each run, or does it just look that way?

The answer is that they are genuinely different, but they are different in a very specific way.

Infinite Miner uses seeded procedural generation. That means a run is not made from pure chaos. It is made from a repeatable starting value that the rest of the galaxy is built from. Once that seed exists, the planets, layers, contracts, and a lot of the surrounding variation can be regenerated consistently from it.

So if I had to describe the system in one sentence, it would be this:

Every run is fresh, but not arbitrary.

That distinction matters a lot.

The problem I wanted to solve

Procedural generation is easy to describe and much harder to use well.

If you lean too far into randomness, you get runs that feel messy, unfair, or impossible to read. If you lean too far into predictability, you get something technically procedural but emotionally static. It may be different on paper, but it does not feel meaningfully new when you play it.

For Infinite Miner, I wanted a middle ground.

I wanted each run to give players a new sequence of planets and enough variation to make the galaxy feel alive. At the same time, I did not want the random side of the system to decide whether a run was good, dead, generous, or doomed. A planet should feel fresh without ever feeling like the game has rolled nonsense behind the curtain.

That led pretty naturally to a seeded approach.

What changes from run to run

When a new run begins, the game creates a fresh run seed. That seed acts as the root for the current galaxy.

From there, each planet derives its own planet seed. That is where the variation comes from.

Conceptually, that seed influences things like:

  1. The planet type and overall flavour
  2. The name and colour treatment
  3. The layer names and mineral labels
  4. The exact thickness and composition of the planetary layers
  5. The contracts attached to that planet

So when a run changes, you are not just getting a different cosmetic wrapper. The structure of the galaxy really is shifting. The planet sequence, the way layers are named and arranged, and the challenge prompts offered by contracts all move around with the seed.

That is what makes one galaxy feel distinct from another.

What does not change randomly

This is the more important half.

The game does not allow random generation to decide the core fairness of progression.

The underlying progression values are driven primarily by planet index and balance rules, not by luck. So while a planet may look different, read differently, and be composed differently, the basic logic of the run remains stable.

That means things like:

  1. How deep a planet is expected to be
  2. How many layers it contains
  3. How ore output scales
  4. How ore value scales
  5. How launch costs scale
  6. How planet difficulty ramps from early to mid to late game

Those parts are kept on rails by design.

I do not want a player to lose a run because the generator produced a bad economy planet or an absurd progression wall. The freshness should come from variation inside the structure, not from the structure itself collapsing.

Why determinism matters

The reason I care about determinism is that it makes the game easier to reason about.

If a galaxy were rebuilt differently every time you looked at it, debugging would be harder, balancing would be fuzzier, and player trust would be lower. It would become much harder to say whether a run felt unfair because of bad tuning or because the generator simply rolled something strange.

With a deterministic seeded system, a given run can be reproduced. The same seed produces the same planet sequence and the same broad structure every time.

That gives me a few benefits:

  1. I can test and tune more reliably.
  2. Players get consistency inside a run.
  3. “Fresh” does not mean “unverifiable.”

That last point matters more than it sounds.

A lot of procedural systems feel magical until something goes wrong. Then suddenly everyone wants to know whether the system is actually coherent. Determinism helps answer that question with a yes.

How I think about fairness

Whenever procedural generation comes up, there is a temptation to ask how wild it can get.

That is not usually the question I ask first.

The first question is whether the player can still read the game.

If a system produces endless novelty but makes it harder to understand what is happening, it usually creates noise instead of depth. Infinite Miner is not trying to be a chaos machine. It is trying to be a progression game with atmosphere and variation.

So fairness here means a few things:

  1. Early planets should still teach the game cleanly.
  2. Midgame planets should expand the pacing without turning muddy.
  3. Later planets should become harder because of scaling and pressure, not because the generator lost its mind.
  4. Contracts should encourage different approaches without feeling random in a hostile way.

The seeded structure lets me enforce those boundaries while still giving each galaxy its own identity.

Why the planets still feel different

The most satisfying part of this system is that it lets two truths coexist:

  1. The galaxy is controlled.
  2. The galaxy still feels fresh.

That freshness comes from accumulation.

A single change in name or colour does not do much by itself. A different planet type, different hue palette, different layer composition, different mineral names, and different contract pairings all stacked together start to create a distinct impression very quickly.

That is the level where procedural generation becomes useful to me. Not because it creates infinite surprise in one dramatic flourish, but because it creates a steady sense that each expedition is its own route through the game.

Where I want to take it next

Right now, the generation system is doing the job I wanted it to do at the foundation level. It gives the game a repeatable galaxy structure and enough variation to stop runs from feeling like the same road painted a different colour.

But there is still room to push it further.

The next step is not making the system more random for the sake of it. It is making the variation more meaningful. More world identity. More contrast between types of planets. Better ways for contracts, encounters, and long-term systems to interact with the shape of a run.

That is where procedural generation gets genuinely exciting.

Not when it simply spits out infinite combinations, but when those combinations start to influence how a player thinks, plans, and adapts.

The short version

So, if you were wondering whether the planets in Infinite Miner are actually different each run, yes, they are.

But they are not random in the sloppy sense.

They are generated from a seeded system that is designed to keep the galaxy fresh while preserving fairness, clarity, and progression balance. New runs should feel new. They should also still feel trustworthy.

That balance is the whole point.

Infinite Miner is meant to be a procedural mining game, not a random one.

Commander Comments

Discussion

Read feedback from players and follow the conversation around this dev log.

Loading comments...