The Cartographers’ Guild is a forum created by and for map makers and aficionados, a place where every aspect of cartography can be admired, examined, learned, and discussed. Our membership consists of professional designers and artists, hobbyists, and amateurs—all are welcome to join and participate in the quest for cartographic skill and knowledge.

Although we specialize in maps of fictional realms, as commonly used in both novels and games (both tabletop and role-playing), many Guild members are also proficient in historical and contemporary maps. Likewise, we specialize in computer-assisted cartography (such as with GIMP, Adobe apps, Campaign Cartographer, Dundjinni, etc.), although many members here also have interest in maps drafted by hand.

If this is your first visit, be sure to check out the FAQ. You will have to register before you can post or view full size images in the forums.

Nice one, 'zilla! I too would be interested in your heightmap technique.

I would also suggest--depending upon where you are going with this map--that you eliminate/reduce greatly the ocean geography in favor of "flatter" water. Right now I believe it distracts from your wonderful land features.

I will write up a quick tutorial on the heightmap method tonight when I am at home again.

I kept the details on the ocean floors simply because in a world where water breathing spells are easy enough to procure, and elves live in submerged cities, it might be handy to have that information.

Also, the made the heightmap an overlay layer above the flatly painted land and water layers, so I'll have to mask it off to hide it.

I used Photoshop CS, so obviously the GiMP users will need to adjust accordingly.

First a new document, I wanted a roughly earth sized map and at a resolution that I could adjust easily into large regional maps. I went with 10 miles to the pixel and opened a document 2400 by 1200 pixels.

To create the rough terrain layer create a new layer. With the foreground and background colors as black and white, Click Filter > Render > Clouds to create a simple random field. Now Click Filter > Render > Difference Clouds to exaggerate the contrast. I used Difference Clouds three additional times (Ctrl+F) to get the nice ribbon like areas that formed my mountain ridges.

Next outline the general landmasses, similar to the "Not So Random Coastlines" tutorial. I could draw them with big fuzzy white brush but I used a second layer and selected only about 1/4 of it's size. Use Filter > Render >Clouds again to generate some rough light and dark areas and a quick Gaussian Blur to smooth it out. Then I used the Transform (Ctrl+T) to resize the selected area until it covered my entire image. I then used a curves adjustment to get lots of pure white areas and pure black ones, with the fuzzy gray between them.

Whether I drew my rough landmasses or simply generated clouds, I had to meld the two layers. The new layer with the general landmasses should have it's blending mode set to "Screen" and it's opacity to about 60%.

In order to avoid islands and continents that hit the edge of my map, I added a third layer. Set it's Blending Mode to Multiply and Hit CTRL+A to select the entire image. Click Select > Modify > Contract and bring the selection in about 30 pixels from the border. Click Select > Feather with 25 px to soften the edges. Click Select > Invert to that you only have the border around the edges selected. And finally click Edit > Fill and select Black. This will create a faded black edge around the image to make sure none of your landmasses fall off the edge of the world. You can edit this with a further blur or even paint out areas that you know you want to be oceans.

When I retraced my steps in writing this tutorial, I had this. (At 25% size for bandwidth's sake.)

And my Layers palette looked like this.

Now the fun part!

With the pure white as the foreground color click Select > Color Range and set the fuzziness to about 180 or so. You should get a selection that closely matches the lighter areas of the image. Click Select > Save Selection and name it something obvious, like "Height map".

Create a new layer and fill it with a blue for your oceans. Create another new layer and load the Height map selection. I like to Expand then contract the selection to eliminate the fuzzy areas in the middle. Don't do a lot of manual painting on the layer mask as it will lead to areas not correlating to the height map later. Click Layer > Add Layer Mask > Reveal Selection. This will give you a layer mask to isolate the landmasses.

Now to make the height map itself. Create a new layer above all of the existing layers. Fill it with 50% gray. Click Filter > Render > Lighting Effects. I like to use a directional light so that all my shaded relief mountains are shaded in the same direction.

Now set the blending mode on this layer to overlay. Presto, you got an entire world drawn in shaded relief, and a grayscale height map to determine elevation later, should it ever be necessary. (Exactly how high is this mountain ridge?)

Here's mine so far.

I think from this point your own experience and style will show you how to proceed. I used another layer with the same layer mask as the landmasses layer and manually painted in the darker areas for heavily wooded terrain. Another layer for the deserts and a last one with the mask flipped and modified slightly to add a darker tone to the deeper oceans.

Superb! Thank you, Glenzilla. I will give this a go when I get home tonight. In terms of colouring the map, I intend to use this tutorial to get hypsometric tinting, so the different altitudes of terrain really stand out.

If you add into the mix RobA's tutorial in the tutorial section on making a heightfield in Gimp , it looks now that by combining these three methods you can pretty much get a world map in which you can determine the rough continent size and shape and location of the mountains AND hyspometrically tint the result as well - which in my book is pretty cool!

For me the elevation isn't as important when describing the area on the map as much as the vegetation and relative roughness of the terrain. So moving the elevation data that I already created in the hightmap is easy to do.

When you tinker with this, remember that you can simply select a single pixel on the upper layers and then hide them to reveal the height map. And then the brightness/grayscale value of the pixel will denote the elevation of that point on the map.

For myself each step in the 256 steps of the grayscale represent's about 50 ft in elevation.

I'll post the PSD file if you want to tinker with it directly.

Last edited by GlennZilla; 11-14-2007 at 12:24 PM.
Reason: Added last line.