Hexagonal Maps in zMapper


In order to draw a hexagonal map, you need to be able to change the shape of the rooms from square to hexagons.  But you also need to adjust various spacing parameters.  On a Hex map, the horizontal spacing from one room center to another is different than the vertical spacing from one room to another.  For those math wizards out there, the vertical spacing is sqrt(3)/2 times the horizontal spacing.

Fortunately, zMapper allows you to change this spacing.  In the Edit/Options, you can set the X and Y spacing for the map.  In our example, we choose 120 for the X spacing (a nice divisible number), which results in a Y spacing of 120*sqrt(3)/2 = 104.



Next, zMapper allows you to change the offsets for the various directions.  In the case of a Hex map, we want the East and West directions to move normally right and left.  But moving NorthEast should only take us 50% of the spacing in the X direction, and the full 100% spacing in the Y direction.  Hex maps don't have North and South, so we won't worry about changing those directions.

The Direction spacing is used when creating new rooms on the map, either by movement within zMUD, or within zMapper itself when using the keypad.

A Hexagonal Grid

Next, we need to define the shape of our hexagonal rooms.  So, we select a new room definition, name it "HexRoom" and open the Shape editor and draw a hexagon:

Drawing the top and bottom of the hexagon outside the normal room square allows the hexagons to match up properly on the map.

OK, now we are ready to draw!  We select the new "HexRoom" definition in our Room palette, then use the Add Room tool to drop the first room on the map.  Then, with the Keyboard Creation turned on, we start pressing the '9' and '3' keys on the keypad to move NE, then SE, drawing 2 rows of hexagons.  As we are creating the rooms, zMapper is creating the proper links between the rooms as we'll soon see.  After drawing the two rows, we then use the '4' key to move west on the row connecting the rooms with their E/W links.  We keep doing this until we have a nice grid of hexagons on the screen, like shown below:

Just to show that these rooms really are connected with links, we go and drag a couple of rooms away from each other in the lower-left part of the grid:

The link lines are a bit ugly, but they basically show how each room is connected to each other.  Since these rooms are properly connected, we'll be able to load this map into zMUD and use Speedwalking to find a shortest path from one room to another.

Multiple Room Types

OK, now it's time to add some details to our map.  First, let's define a new room type to represent "Water" hexes.  We right-click on the Room Palette and select New:

We'll name this room "Water".  The Shape Editor will then open.  We go and double-click on our HexRoom room definition so that we can copy and paste the hexagon into the Water shape to save time.  You can have as many Shape and Bitmap editor windows open as you want and can freely copy and paste objects between then.  After pasting the hexagon, we then select the Fill Color and change it from "None" to a nice blue color.  Then we close the Shape Editor to accept the changes.

To apply the new room definition to our map, we select a line of rooms that we want to represent our water.  When all of the rooms we want are selected (you can Shift-click to select multiple rooms on the map), then we right-click on the Water definition in the Room Palette and select the Apply to Selected command to apply the new room definition to our selected rooms.  Here is how the map looks now:

Adding Bitmap Images

OK, now, let's add a little castle picture to one of our hexes.  We right-click on a room and select Edit Bitmap.  Each room can have both a bitmap and a Shape, along with the bitmap and shape that are part of the room's definition.

When the Bitmap Editor opens, it defaults to a small 16x16 pixel image.  We'll leave that at the default and draw a little castle.  The pixel in the lower-right corner is used to set the transparent color for the bitmap (that's a "Windows thing").  Notice the small preview image of the bitmap in the upper right part of the bitmap editor.

We close the Bitmap Editor to save the image (or we could just click the Apply button in the editor), and here is the bitmap on our Hex map:

Notice that bitmaps are *always* draw the same size based upon the pixel size of the image.  If you zoom the map image, it looks like this:

Notice that the castle is still the same size...it doesn't scale as your zoom in and out on the map.  Because of this, bitmap images are not always the correct choice.  Sometimes you'll want to use the Shape Editor instead to create a scaleable image.

More Tile Shapes

To see how shapes can scale, let's create another terrain type for our little map.  We'll right-click on the Room Palette and create a new definition called "Mountains".  This will open the shape editor.  Once again, we'll copy/paste our hexagon and then color it brown and draw some lines on it to make it look like some hills or mountains (ok, so I'm NO artist!) :

Back on our map, we'll select some hexes near our castle and then use the Apply to Selected command to change the room type to our new Mountain type:

The lines on the mountains will properly scale as the map zooms in and out.  Also notice that when a room is selected, all of the lines in the room are colored red.

More Room Shapes

Instead of creating a custom room type, lets just change the shape of one of our existing rooms.  We right-click on a room and select the Edit Shape command.  The Shape Editor opens.  Let's draw a line to represent a river:

Click the Apply button and here is what it looks like on the map:

The room with the river still has the normal room definition of "HexRoom".  But in addition to the room shape from the definition (the hexagon), we've been able to add our own additional shape to this one room.

More Bitmaps

Let's continue by adding an additional bitmap to our "river" room.  Right-click the same room and select Edit Bitmap, just like we did for the castle.  This time we will draw a little tower:

The pink color is just representing the transparent color.  We click Apply and see the result on our map:


That's all there is to it.  We could continue adding more Room Definitions, then add more icons, titles, etc until we had a complete game map.  Because of the flexibility in zMapper, you can create almost any map you want using these tools.  It is one of the only map creation programs that allows you to easily change the spacing and directions used for the map, allowing easy hexagonal map creation.

And remember, this isn't just some pretty picture like you might create in a Paint program...this is a fully functional zMUD map.  You can load this map into zMUD and speedwalk between locations, script various actions, export the map into your area-builder tools, etc.  No other program provides this kind of power and flexibility with a simple user interface.