Category Archives: Maps

And not only that, I’ve picked up the torch of Sci Fi world-building again. Thanks to Emmett‘s comment, I ditched my old, ugly world generation scripts written in shell and awk (really, what was I thinking). I always wanted to learn Python anyway.

So far, my script does some basic generation work. The beauty here is that it not only reliably produces data using supplied random seeds, I also set this up in an object oriented fashion. That is, this is wholly modular and I might end up with an entire universe generator in one piece of software.

Anyway, here’s some sample output:

And yes, it’s called hello.py because I started with “Hello World” and then just kept adding pieces. I guess this is about 2h of work so far.

One thing you will remember from when we looked at the dice results for this sector was the insanely high total population – 2663 billion people – for what is supposed to be frontier-ish.

This is really due to four population code B worlds – that is, 100 billion or more inhabitants. I’ve already downgraded one of them. In addition, the sector contains 8 worlds inhabited by between 10 and 100 billion people:

(5)Temperate

1429

AA8ABB9-G

Hi

Ht

Wa

HI5

834.000.000.000

(5)Temperate

(8)Temperate

0516

A763BD9-C

Hi

Ht

HI8

482.000.000.000

(8)Temperate

(3)Temperate

2614

BAA5BD9-7

Fl

Hi

HI3

166.000.000.000

(3)Temperate

(8)Temperate

2917

B888AA9-7

Ga

Hi

HI8

95.700.000.000

(8)Temperate

(3)Temperate

2611

A400A96-D

Hi

Ht

In

Na

Va

HI3

63.200.000.000

(3)Temperate

(8)Temperate

1418

C785A96-8

Ga

Hi

HI8

61.700.000.000

(8)Temperate

(7)Temperate

2135

B784A89-7

Ga

Hi

HI7

31.000.000.000

(7)Temperate

(5)Temperate

1113

A8A5A89-D

Fl

Hi

Ht

HI5

30.500.000.000

(5)Temperate

(4)Hot

1935

B743A88-9

Hi

In

Po

HI4

15.700.000.000

(4)Hot

(3)Temperate

0305

B410AD9-B

Hi

In

Na

HI3

14.200.000.000

(3)Temperate

Xoth

2219

A576A85-A

Ga

Hi

In

HI7

12.200.000.000

(7)Temperate

Is this even possible?

From a pure math standpoint, absolutely. Earth’s population has increased dramatically over the past few centuries, as better agriculture and medicine reduced mortality – especially child mortality. When I was a kid, the world’s population hit 5 billion people. I remember the TV gala; for some weird reason people actually celebrated it. 2011, it was at 7 billion. Call it 25 years for 50% growth. Simply continue to feed all these people and you’ll have run-away, exponential growth.

Earth’s Population over time, in Billion

Of course, things aren’t as simple as that. First off, the Earth is a closed system and at some point – we are not sure where it would be – there simply won’t be enough food, energy and water. Population would hit a wall and things would turn ugly.

In reality, even if there was no limit to food, energy and water (say because of interstellar imports) it won’t work out that way.

People adapt to their environment – we’re really good at that. Better health, more wealth, and especially better education also limit fertility. Women simply give birth to fewer children. In the 1950s, it was 5 kids per woman. In the early 2000s, it was half that. The UN expect it to eventually drop to just above 2.05. In other words, a balance will set in, and the best guesses place this at ~9 billion people.

A regular Sunday shopping in Chennai. A good example of the sea of humanity. cc-by-sa, McKay Savage

In other words, a super-densely populated world isn’t going to happen in any natural way. Population growth is a byproduct of technological progress. If that progress stops, or even reverses, the population becomes unsustainable and will either crash or find an equilibrium. If technological progress continues unabated, then attitudes will change with it and population will find an equilibrium eventually as well, just at a higher level. To put it bluntly, people simply have better things to do with their lives than to raise kids continuously.

Genre Considerations

I am obviously not worried as much about building a realistic population model as I am about creating a setting that fits its genre and is internally consistent and, well, hopefully interesting.

Massively populated worlds are definitely in-genre. Asimov’s Trantor is of course the grand-daddy of them all, and had anything between 40-500 billion inhabitants. Coruscant has a trillion inhabitants. Then there are the many city-worlds of the Warhammer 40k empire (and probably others). Massive, galactic-scale societies support these worlds and absorb their effect on the economy.

In Niven’s “Known Space”, Earth has a population of 18 billion and is described as a crowded hell. Heinlein assumes 11 billion in “The Moon is a Harsh Mistress” and it’s not exactly doing us any good. (Of course in “Starman Jones”, Heinlein assumes that 4 billion people are a lot). In both cases, space travel is fairly limited for various reasons – all those Terrans can’t just mass-emigrate, which limits the effect on other worlds.

The World-Builder’s Solution

My gut reaction was to simply downgrade these worlds – as I did with #2021. However, I reminded myself of the reasons for using a random generator in the first place: It is supposed to spur our imagination, right?

Here’s a map of where those >1 billion people planets are:

The 1.2 in Subsector K is our world #2021, which originally had 786 billion people. Okay, so the absolute numbers are quite too high. But do you notice what I am seeing?

Subsector H, birthplace of the rebellion, has two super-high population planets. Lots of cheap manpower for the war. And that subsectors H-J axis I mentioned? Another super-high population world in subsector J – and the world with the highest tech level in the entire sector! Now, the 834 billion (and 482 billion) are just ridiculously high numbers, but if we fix it like so:

We’ve effectively preserved the random generator results, improved them significantly, and used them to explain the campaign’s political situation.

This brings the population of the sector down to 508 billion people – a fifth of what it was initially.

So. We have a home. Sector 256. This means the work is just beginning – now I need to lay out local space.

The map of local space should be centered on the Imperial Core. That is, by producing this map we imply that “this is it”, similar to how a Terran national map will show, well, the subject of the map plus perhaps parts of some neighbors. Subsectors F and G as well as J and K should thus be the main focus. K is obviously quite sparse – a backwoods area people don’t go to, perhaps comparable to a stretch of desert.

H on the other hand has many worlds that must be quite important – look at all of these A and B class ports and the travel connections between them!

In theory, this could be a neighboring nation but the ideas I have do not allow for a secondary powerful nation. So it’s part of the Empire, and this means I’ll have to expand the map to the “east” a little bit eventually, just to give our protagonists some room to explore.

The Imperial capital world, Mithra, and the original colony worlds the colonists settled on should be close to the center of that region. They do not “have” to be important anymore – just consider the difference between Rome two thousand years ago and now – but they should probably be relatively heavily populated. They should also be fairly close to each other.

Looking at the map, I immediately notice a bunch of temperate worlds which are marked as fairly habitable. (I also notice that habitability index 9 didn’t get shaded, but no matter). These are 1917, 2017, 2118, 2119, 2021, and 2219:

(8)Temperate

1917

X863445-0

Lt

NI

HI8

25500

(9)Temperate

2017

B8658B9-A

Ga

Ri

HI9

833000000

(7)Temperate

2021

A663BB8-C

Hi

Ht

HI7

786000000000

(8)Temperate

2118

D864951-8

Ga

Hi

HI8

5770000000

(8)Temperate

2119

C875657-8

Ag

Ga

NI

HI8

4610000

(7)Temperate

2219

A576A85-A

Ga

Hi

In

HI7

12200000000

Interesting. #1917 works well for Mithra, just increase the population a little: X863845-0, Pop 156000000. Makes them “Rich” by Traveller definitions and I appreciate the irony. But we’ll get back to that later.

The other three original colonies were Sassandra, Ascalon and Xoth. Let’s use the three garden worlds, #2017, #2118 and #2219, for them. Either the colonists picked worlds most suitable for them, or ones they could easily terraform.

As for #2021, I’m reducing the population code to 9, with 1.19 billion inhabitants.

The Republic

The Republic was founded on Avalon. But where is that? With Mithra in “G”, our logical choices are “H” and “J”. J is probably the better choice – More isolated – but without wanting to foreshadow anything, I really want to place it in H. Let’s assume all those interconnected worlds indicate a tightly-knit community in this province, perhaps they were never too happy about being annexed by Empire in the first place. And Willem II was just the sort of Emperor who would ignore serious problems staring him into the face.

Consulting the map again, I find this:

(2)Hot

2715

A6309C7-D

De

Hi

Ht

Na

Po

HI2

1580000000

A small-ish desert world with high tech, good infrastructure, a very thin atmosphere and a class C government which the Traveller rules book says could be a revolutionary council. Could it be any better?

I can totally imagine these poor bastards, working in the mines under adverse conditions, their living quarters packed due to the high population. Everybody’s poor, and ideas of a Better Future begin to spread.

With the locations of Mithra and Avalon fixed, I’m thinking that the Republic first captured worlds in J, before circling back and attacking the Imperial core worlds from multiple sides. This probably also means that the J-H axis, with travel through the empty space of K, is the main area of Republic control. G is an occupied mess, and F ends up as a region on the sidelines – the Contact Light equivalent of the Regina subsector.

It’s been a while since I worked on world generation. Needless to say, the layout of composition of “Imperial Space” is one of the big fundamentals that needs to be settled before I can work on the details of the setting.

I did consider reworking the random generator into generating entire solar systems (Evil Dr Ganymede has posted a great revision of the 2300AD system generation rules that seems about perfect for the purpose) and perhaps into a less grid-based 2D map, or even a pseudo-3D map.

In the end, I think I should not do either of these. For a space opera setting, a realistic map isn’t necessary – in fact, it’s probably a distraction. Most people can’t visualize 3D space very well.

As for Dr Ganymede’s system – it would create a lot of nice detail but in the end I also want to make some progress. If whatever audience this thing gets prefers, I can always retcon. 🙂

To cut to the chase, I played around with a few random seeds, and 256 looks great. Here is the map:

The green circles indicate “habitability”, the darker the better. The lines are “travel routes”, basically they connect all A/B class starports that lie within a certain distance of each other.

What I like about this sector is its structure. Subsectors F, G and H are probably the “core” of the (former) Empire. I think that J might make a good place for either the Imperial capital – adding physical distance to the social detachment that led to the civil war – or the rebel capital – explaining why the Empire didn’t see it as a bigger threat.

Subsectors M and N, as well as subsectors O and P make for one nice “fringe cluster” each. There’s a small group with two very habitable worlds in subsector A – a nice “outpost” area – and a number of colonized worlds in subsector B, which might prove interesting – since none of them is a nice place to live there must be something fairly important there to warrant settlement.

Statistics

The sector contains 262 worlds with a total population of 2,663,284,385,714. That’s a lot of people and I’ll definitely have to reduce it – there are a number of population B systems.

Tech level distrubtion:

World classes:

Starport classes:

I think this is going to be a very nice sector. Do let me know what you think of the layout!

Next step: Clean up the map, and turn it from a generic sector into our colonial space.

Work days keep me from being productive where it counts – like science fiction world building!

I’ve made a number of improvements to my sector generator scripts…

I generate a “Habitability Index” – this has actually been in the script for a few days. I don’t use it for anything, but it’s a quick index of how nice the planet is to live on. Numbers are only ever added, not subtracted, so a world with a medium HI can still be crappy, but it’s still quite useful for judging worlds at-a-glance. Ranges from 0 (=abysmal) to 8(=perfectly earthlike).

I now use random seeds. As long as you know a sector’s seed, you can always recreate it again a second time with the script (as long as the script didn’t change).

The script now rolls for actual population, using Benford’s Law. (Thanks Berka.)

The script prints out some aggregated statistics about a sector – still a WIP.

A= is the actual population. I only generate the leading 3 digits and then scale it up to the correct power of ten. Yeah that’s 300 billion people at TL7 on #1127 – with a small planet and more water surface than Earth has. Must be a lovely place. Lots of algae farms… Not to mention those TL4 and TL6 worlds.

For subsectors that had a split system probability, I rolled two subsectors each and then “masked” them manually. This was by far easier than to attempt to teach the script which hexes had what probability… However, for the lower-right corner two subsectors I got tired of this and just rolled 4- for the entire subsector. It will do.

Without much fuss, here is the sector map:

Click on it for the full-sized image. I kept my sketch as a translucent overlay.

The sector ended up having 213 worlds, slightly short of the 236 I had estimated. Tech level distribution is heavily stacked towards the low end:

World types are fairly well spread, though I stupidly removed my Se/Sm classes again:

The ten high tech worlds are all fairly low population (2×8, 1×9). The 15 High Pop worlds are 9×9, 5xA and 1xB, or between 159 and 1231 billion people, give or take a few. This isn’t necessarily a contradiction; neither China nor India have the highest tech on Earth.

Contra

The sector almost seems TOO sparse considering it is supposed to host the main interstellar nation in the region – even IF it is a frontier region

Distinction between “sparse” and more “dense” star region absolutely not visible based on sheer system presence.

I don’t really speak Perl and I know nothing about the format of .svg files, but… I’ve created a version of that subsector map script that maps sectors. It doesn’t have a generator yet – sorry, this will have to wait until another day -but I did include some rough sample data.

Anyway, maybe someone finds it useful. And if you want to work on it, be my guest, it’s of course GPL like the original.

The conclusion of the first trial run was that worlds were too big, the change I made was too drastic. So I sat down and did a few more 10k runs. This is a graph of the relevant world types – I consider something like “rich” to be too poorly defined to begin with.

Note that I added “Se” (Super-Earth, size 10+) and “Sm” (Small, size 2-) for this exercise.

I hope it’s not too small to read. Anyway, the graph shows 3d6-3, 3d6-4 and 3d6-5 compared to 2d6-2 when rolling for world size.

Obviously Super-Earths dramatically decrease and small worlds increase during that sequence. Fluid Ocean worlds are also directly tied to large worlds, and Vacuum worlds to small worlds.

3d6-5 would result in more asteroids than 2d6-2. Again, a no-brainer, but since I wanted to reduce smaller worlds not increase them, this seems like a poor fit solely on this criteria.

3d6-4 seems like a good compromise choice for my purpose based on this graph, so I’ll use that.

Tech Level

I haven’t really been able to make TL behave nicer, and I didn’t want to add a lot of filters. I can still do that in the future, but I have another plan.

Trial Run 2 Subsector

Many garden worlds in this one. I like how there again seems to be a cluster – marked by red communications links – of “developed” worlds contrasting with the “frontier” of the rest of the sector.

World #808 has a population of B, “hundreds of billions” and must be the undisputed superpower of this subsector. Tech Level is again generally fairly low, considering I was aiming for a nominal 13 on “core” worlds, but it is a fairly decent mix if one looks at it as a pure Traveller-like premise.

While I am working on the framework to generate the low-level detail, I can’t help myself but to work on the larger picture – and some actual setting data. Keep in mind that I already created one sector last year; I consider it my “draft”, and it will certainly inform many of the decisions I will be making.

For the first sector, I simply created a small grid of 3×3 sectors with a rough drawing of what I thought local space should look like. (In reality, these should be rectangular.)

I’ve refined this method somewhat. I created the following in The GIMP:

Black are “sparse” or “rift” regions, white are regions of greater star density,

The process to create such an image is fairly simple:

Create a new image. I used landscape, A4 size. But this doesn’t matter.

Filters -> Render -> Clouds -> Plasma. I used the maximum Turbulence.

Colors -> Desaturate

Colors -> Threshold. Play with the sliders until it looks nice

Filters -> Blur -> Gaussian Blur. I used Blur method “ILR” and radius 30×30, though you may have to change this depending on your image. You want to significantly soften the edges, while keeping the general shapes recognizable.

Create a second layer.

On the second layer: Filter -> Render -> Clouds -> Solid Noise. I used detail 15, x and y size of 16, and both Turbulent and Tilable disabled.

Move this new layer underneath the original layer.

Set the original layer’s mode to “multiply”.

Merge the layer down.

User Colors-> Threshold, play with the sliders again until you get nice distribution.

If you dislike the results, try inverting colors or different random seeds for your plasma clouds.

Don’t be afraid to manually edit the image after step 11 – I did!

Placing our Sector

Note that the image doesn’t have any sort of scale, which gives us some flexibility. I used Inkscape to place the same 3×3 sector grid, and I resized it a few times until I had the “right” fit. I decided on this location:

As is the tradition, X marks the spot – the sector of my setting. I picked this location because there is a lot of “interesting geography” adjacent to it.

Posts navigation

The BBC posted an article about modern designs of research stations in the antarctic. There are some really, really gorgeous designs and these are of course much more practical than ye olde wooden shed.

This was posted on Reddit a while ago; someone created graphics showing what Earth sunsets may look like if our Sun were replaced with another star. I do not know how accurate these images are, but they are surely beautiful:

Astronomers have discovered an exoplanet, in the system, J1407b, which is 200 times the size of the ring system of Saturn. There are also gaps in the rings which they think indicate the presence of moons there. The Contact Light setting has got to have at least one gigantic ring system like this!

Ancient Star System

In other news, Kepler has found an ancient planetary system. The system, Kepler-444, is 11.2 billion years old. It has at least five planets – all of them too hot to support life – but it means ancient systems can exist amidst much younger stars. Planets on which civilizations rose and fell long before life even got started elsewhere.