User Tools

Site Tools


traveller:worldgen

This is an old revision of the document!


Traveller Worldgen

Worldgen is a project that started over ten years ago, and began as an attempt to get Traveller UWP data into Celestia. The original idea was to produce a unique (random) world map for every world in the Traveller universe. It has evolved somewhat from that time.

A basic description is that Worldgen is a Java web application, backed by a database, which displays a Traveller style 2D map of space, allowing users to navigate the map and view details on the stars and planets within that area of space. It also provides code to generate the initial map, either completely randomly, from a star density map or from actual Traveller UWP data.

The current status of the project is that a major re-write started of it about two years ago, but it has been on hold for over a year now. It is not forgotten though, and work will hopefully begin again before the end of the year.

Mapping the Galaxy

The original galaxy map was done in the style of Google Maps, though is very crude by today's standards (at the time, it worked in every browser I could test, with the exception of IE). The important thing to note though is that it does not use the standard Traveller map style.

The first version of Traveller I really played was 4th edition (I only played AD&D in the '80s), so never learnt to memorise the UWP codes. I still find them impenetrable. So these maps are much simpler, and use a combination of text and icons to display information about the system and world. Since you can click through to full details on the star system, it's not necessary to show everything on the map itself.

The big difference is that the 'star' image shown at the centre of each hex gives an indication of the size and colour of the star, as well as the number of stars in the system. A big red circle means a red giant star - it's nothing to do with the Green / Amber / Red security classification.

Also, the data was put together for a GURPS Traveller campaign, so technology levels go up to 12, not to 16. The very latest code base has reverted to a 0-16 scale, but the working data sets still use the GURPS scale.

Mapping Traveller Worlds

The first aim was to map all the worlds of the Imperium. Since Traveller condenses everything there is to know about a star system into a single line Universal World Profile, the first requirement was to extend this to provide more complete information on a star system. This included:

  • Individual detail on each world within the system.
  • For multi-star systems, detail on the arrangement of the stars and the orbits of the planets.
  • Details on moons for some of the worlds.
  • Textual description for each world, rather than just limiting the description to raw statistics.

To simplify things, a Planetary Classification system was used. This classes worlds into broad types, such as CryoJovian, EoGaian, Enceladean etc. The system generation can work out how many planets there are, and what the types of those planets are, and then leave it to a planet generator to work out the details.

Describing the Worlds

The textual descriptions are randomly generated from seed files. Each world type has its own set of possible phrases, which can be strung together and can also include simple conditional statements. For example, a world might be described as a “A small airless rock”, though the word 'small' could have a conditional around it to select from 'small', 'average sized' or 'large' depending on the radius of the planet. Individual words or whole phrases can be given random variants to help make the description unique.

For example, one world's physical description could read:

This is an Earth-like planet with a fully developed ecology. Irkhi III is a beautiful planet of colourful forests which cover much of the world. The oceans are filled with giant killer fish. Irkhi III is heavily populated.

For worlds which have a civilisation, further details are generated for different parts of the society. For example, the same world, with a law level of 4, could have a further description of:

The laws here are many, and quite restrictive. Off-worlders may find themselves subject to investigation if they step out of line, though the legal system is still capable of standing up to the government. There are no laws allowing free speech, and journalism is heavily monitored. There are religious leaders who think the government should increase its power in order to reduce off-world interference.

The idea is to flesh out every planet and moon in Traveller to a high level of detail.

Showing the Worlds

The big work though is in actually mapping each world. This involved writing planetary mapping routines from scratch, since not only did they need to be fully automated, they also needed to be fast enough to generate maps for hundreds of thousands of worlds. Quantity over quality.

Because worlds have both a map image and a text description, it is important to link the two together. If the textual description describes the world as having two polar continents with an equatorial sea between them, then the map has to show this. This pretty much ruled out using any existing software, since the process had to cope with Earth-like worlds, barren rock worlds, ice worlds and gas giants. Each world could be given one or more properties, which can be picked up on by the text generators, and also used by the map generators.

This part of the system is currently in a lot of flux, because it's quite hard to do. The latest version produces quite low resolution icosahedral maps.

At some point, it would be nice to be able to show a 'night side' map which shows city lights as well, but that hasn't even been started on yet.

A Living Universe

Finally, it was decided that it would be good to show trade information about worlds. Rather than use something like the rules in GURPS Free Trader, the system works out trade by determining what every world produces, what every world needs, and actually simulates trade between them by having ships buy and sell goods.

This simulation is very much a work in progress (it needs to work out trade goods for everything from a TL 0 stone age culture to a TL 16 advanced society with 10 billion people living in orbit). It also needs to model what each ship knows about the world. Information only travels as fast as a ship, so market prices on the current world is stored for each system, plus latest known market prices for neighbouring systems which has been brought in by recent ships. This requires simulating the flow of information around the universe.

It's all fun, but there's a lot of work to be completed before it can be used.

So, where is it?

There's a demo of it running at http://dev.glendale.org.uk/traveller/. This is old code, and a development data set, so not all of it is working. It also looks like the world map data was wiped at some point, so none of the worlds actually have any visible maps.

A good place to start is in the Ilelish Sector, which has a lot of detailed worlds. If you want to jump straight to a star system, then have a look at Ailean which has a nice binary system.

Everything is built on top of a REST API, so for example, the following URLs show interesting stuff:

traveller/worldgen.1390169592.txt.gz · Last modified: 2014/01/19 22:13 by sam