homeaboutarchives + tagsshopmembership!

kottke.org posts about Martin O’Leary

Auto-generated maps of fantasy worlds

posted by Jason Kottke   Feb 22, 2017

Uncharted Atlas

Uncharted Atlas

Uncharted Atlas

Martin O’Leary is a research scientist who studies glaciers, but in his spare time, he built Uncharted Atlas, a program that auto-generates maps of fantasy lands (like from Game of Thrones or LOTR) and posts them to a Twitter account. The explanation of how the terrain is generated is quite interesting and includes embedded map generators that you can play around with (i.e. prepare to lose about 20 minutes to this).

There are loads of articles on the internet which describe terrain generation, and they almost all use some variation on a fractal noise approach, either directly (by adding layers of noise functions), or indirectly (e.g. through midpoint displacement). These methods produce lots of fine detail, but the large-scale structure always looks a bit off. Features are attached in random ways, with no thought to the processes which form landscapes. I wanted to try something a little bit different.

There are a few different stages to the generator. First we build up a height-map of the terrain, and do things like routing water flow over the surface. Then we can render the ‘physical’ portion of the map. Finally we can place cities and ‘regions’ on the map, and place their labels.

And here’s how the languages for the place names are generated; each map has its own generated language so all of the place names are consistant with each other and different from those regions shown on other maps.

I wanted to produce something which was a step above the usual alphabetic soup of generated placenames, and which was capable of producing recognisably distinct languages. The initial idea was that different regions of each map would have different languages, but I abandoned this because it was too hard to make it clear that this was what was going on, while still having the languages themselves be interesting.

The problem is to generate something like what the constructed languages (conlang) community call a ‘naming language’. This is a light sketch of a language, focusing purely on the parts which are necessary to produce names. So there’s little to no grammar, but a good sense of what the language sounds like, and how it’s written.