Planet Generator

Image courtesy of Rick Burke

I have a spreadsheet that outputs planets for my series! Yay! What’s right about, what’s wrong about it, and why did I choose to do it that way?

It all started with a few comments in my writing group. I made the mistake of mentioning my very flimsy backstory about the origins of the civilization that predated the Kemtewet. (You may notice the Gertewet have a habit of calling the capital world Keidem instead of Sais.) Discontent was voiced and echoed by my chief editor at home, along with some common scifi complaints like, “Not every planet looks like British Columbia, right?” and “As long as your off-world humans don’t all look the same…” and “Maybe have different gravitational accelerations…”

My brain interpreted that as both my backstory and physical world building as being sub par.

It was a very productive Veterans’ Day.

Not only did I find an obscure Brazilian anthropologist with a theory that completely validates the most incredible part of my flimsy backstory, but I also automatically generated 120 worlds in the Black Book universe.

Like many development processes, assumptions developed at the same time as the method, just to get things to work. I’ll separate them out for convenience.

Underlying Assumptions

A mean free distance between stars with habitable planets serves as the basis of a very simple rectilinear designation system (RLDS). The Kemtewet start looking for another habitable world along predicted nodes and designate the closest one according to the RLDS. (This is actually pretty stupid, but it makes my toddling world building sense happy.)

If there are 8.8 billion habitable words and the universe is a disk of diameter 110,000 ly and thickness 2,000 ly, then (assuming a homogeneous distribution–ha!) habitable worlds are (on average) only 13 ly apart. NBD if you have FTL like the Kemtewet–and not that big of a deal, even if you can travel only 1/2 c.


1. Generate a random star type, based on a random number. For each star, assign a random mass.

There are seven types of stars: Blue Giants, Supergiants, Giants, Main Sequence “White”, Sol-Like, Red Dwarf, and White Dwarf. Stars are much more beautifully varied than seven categories, though they do tend toward certain trends of luminosity vs. mass, depending on mass, composition, and where they are in their lives. I assigned rough frequencies, just for the roughing out of a universe.

Star Type Frequency Mass Luminosity
Blue Giant 0-4.9% 10+90*RAND() See Luminosity Table
Supergiant 4.9-5% 1+19*RAND() 2,000,000
Giant 5-7.5% 4+RAND() 100,000
Main Sequence “White” 7.5-27.5% 2+2*RAND() See Luminosity Table
Sol-Like 27.5-47.5% 0.5+0.5*RAND() See Luminosity Table
Red Dwarf 47.5-97.5% 0.1+0.15*RAND() See Luminosity Table
White Dwarf 97.5%-100% 0.6+0.4*RAND() 0.01


Luminosity for Main Sequence stars:

# Solar Masses Luminosity
0<M<0.43 0.23*M^2.3
0.43<M<2 M^4
2<M<20 1.5*M^3.5
20<M 3200*M


2. Generate a random planet type with a random mass.

Only hospitable worlds within the star’s habitable zone were considered for colonization. Atmospheric composition could be tweaked bacterially but was generally within workable parameters, due to the abundance of elements like oxygen, nitrogen, and carbon. Some planets could be colonized with enclosed artificial environments (dome cities) with farms outside the dome in the carbon dioxide-heavy atmosphere. Other planets could need the enclosed environment to keep plants warm enough–greenhouses. Atmosphere composiiton could be controlled there. Hydroponics?

Neglect combinations of stars and planets that would destroy the planet.

My science advisor tells me about Hot Jupiters, so my initial fear that I couldn’t actually colonize gas planets in a star’s habitable zone is unwarranted. He also tells me that planets in the habitable zone of red dwarfs are tidally locked, and other articles [cite here] elaborated to discuss the role of cloud cover in regulating temperatures on those worlds.

Planet Type Mass
0% &lt Prob &lt 85% Rocky
85% &lt Prob &lt 90% Rocky, no magnetic field
90% &lt Prob &lt 100% Gas


3. Define position in habitable zone.

It turns out that, according to Wikipedia [cite better], a star’s habitable zone can be approximately calculated based on its luminosity alone (relative to Sol’s). This makes a lot of sense, as luminosity is proportional to the amount of energy the star outputs. The habitable zone as we understand it now is where the energy flux is estimated to allow liquid water–but it can be influenced by a lot of things: atmospheric composition, heat output by the planet, cloud cover…

A planet like Venus is very hot, not only becuase it’s closer to the sun but becuase its greenhouse atmosphere traps a lot of heat. Likewise, Mars is cold (okay, cool; the fifty-degree temperature doesn’t seem that extreme) not only because it’s farther out but mostly because its weak magnetic field can’t maintain much of an atmosphere. If we swapped Mars and Venus, hmm…

Unfortunately, the only relation I’ve found so far is that Sol’s habitable zone extends out to 1.68 AU. By definition, we know 1 AU is habitable. I’ll have to keep looking for a good estimate on the hot limit.

I started by calculating analogues for both 1 AU and 1.68 AU: sqrt(Luminosity) and 1.34*sqrt(Luminosity). [Correlation courtesy this article Wikipedia links to] Then I generated a random percentage of the placement between the two. Of course, this eliminates the possibility of a hotter world than Earth (atmosphere notwithstanding). File that under “Future Work.”

Yes, Jess, I’ll make sure there’s more than one climate on the planet. I don’t promise multiple climates on each planet will be settled; these populations are not that large. (There should be another post for that…)

4. Define tilt: if not tidally locked with a red dwarf and not a gas giant (because who cares? Maybe later.) assign a random angle between 0 and 90 degrees, weighted toward smallar numbers. Tilt = 90*RAND()^3

I also neglected eccentricity and orbital inclination, because I believe that’s more information than I can show in the series.

5. Define a random surface covered with water.

Assume Water is terrifically abundant.

Water seems to be much more abundant in our solar system than we used to expect. Not only is the surface of Earth 70% covered with it–it’s in the mantel, too. Big chunks of ice we call comets orbit our sun, knocked out of their normal position in the Oort Cloud [CONFIRM THIS!]. Uranus and Neptune are frickin’ ice planets, and we’ve confirmed water on the Moon, Mars, and Pluto. How prevalent must water be throughout the galaxy?

Funny thing is that water is hydrogen and oxygen. Well, hydrogen’s in every star. It’s the most abundant material in the universe. But it takes a star to fuse oxygen, and it takes a dying star to distribute it. Naturally, you’d expect fewer [more research needed: what generation stars have water, and what generation are red dwarfs?]

Originally, I had this weighted against lots of water, but more research dissuaded that idea. Now, it’s a straight random 0-100 percentage.

6. Gravity. This doesn’t need to be generated, just calculated. I assumed all rocky planets to have the same average density as Earth. (Yes, illogical. Oh well.) That’s basically assuming identical composition, which is boring. But it’s not worth more fidelity; the only detail that can make it to most chracters’ notice, since I have no science teams, is that the gravity varies.

If density is constant and mass is randomly generated, then the planet’s radius could be calculated. [Rederivation coming upon encouragement.] This results in the cubed root of the mass (number of Earths) being the number of Earth-standard g’s.

7. Year Length

As long as the orbit has no eccentricity and the radius is specified, the year length (in Earth days) is determined.

length = 2*PI()*(mean orbital radius * 1 AU)^3/2 / sqrt(G*(star mass / mass of the sun * mass of the sun + planet mass / Earth mass * Earth mass)) / 3600 / 24

From there, I can estimate a range of climates, assign resources, derive habitats and cultures, and world build… 120 times… For this series…

What do you think? Thoughts, comments, suggestions?