Sunday, July 17, 2016

Time for some Triangles

Today I bring you a discussion about this map, which shows the same section of my world as this post, but with the newest addition I've been working on this week:

If you can't see it right now, here's what I've done: I've subdivided each of my game world hexes into triangles. Six equal triangles. This is a stepping stone toward greater detail and variation in the design of my world. I could go on from here to have intra-hex elevation or climate variation, rework the distance algorithm for resource pricing to get more exact numbers, or do something else entirely.

Let's go for that third option. One other example usage is that, with the underpinnings of geographic separation firmly in place, I am now working to implement a system somewhat like the interrelated systems of hex groups and wilderness features that Alexis describes in these and other posts:

The idea (for my system) is that we can divide the six triangles into civilized and wilderness (broadly speaking), and then generate a combination of triangles for each map hex. This can then be used as one avenue for determination of such hex details as infrastructure, the presence of monstrous (non-human) civilization, quality of roads, and all kinds of other things. The exact configuration for each hex would be determined randomly, perhaps on a pair of dice.

Do remember that each hex measures 20 miles (from one face to another), and thus there are about 346 square miles per hexagon. Since each triangle is 1/6th of the hexagon's area, each triangle thus represents a little less than 58 square miles, with each triangle being ten miles "high" (base to tip). A single triangle, full of wilderness, is quite an area to explore even for a large group. For a typical single- or double-digits party of characters and their retainers? It would take a long time. Not to mention how difficult it would be to have any idea whatsoever that other groups were present in some other part of the hex. An army could easily pass through the triangle the party was in, at a distance of 40 miles, and the party would be none the wiser.

Let's go over the possible configurations of triangles without yet assigning any meanings to the particular arrangements. (I have to think about that some more, and consider what kinds of details I want to be produced for my world without my having to pull them from my butt.)

First we see type 1 and type 2 hexes.

A type 1 hex has only wilderness areas; any civilization here is non-human. Type 2 has one civilized hex. That hex could be any of the six hexes, which is why I say there are 6 rotated versions of this type. Thus, adding type 1 and 2 together, so far there are 7 types of hex.

Type 3 has two civilized hexes. They might be right next to each other, separated by one hex, or separated by two hexes. Note that the rotation figures given above (a total of 15) would be increased (6 more of the second kind and 3 more of the third kind) if we decided that it mattered which triangle was where. This would be the case if, for example, there was some feature which was placed only on the civilized triangle clockwise from the lone wilderness triangle. I'll disregard this kind of permutation for the rest of the post, since it depends on use and placement of hex features, which are not the focus of discussion for today.

After type 3, total arrangements are at 22.

Type 4 has three civilized sections. There are 20 possible arrangements, bringing our total to 42.

Finally, types 5, 6, and 7 are the same as types 3, 2, and 1, but with the wilderness and civilized triangles reversed. This adds another 22 triangle arrangements, bringing the final total to 64 different arrangements of triangles, each spelling out a different set of possibilities and probabilities. Does this hex contain a monastery? Is there abundant game in this area? Is the nearby wood home to a druid? Perhaps an area that's wild enough is guaranteed to contain a small dungeon, and a type-1 has a chance of containing a larger, more sinister location.

I'm planning to use a 2d6 roll to choose between each kind of hex, with further random rolls to determine the exact realization of each hex type. For example, if the 2d6 roll gives a type 2, then there's a further 1d6 roll to figure out which of the triangles is civilized. (It's all going to be automated, of course.)

OK. You've seen the triangles above, but where is the final product, with all triangles filled in as civilized or as wilderness on my hex map? Well, I haven't finished implementing it yet. I've only just gotten the triangles working, and this final, successful attempt to do that is my third such attempt in total over the last few months. (My earliest notes on this way of tackling sub-hex units are from around April.) Finally nailed it this week. Anyway: once I've got the triangle arrangements working, I'll make a continuation post.

Let me finish up here by saying that there's no reason we couldn't layer these triangular sections, either! Perhaps we go over each hex, rolling one set of triangles to determine the layout of its natural resources, and another set to determine its high-level inhabitants and their holdings, and another to determine if this hex has any particularly awe-inspiring natural areas -- perhaps there's an XP bonus for visiting them, and spending a day appreciating the environment. And then of course there's the whole business of using civilization/wilderness patterns to determine salient features: inns, quarries, monasteries, royal hunting grounds, ponds, cliffs, crossroads, bridges, fairgrounds, signposts, ravines ...


  1. I'm assuming you're using triangles as opposed to smaller hexes because of the programming limits, correct?

    Ideally, I envision a program that tracks distance based on the details on the map, as opposed to hexes, or that can switch between three or four hex scales while maintaining the data integrity of each scale.

    1. I used triangles for this work because, unlike hexagons, triangles can evenly subdivide a larger hexagon with no overlap and no leftover space.

      I too envision that the base layer of information should not be tied to any one "chunk" size. I'd rather have everything in lat/long/elevation, and chunk up into squares or hexes or whatever depending on the current view selected.