I don’t know how many times in the course of development we have used the Sheng-Ji Yang quote from Sid Meier’s Alpha Centauri about how “One does not simply take sand from the beach and produce a Dataprobe.” But, we’ve used it a few times and today is no exception. Game development is an inherently iterative process, especially early access game development: you build systems, you attach other systems, and eventually – at some point – you run out of systems to build and cross over into a territory that consists purely of refining existing systems.

One of the major systems outstanding that I have to finish is the overworld. We have previously added randomly generated overworld maps, which are generated using a standard approach: “take a lot of Perlin noise, generate some Voronoi cells on top of that, fill in various land masses, and off you go.” What has been missing is the code which lets you pick an arbitrary point on that land mass and go exploring.

We have now reached the point in our Dataprobe creation process where we have started adding that.The way that overworld generation internally works is that you click on the map, and select a square. We look at every Voronoi cell on the overworld that is contained in this square, and initialize a new “colony map” by scaling all of the centroids of the world biome cells so that they are correctly placed on the colony map (which is higher level-of-detail); we then seed a second “finer” Voronoi cell map over the colony map, which is used to place biomes. Each finer cell selects from a list of biomes which can exist in its “coarse biome cell.”

Right away, you get interesting results. Not all of these are good:

The advantages, right now, are that the newly generated maps are interesting and novel; it never feels like you get the same old starting location. “Oh,” you say, “New Antipodea again?” Now things are mysterious and dangerous in a way that they weren’t previously.

The bad news from a software development perspective:

nobody has really touched the biome generator code since New Sogwood was hastily added just before early access in 2014

various things that were hard coded to play nice in New Antipodea and New Sogwood no longer work correctly on randomly generated maps;

a whole bunch of biomes that you may encounter in the game are simply not set up at all.

So you will also get strange things like Aurochs Island that are… interesting, yet undesirable:

and areas where the game crashes, or has garbage, or incorrectly blended water colors, or… well, there’s a list. So we have a great deal of data entry to do now, as well as adjusting things such as the density of the fine Voronoi cells with respect to their coarser cousins, and determining where it is correct to apply Lloyd Relaxation, that magic process that sort of makes everything feel “nice” and “like a video game map.” We do not plan to ship this for 49, but I expect all heck to break loose in 49A when we can hopefully push a first version of this code to the world. For now, you will be able to select a starting location on the map but it won’t actually affect anything.

Other “overworld-things” to get in: a global world history, where we can have all kinds of Simulationesque Fun!, and measures of influence for various groups throughout the world so that you can adjust your difficulty. (For instance, it doesn’t necessarily make sense to spawn fishpeople if you’re up against A Forsaken Mountain, but perhaps it makes more sense to spawn Obeliskians. The various strengths and weaknesses of Villainous Foreigners may change depending on your performance in the world, perhaps. This is also to say nothing of the fact that, perhaps if you are too close to a [The information contained in this paragraph has been expedited by order of Her Majesty’s Anti-Paranormal Squadron, for containing wild speculation and untrue facts about the nature of certain organizations and entities that do not exist. Anybody caught in possession of unedited paragraphs will be sentenced to hard labour in the Antipodean Clay Mines for no less than a period of six months, and may also be set on fire for Reasons of Hygiene.]