User Tools

Site Tools


Sidebar

Blog

The material on this site is owned by Samuel Penn, and any queries should be directed there. Most of the material on this site is licensed under CC-BY-SA.

blog:20140323_worldgen

WorldGen

WorldGen is part of the Mapcraft project, but is focused on the automatic creation of worlds for a Traveller-like science fiction campaign setting. It's ultimate aim is to map every world of the Imperium - down to the level of surface maps for every planet and moon.

The mechanism for doing this is based around two elements - geology/ecology, and civilisation. The former is about creating the worlds themselves, the latter is focused on defining the society that lives on that world. How world creation works is something that I'll try to describe here.

Each world has a 'type', which is a set of broad categories which define the general form of a world. The possible types are defined in the Java enum PlanetType.java, which also defines some basic characteristics of these worlds (such as average radius and density).

For example, there is the Gaian world type, which is used for Earth-like worlds. There are also EoGaian and MesoGaian, which describe Earth-like worlds much earlier in their history, before advanced life arose. EuJovian worlds are gas giants (as are CryoJovian and SuperJovian), Cytherean are hot greenhouse worlds etc. These types are based on those from an early version of the Planetary Classification List. Note that the PCL described on that site has now changed drastically from the version that WorldGen is using.

Rather than try to model every type of world with one bit of code, each world type has its own WorldBuilder class which manages both the drawing of the world map, and also the definition of the ecology. So Gaian worlds have a Gaian.java class which handles the random determination of atmosphere, temperature, surface features and ultimately ecology and resources.

The WorldBuilders for rock worlds can be very simple (and many simply subclass BarrenWorld, fiddling slightly with the probability of craters or surface colour).

Descriptions about worlds are held in a property file for each world class (e.g., there is a Gaian.properties). This defines a set of random text to use when describing the world. There's a simple syntax that can be used to randomise words, pull in properties from the world being described (such as its name or radius) or switch on those properties. The idea is for every world to have a unique description, but also for that description to match the surface map and physical properties of the planet.

blog/20140323_worldgen.txt · Last modified: 2014/03/23 14:59 by sam