Luca has been working hard on the World Builder to add the last few features we need to enable us to make “final” world setups. Some of these things are improvements to the workflow which make the tool quicker, easier and nicer to use such as: a tabbed interface, sped up visualisations and more intuitive controls. Another set of changes are to do with file structure and biomes and will enable us to make the interesting and varied worlds that we need for Boundless. These changes are custom nodes and hierarchical biomes.
Custom nodes enable a set of nodes to be put into a separate file, and those nodes be referenced from as many other files as desired. Custom nodes can also have named parameters with ranges which allow complexity to be abstracted away and make the graphs more readable. The main purpose of this is to allow us to build a library of graph pieces to enable more reuse, easier and quicker initial biome creation, and also help people learn how to get the best out of the tool. For example a world file could now look like this:
If you look in the bottom right you’ll see four green nodes which are references to biomes stored in other files. Right clicking on one of those nodes brings up a menu with an option to “Open Referenced Node”. In that file you can see further examples of custom nodes:
The distortion and caves are connected to nodes which also reference other files. They form the beginnings of our component library and will greatly simplify the process of creating worlds and biomes. You can see on the “Distortion - Standard” node there are a couple of exposed sliders (“Min Value” and “Max Value”) which allow simple adjustment of the referenced nodes without needing to understand their full complexity. The contents of the Standard Distortion node looks like this:
To go with the change to how the graphs of nodes are structured biomes can now hierarchies of sub-biomes. The way that worlds select their biomes (using four 2D noise functions: altitude, temperature, humidity and vegetation) is the same, but within each biome there is the option to have sub-biomes (and as many levels further down as desired). Sub-biomes are selected using two noise functions rather than four, and there is a visual tool to determine where each sub-biome sits in that two dimensional space:
In the above example anything with a low altitude selects the Lowland sub-biome, a moderate altitude selects the Pasture sub-biome, and when the altitude is high the vegetation determines whether Highlands or Highlands Forest is selected. This is an improvement for two reasons. Firstly it helps deal with the complexities of getting biomes in the right order, so in the example given you will always see Pasture between a Highland sub-biome and a Lowland sub-biome (assuming a reasonably smooth selection noise function). If you’ve tried to have this kind of control using the old system you will appreciate the change. Secondly it keeps this complexity within the individual biomes, and will allow us to build a large library of biomes which can be mixed and matched in generated worlds without too much concern for their neighbours. This will mean that care will have to be taken when creating biomes that they can play nicely with adjacent biomes, and their selection data is correct, but that shouldn’t be too much of a problem.
The idea of all this is that we (Wonderstruck) can start to create “final” data for the construction of worlds, but also that you can contribute to that process by creating your own biomes and custom nodes to be put into the library for use in generating worlds. If you’re interested in being involved in the creation of biomes for the game, then please let me know.