Procedural Cartography

I’ve made some more progress on the map system I’ve been playing with. I settled on a system governed by two binary variables. The two variables refer to the presence of the smaller three hex and one hex spaces on a given tile. This gives you four categories of tiles. Tiles with neither, tiles with both and tiles with one or the other. This system allows you to layer information onto the map rather than having discrete zones like I described in my previous post. In this case, I am envisioning the three hex spaces as representing trees and the one hex spaces as impassable rocks.

To generate the map, I first generate a pattern of rock formations within a hex grid. Then I do the same with the trees, placing tracts of trees onto the hex grid. This results in a hex grid where each tile can be open or contain rocks, trees or both. In this case, there is no interaction between the tree and rock layers, but I can envision a more sophisticated system which introduces interaction between layers.

Based on the intended contents of each tile, an appropriate tile is selected from the tile set and placed at those coordinates with a random orientation. I developed three possible tiles for each category, for a total of 12 tiles in the set. Since each tile can be oriented six different ways, there are 72 variations of the tiles which can be present in a map. Despite the high number of possible permutations, the map is still generated from very few distinct pieces. This results in a very abstract, low resolution map that is very reminiscent of tabletop games.

Hex Map

I’ve started generating some random maps using the hex tile set in my last post. The map below uses only 3 tiles from the set, placed and rotated randomly. Once I add more of the tiles in, I’m going to group them together into general types. For example I might have 3 tiles which can be used for open terrain, 3 for forested areas and 3 for hills. By doing this, I’m hoping to get less homogenous results as well as create some defined features and regions on the map that span multiple tiles.

Hex Space

I’ve always been interested in rule based systems, and lately I’ve been reading a lot about game design. I’ve found it far more interesting to hear the designer’s thought process behind the design of a game than to actually play the game itself. This has recently led me to listening to The Game Design Roundtable, a game design podcast hosted by Dirk Knemeyer & Jon Shafer.

On a recent episode, Dirk Knemeyer talked about one of the projects he’s been working on called War Stories. The goal of the project is to develop a tabletop strategy game that streamlines and simplifies the process of playing. Most such games require lots of charts, tables and reference materials. The design team wanted to get rid of as much of these extraneous parts as possible, and they did this by making the few pieces they did use more intelligent.

My personal favorite result of this process is the way the space of the game, the map, works. The spaces on the map vary in size proportionally with how easy that terrain is to cross. So easily crossed terrain is very large and hard to cross terrain is small. This allows you to simplify movement by setting a piece’s movement ability to a fixed number of spaces. The movement modifiers present in similar games are now simply inherent to the map. No math required!

I really like the idea and I spent some time exploring it myself. You can see some of the results below. In this example, each map piece is made up of 19 hexes and contains either 3 or 5 spaces. Each space contains either 1, 3, 5, 7 or 9 hexes. These rules allowed me to narrow the number of possible configurations. Each column is one of 9 possible permutations of number and size of spaces within these constraints. There are more possible configurations in each category. I chose ones I felt were most distinct and interesting, generally avoiding symmetry where possible to make them feel more organic.