A tile-based planet with a mix of randomly distributed tiles of varying sizes.

The next incremental version of Worldbuilder is now out. No huge changes to planet generation itself, but the user interface has received some significant improvements in terms of usability. Some of this stuff is really standard, and sort of feel bad that it wasn’t already in early versions, so I apologize that it took this long to become available. But the program continues to get polished up, a little here, a little there, so I hope your experience will keep getting better.

As always, a demo is available for download, and the full product can be purchased from the store page. (Once purchased, you’ll continue to have free access to future updates.) If you have already purchased Worldbuilder, the downloads can be found here.

Irregular Grid

The one notable change made to planet generation itself is the reintroduction of irregular grids. Last year, one of the major features of my web prototype and associated blog post was that instead of being stuck with a hexagonal grid and twelve evenly distributed pentagons marring the otherwise uniform pattern, the tiles were a random mix of pentagons, hexagons, and heptagons. This feature didn’t make it into Worldbuilder until this release. But now it is more efficient, more robust, supports quadrilaterals and octagons, and includes an additional variable to adjust the aesthetic quality of the random tiles.

Below you can see the effect of this aesthetic parameter. The left image strongly favors making each tile highly regular, so that all the polygon sides are nearly equal in length, and all the angles for each polygon are nearly equal. The result is that polygons with more sides are necessarily larger than polygons with fewer sides. The right image strongly favors making all tiles nearly equal in area, with the side effect that most of them have highly irregular shapes, variable side lengths, and variable angles. The middle image is an attempt to balance between the two extremes. This parameter can be adjusted in very fine increments to favor one extreme or the other for whatever balance produces the most desirable aesthetic effect.

An images of randomly tiled geography, with the shape of the tiles favoring regularity such that heptagons are bigger than hexagons which are bigger than pentagons.An images of randomly tiled geography, with the shape of the tiles balanced between regularity and equal-area.An images of randomly tiled geography, with the shape of the tiles favoring equal area for all tiles at the expense of highly irregular shapes.

left: favors regularity; middle: balanced; right: favors equal area

Usability Enhancements

As for the improvements to usability, those were mostly in the form of finally persisting configuration settings across sessions of running the program (and therefore adding a few more settings that would only be useful with persistence), and improving the interface for exporting images and other forms of data.

I suspect that the most prominent persisted setting for most users will be the recently-opened list of world generators, and the option to auto-load the most recent of those when the program starts (off by default; check Help->Configuration to enable). Also useful, the image export dialog will also remember the most recently used image sizes, along with other newly available image export options.

For exporting data, the limited options in the File menu have been partially superseded by the new Export menu, which lists all the individual items that can be exported, letting you export just the parts you want. More options for file types have also been added, for both images (BMP, JPEG, PNG, and TIFF) and text-based structured data (JSON, Lua, XML, and YAML). For the moment, only data that is used by the graphics system is available for export. This means textures, cube maps, triangle lists, and the viewport showing the final rendered planet with all the chosen view settings. I’ll need to go back and include all the non-graphics data in a future release, but the above four categories cover most of the valuable stuff.

Exporting viewports now lets you specify the amount of supersampling you desire, up to 4×4 (which was the default and unconfigurable value since 0.2.2). Non-viewport images (textures and cube maps) don’t let you choose an image size or supersampling level, since the image data already has a well defined size. But they do let you specify how the numeric ranges map to color values, since the numeric values often represent some value completely unrelated to color. For example, elevation might be anywhere from -1.0 to +1.5, with 0.0 being sea level, while a distance field goes from 0.0 to 1.0, but in practice might never go higher than 0.1. You can see the difference in the two cube maps below between exporting with the range 0.0 to 1.0 on the left and 0.0 to 0.1 on the right. Since I can’t predict ahead of time what these ranges will be for any given texture, I leave it up to the user to maximize precision by manually selecting the range.

A stitched together distance field cube map with an inconveniently chosen range, causing it to be nothing but black and really dark gray.A stitched together distance field cube map with an appropriate chosen range.

A distance field cube map where 0.0 maps to black for both, but 1.0 maps to white in the left image while 0.1 maps to white in the right image.

Change Log

Here are the recorded changes for this version. Or check out the full history.

Application Changes

Generation Changes



Comment by Jan Svetlik — 2015/12/31 @ 10:39


I purchased your app. It is great app, and I am amazed by it’s capabilities. But I am a bit lacking documentation.
Is there a way, to export gray scale png or tiff with 0-255 elevation data, to be able to import this to Wilbur?

Thank you.


Comment by Andy Gainey2015/12/31 @ 11:17

@Jan, I can think of two options that might suit your needs, but one will require editing a bit of script.

The first and easier route is to export the raw elevation data. To do so, you’d go to the Export menu, Cube Map, Generate Elevation Value Field. Choose where to save the file, and then you’ll be presented with a few options for how to export the data. The default range of 0.0 to 1.0 will likely suit your needs. (If you want to capture ocean elevation data too, you’ll need to use a range more like -1.0 to 1.0; if mountain peaks are getting cut off, try increasing the upper value to a higher value like 1.2.) This will produce a six-part image file (the six sides of a cube), so you might need to edit the image before using it as a heightmap. Due to it being a cubic projection of a sphere, there will also unfortunately be some distortions, but they might not be noticeable depending on your use. Finally, since it is raw data, it doesn’t include some of the post-processing effects, most notably turbulence, so the result tends to be rather blocky.

As an alternative, and to get a more typical rectangular image, you can simply use the elevation visualization layer with one of the map projections, and save that directly to a file. However, you’ll need to change the elevation color scheme first. If you open up ModuleSuites/BasicModuleSuite.lua in a text editor, and scroll down to lines 1691-1693, you’ll see three lines beginning with “if”, “else if”, and “else”. Delete those three lines and replace them with these three lines:

const float minElevation = 0.0;
const float maxElevation = 1.2;
return mix(vec3(0.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0), clamp((elevation - minElevation) / (maxElevation - minElevation), 0, 1));

The numbers assigned to the minElevation and maxElevation variables are just like the range values in the dialog mentioned above. Save the .lua file and then reopen the .wgen file. When you switch to the elevation visualization layer, it should be grayscale. Then it’s just a matter of choosing which map projection you like best, zooming in and centering on a particular region if desired, and going to the Export menu, Current Viewport As Image.

In either case, the image file produced will be full color, not a true grayscale image file, so you may need to use an image editor to resave it as an 8-bit grayscale image, if Wilbur doesn’t handle the full color format.

Comment by Psyckosama — 2016/01/06 @ 00:23

I am extremely interested in this program but before I buy it I’d like to know if there’s plans down the road for more detailed texture mapping features to make it look more realistic (normal, secular, etc) and is there going to be any plan to add effects like an an atmospheric halo or cloud layer?

Comment by Andy Gainey2016/01/06 @ 11:04

@Psyckosama, although I definitely want to add all those features, the truth is that I cannot promise if or when any of them would be added. Development is on hold presently while I work on another related project aimed at game developers.

Some of the texture mapping features you mentioned would be fairly easy to add, except that I first need to significantly improve the terrain generation itself. Attempts so far to improve the appearance of the terrain have met with limited success, because they underlying data simply isn’t very good, elevation in particular. So improving the quality of this underlying generation is a top priority once I return to work on Worldbuilder. Atmosphere and clouds could possibly be somewhat easy features to add also, but so far hasn’t been a priority in my feature wishlist.

Tell you what, I’ll send you an email when I get some of these features added in, and you can evaluate the product again at that time. Thanks for you inquiry!

Comment by Maezar — 2016/01/06 @ 17:00

Hi Andy,

I excitedly purchased WorldBuilder not realizing that it requires OpenGL 3.0. My system supports only OpenGL 2.1

Do you have any advice? Also, is there any hope for a Mac version?

Comment by Andy Gainey2016/01/06 @ 17:16

@Maezar, you might try updating the drivers for whatever graphics device your system has. Nearly all Windows PC hardware for many years supports OpenGL 3.0, but the software is sometimes a bit out of date. Do you happen to know if you have an nVidia, AMD/ATI, or Intel graphics device? Or if you know the make/model of your PC, I could probably find the correct driver download for you.

As for a Mac version, that’s unfortunately not likely any time soon, sorry.

Comment by tkozak — 2016/02/10 @ 09:33

An amazing application! I look forward to seeing what you do with this in future.

Quick question: is there a way to get a biome key/legend? Based on the viewport I can sort of guess at what biomes the different colors represent but there’s some ambiguity. For instance I’d guess the bright yellow is desert and the dark green is forest, but there are a few levels of gradation between these. Is that plains/grassland? Do the tiles have assigned biome values that could be pulled, or are they colored based on combinations of temperature/elevation/wetness and the actual biome needs to be interpreted by a human?

Basically my intended use is to generate a map image for world building and I need to be able to read the map (as a human, not programmatically) to say “this area is rainforest, this is deciduous forest etc.”

Thanks for your work on this.

Comment by Michael Jones — 2016/02/22 @ 22:37

Just got a new graphics card, so I can finally use the 2.2 update to WorldBuilder.

Dude! This is WAY better than the previous version! The worlds that it’s generating are immediately usable for gaming. It’s great.

Feature request : River systems, aquifers, watersheds, lakes, canyons, and other such things.

Since my intention is to use this software for table top role playing games, it’d also be cool to be able to generate underground cavern systems, in the style of “The UnderDark” from Forgotten Realms, but I know that’s pretty far outside the scope of what you’re trying to accomplish.

That being said, I think doing major lakes and rivers shouldn’t be too outside the scope, right?

Comment by Andy Gainey2016/02/25 @ 16:51

@tkozak, The biomes aren’t really well defined at the moment anyway. So first step is to generate more realistic and identifiable biomes to begin with. Then I’d perhaps like to add some customization points for how those biomes are display. A legend would also be ideal, but that’ll go along with my somewhat more distant plans for adding text and images to a map.

Comment by Andy Gainey2016/02/25 @ 16:52

@Michael, that’s awesome to hear that it’s working for you now, and pleasantly so! And yup, hydrological processes ought to be a major part of what I work on next, once I’m done with some other projects I’m working on currently. Caves are indeed beyond any plans I have right now, but that’s partially because I simply never considered them. Thanks for the suggestion, because there’s no telling how those sort of ideas can worm their way into one’s plans! :-)

Comment by tkozak — 2016/02/28 @ 17:31

Andy, Thanks for the reply! I spent some time digging into the code based on your advice above about generating an elevation map. I think I see how you’re doing the “biome” colors as a mix of soil substrate and vegetation. I was able to add an additional render mode for “vegetation density” which is going to be pretty useful already. I’m going to tackle converting your temperature and moisture variables into Whittaker-chart biomes and see if I can get something workable.

Comment by Jack — 2016/03/10 @ 05:06

Hi Andy!
First of all, congrats for your remarkable software! I’ve been playing with the demo so far, messing with the LUA files trying to change the grid thickness.
I’ve managed to do so editing line 1926, but the pattern of the grids become quite irregular. Isn’t possible to have them drawn in a vector style just like the rest of the map?
For the rest, i’d love to play more with shaders and filters, is there a place-forum-thread where people did their own experiments?
I’m just playing with it so far, but i’m gonna buy it as soon as i find a proper use for it! :)


Comment by Zooboss — 2016/05/08 @ 17:43

Hey Andy,

This is an amazing program. I just have a quick question about a feature that I’m not sure whether or not still exists. In the online versions, it’s possible to click on buttons for ‘Movements’ and ‘Air Currents.’ However, these aren’t present in the Worldbuilder desktop application. Was this featured removed from the application for some reason? Or am I just not seeing how to view the air currents?



Comment by Eldresh — 2017/01/25 @ 06:29

Hello! I found out about this website from reddit’s /r/worldbuilding and think that it has a lot of potential for use making world maps for tabletop games (like Dungeons & Dragons). I was interested in maybe buying it once it has a few more features I’m specifically in.

Wanted to back up Zooboss’s questions about the air currents, and also expand it to ask if you planned on including ocean currents as well?

Wish I knew more about programming and scripting because it sounds like what tkozak it doing with the program with the biome stuff is stuff I’d be interested in as well. Mostly because the biome and vegetation information would be the most important (currently missing) feature for me.

Comment by David — 2017/03/21 @ 00:26

Ok, so I just bought this and now I’m staring a a blank white box… how do you start generating with this? :P

Comment by Andy Gainey2017/03/21 @ 13:14

@David, do you at least get the File/Generator/Export/Help menus up top? If so, quickest way to get started is to go File/Open Generator and select one of the .wgen files from the Generators folder.

Also, might want to check Help/Configuration, enable logging, and then examine the Help/Lua Console window after trying to open a generator with logging on. Basic error info should already be showing up in red at the bottom of the main window, if it is an error that is being properly caught. In the configuration, you can also try decreasing the Lua Scripting optimizations to see if that resolves any problems.

Comment by Kurin — 2017/03/24 @ 01:11

Hey there! I just bought this and managed to generate something roughly what I’d like, and would love to export an EXTREMELY high resolution image, but it looks like the export is limited to 16384×16384. Is this just an arbitrary/integer limit, or is there any way to go even higher?

Comment by Andy Gainey2017/03/24 @ 09:53

@Kurin, due to the way I generate the image, 16Kx16K occurs as a limitation of your computer’s graphics card, and is pretty common for modern GPUs.

Comment by Kurin — 2017/03/24 @ 18:31

@Andy Is there any way to get around this limitation short of zooming in and doing one ’tile’ at a time? Even if it exports a few hundred tiles by way of batch-script, that’d be more than good enough for my purposes.

Leave a comment