I've recently been experimenting with a simple Voxel-based 3d engine (think Minecraft) which uses heightmaps to define terrain in the following format:


Does anyone know of the best software for producing these kind of maps? Preferably with the ability to define a texturemap also. Are terrogen and picogen the only real alternatives?


Rolling your own is nice, since then you can just create maps, without needing to supply an image, or at least make the image optional. I use Perlin noise in my voxel game for terrain generation. It works pretty well, but is fairly plain compared to the maps that Minecraft produces. I imagine Notch does a lot more than just Perlin noise.

In my game I use 2D Perlin noise to generate the basic flow of the landscape. Then do some carving with another grid of 2D Perlin noise to make a more rugged look. Then I carve tunnels using a wandering path through the terrain.

Perlin noise is a pretty standard way to go:


Then this guy Paul Martz has an application that makes such maps, and the source code for doing so.


There's also a nice article in Game Developer that goes into procedurally generating voxel terrain. It goes into 2D height maps, and 3D noise for generating maps.

There is an article in the April issue on page 21 (Creator of Worlds) That's rather good, however it looks like it's paid access if you don't already have a subscription.


World Machine


World Machine has a non-commercial free version which only has a few limitations compared to the commercial version. I can't speak highly enough about this software.

Produces both a heightmap and texturemap procedurally.

I used it to create the island and texturemap for this techdemo

USC GamePipe Island Tech Demo "Paradise"

Forget what you know about editing terrains. Unlike many other terrain editors that function like paint programs, World Machine operates on a procedural level. A World Machine world file is not the terrain, but the steps that creates the terrain. This is the source of both its power and its complexity.

When working in World Machine, your role is to determine the overall appearance and characteristics of the terrain, and then allow the generators and effects to create and detail the appearance of your world. This way of working and thinking at a higher level takes some getting used to, but the rewards are huge: You can create impressive terrains with relatively little work, and once you have created a terrain that you like, you can use the same world file with different random "seeds" to produce a different terrain with the same feel.


I'm a little confused about what you're trying to do. If you represent your terrain as a single 2D heightmap, then you won't be able to form the same kind of terrain as minecraft, as it is a 3D voxel terrain (i.e. arbitrary placement of cubes anywhere in 3D).

One benefit of voxels is that you can have overhangs and tunnels and floating blocks, which are all impossible with a heightmap like you describe.

In terms of minecraft, a single 2D texture can only provide you with information about a single layer of blocks.

If you really do want to create a 2D heightmap, Vue has excellent tools for doing so. (Although it is quite expensive.)

If you want to generate an interesting 3D terrain from scratch consider this often quoted GPU Gems article: Generating Complex Procedural Terrains Using the GPU, and simply ignore all the hard parts of generating a mesh from the voxels, and just use the voxel generation method by itself (just a combination of trig functions).

Texture colors can be generated based on slope and height.

  • 1
    \$\begingroup\$ Incorrect. A single 2D height map has 3 dimensions of information, each pixel has an X, a Y and a color. So for example, when the color is white the height of that area is 0, when the color is black the height is the map maximum, everywhere in between is a different height. \$\endgroup\$ – MichaelHouse May 13 '11 at 16:55
  • 2
    \$\begingroup\$ I didn't say that a heightmap doesn't have 3 pieces of information. Read my answer again. I said that all you can represent with a heightmap is a single layer of blocks laid out in 3D. To have 10 layers of blocks, you would need 10 height maps. This is why games like minecraft do not use heightmaps to represent the data. \$\endgroup\$ – Olhovsky May 13 '11 at 16:57
  • \$\begingroup\$ You can have a look at my own procedural terrain here if you want to be convinced that I'm not just making things up: olhovsky.com/category/dbp2011 \$\endgroup\$ – Olhovsky May 13 '11 at 16:58
  • 1
    \$\begingroup\$ A 3D texture contains 4 dimensions of information, a position in 3D space AND a color. \$\endgroup\$ – MichaelHouse May 13 '11 at 17:05
  • 1
    \$\begingroup\$ You don't lose the benefits of voxels. Sure, you're not utilizing all the benefits (when using a single height map), but you're not losing any. Clearly height maps are not the ONLY answer, further deformations, tunnel carving, etc. are required. \$\endgroup\$ – MichaelHouse May 13 '11 at 17:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.