Monday, June 2, 2025

A is for Alignment

Here is the first in my A to Z series of posts about my Advanced Dungeons & Dragons campaign. This is a campaign I started in the summer of 2023. We're playing this game very closely to by-the-book. The book, or rather books, being Players Handbook, first edition, 6th printing, January 1980 and Dungeon Masters Guide, revised edition, December 1979. Those being the copies I've owned since 1982 when I started (incorrectly) playing this version of the game. The only rule broken is that in our game all characters use the male values for ability score minimum and maximum on pp. 9 & 15 of the PH regardless of sex. We omit the optional rules for weapon versus armor type and for psionics. We have added half a dozen supplemental rules.

Alignment is one of my least favorite rules systems within AD&D. For quite a few years I simply dropped it from the game, mostly because I did not want to interfere with player agency or tell players that they weren't playing their characters "right." Who was I to say, and why should I care anyway? I still don't like it, but it's not an optional rule and we aim to play by-the-book.

About a year into this campaign I was inspired to re-read the rules cover to cover and was shocked to realize that I had been playing the game incorrectly for over 40 years. A number of rules surprised me completely. Rules I didn't remember ever reading, using in anyone else's game, or even hearing of. I really was gobsmacked by this. I'll try to make a point of highlighting those in this series.

Alignment is one of those rules that has some surprising pieces that I just never realized. For example, "Whether or not the character actively professes some deity, he or she will have an alignment and serve one or more deities of this general alignment indirectly and unbeknownst to the character."

Each player character will serve one or more deities indirectly and unbeknownst to the character. I never caught that before. As a referee, I had better figure out who these deities are and then not tell anyone. Which I have. There are 17 of them.

The rules require the referee to track alignment "drift" as characters act in ways different from their professed alignment. I do this and share it with the players after each session. I'm breaking the rules to do so, however, as "While players will know that they must decide upon an alignment, for example, you, the DM, will further know that each and every action they take will be mentally recorded by you; and at adventure’s end you will secretly note any player character movement on the alignment graph."

That's one of several places where Gygax directs the referee to hide rules from the players, and I cannot abide that. Imagine yourself playing an unfamiliar board game with friends, one of whom knew the game very well. Partway through the game, after you make a certain move, the one who knows the game well tells you about a rule which significantly sets back your progress toward winning the game. You can't take your move back, and you would have made a number of other decisions during the course of the game differently had you known about that rule from the start. Would you like to continue playing games with that friend? That happens a few more times as you play because the rules say that not all of the rules should be known to all of the participants until they make a wrong move. Would you like to play that game again? I would not. How can one learn skillful play if the rules of the game are hidden? Why hide a rule that will be revealed later by a "gotcha" moment?

Not only do I share my observations about character alignment, but I articulate and share my guidelines for what kinds of actions cause drift one way or another, and how much, for characters of one alignment or another. I solicit feedback from my players on this and I entertain objections to my perception of alignment drift. So far I've only had one objection and the player's counter-point was so well thought-out that I had to agree and modified my drift chart accordingly.

Details about the setting, of course, can be hidden, and apparently the true gods of the AD&D universe are. In our campaign, set in a fantasy version of medieval Ireland, the characters and players know about the Christian gods, whom clerics and paladins worship, and the many Celtic pagan gods, whom the druids and rangers revere. The characters think they serve those gods, but those aren't the real gods. The real gods are my 17 mystery gods forever unknown to the players. They don't even know there are 17 of them unless they read this.

An A to Z Series

It's been quite some time, more than two years, since I last wrote anything here. A big part of the reason for that is that I've been playing a game using the geography and infrastructure and population distribution across that I worked out in the previous posts since then.

JB over at B/X Blackrazor has inspired me to write again and I'm taking the easy path of following his lead for the next 26 posts. As of this writing he has written his A and B posts in a month-long (well 26 days, I guess), daily series about his campaign world. A world that he's been running since 2020. I've read A. I will read each of his before writing mine which will be on the same topic as his, but related of course to my game and campaign world rather than his.

To understate the obvious, I am neither as skilled nor as prolific a writer as JB. It's very likely I will lag his posts quite distantly in both quality and speed of production.

Nevertheless, here I go.

 

Tuesday, January 31, 2023

Infrastructure Experimentation

One of the nice things about calculating the distribution of infrastructure automatically is that I can try varying the parameters many different ways and seeing the effects quite quickly. It also means that I occasionally screw things up as I did a few weeks ago when I somehow stopped propagating infrastructure across the 18-mile hexes, leaving only the infrastructure points contributed by the settlements within them to define the 6-mile hex types. It created a very wild island which seemed like what I was looking for, though once I started looking into trade routes I realized my error.

This post is part of a series describing the procedural distribution of infrastructure and facilities in a pseudo-medieval TTRPG setting. If the reader hasn't read the prior posts, may I suggest starting here and reading in advancing chronological order?

This is what the result I had shown a few weeks ago should have looked like using a 12-mile radius or 120m elevation change to halve the infrastructure points propagated from a settlement's hex to others.

I'm interested to see what other parameter choices do here, so in this short post I'll run the program with a variety of these and show the results.

Here is the result when the influence of elevation is increased so that it takes only 60m of change to halve the infrastructure points or the same 12 miles of distance.


Going in the other direction, that is increasing the influence of distance instead of elevation change, where 120m of elevation or only 9 miles of distance halves the infrastructure.

Further restricting infrastructure to halve at only 6 miles or 90m of elevation change makes civilization sparser still.

Even this level of restriction on civilization is not wildly different from the 12-mile/120m configuration, but it introduces just a little more crossing of the wilds to get between some of the settlements and definitely has a more dangerous feel.

All of this playing with numbers is silly, if it isn't clear what it's really representing. What this comes down to is travel time by foot since the general populace is largely restricted to that mode of transport for routine and emergency travel. The notable settlements are the largest, safest bastions of civilization on the island. The places people would escape the countryside for in the case of an invasion, perhaps.

On level, easy ground a peasant could probably make 12 miles in a 4 hour period if he didn't try to haul too much. Scottish mountaineer William Naismith devised a rule for planning hiking expeditions which indicates one should allow 1 hour for every 3 miles on the map, and an additional hour for every 2000' of elevation gain. There have been refinements and embellishments to the rule account for both uphill and downhill speeds as well as the fitness of the hiker and overall duration. After going down a few rabbit holes in this vein, I finally concluded that regardless of what figures I use for infrastructure "half-life," the ratio of distance to elevation change should be 3 miles to 1000' in order for those factors to influence infrastructure spread accounting for animal-powered machines being used rather than hikers in most cases. One might make the argument that lower-level infrastructure, like trails, which can handle elevation change more easily than wheeled vehicles could spread at a less elevation-sensitive rate and more distance-sensitive rate, but that level of care exceeds the precision of how infrastructure points will be applied.

Finally, here is where all this experimentation has landed. This is a population density view with the notable settlements shown.




 



Tuesday, January 10, 2023

Infrastructure Details

This post is part of a series describing the procedural distribution of infrastructure and facilities in a pseudo-medieval TTRPG setting. If the reader hasn't read the prior posts, may I suggest starting here and reading in advancing chronological order?

Having settled on how to distribute infrastructure points spreading from the notable population centers, the next step I'm taking (note that Alexis determines routes next, but I'm deferring that step for the moment) is to determine the specific facilities supported or provided by those. Following Alexis' method that requires determining whether each 6-mile hex is predominantly being cultivated or mined. Or is simply wild.

The hex type solves most of that question. Any type 8 hex is simply wild rather than exploited. Hexes of types 1 to 4 are highly developed and therefore classified as cultivated. It's only hexes of type 5, 6, and 7 which require more careful examination. The criteria for a mined hex is that those which "occur in mountains and other rocky places that are plainly non-arable are designated as mined." Since I'm making this determination automatically, I'll need to come up with a way to programmatically determine "plainly non-arable." In the case I'm working with here, the entire land is wet enough to be arable, but it's a question of soil quality and till-ability that I need to answer. I don't have soil quality data readily available and I think that examining contour lines to make a determination about the hilliness of the land might be an adequate criterion.

After settling on a definition for "too hilly to comfortably farm" of more than 30 10m contour lines occurring within the hex and an elevation difference of greater than 300m between the highest and the lowest, the program has produced what looks like a reasonable designation for the hexes between wild, cultivated, and mined.

At the same time, I've had the program calculate the "number of hammers," an indication of the facilities present in the hex when considered in conjunction with the hex type. This required, besides knowing whether the hex is predominantly cultivated or mined, whether a river of sufficient size passes through the hex, and whether any notable settlements are situated within the hex.

Likewise, I added the computation for the "number of coins," describing the level and types of commercial activity occurring in the hex, again taken in conjunction with the hex type. This calculation examines another type of hex exploitation type besides mining and cultivating: oasis. I've taken the liberty of ignoring this for the moment since that type of exploitation does not occur at all in the bit of land I'm working on at the moment. I've also forgone the coastal coin bonus for the moment.

Here's a section of the results. The large, red hex outlines are the 18-mile hexes. The six-mile hexes are labelled with Roman numerals indicating their type (except VIII is ignored), the number of hammers in the hex is indicated by the red number, coins by the yellow, and whether the hex is wild, cultivated, or mined by the white, green, or orange background, respectively. The contour lines and rivers are included for reference.

An overview of the entire island shows how few hexes are designated as predominantly mined and that these are all at the edges of civilized territory.

A note about my technique. The reader has no doubt noticed that the pictures of maps I include here vary in style and appearance. I'm able to show this geographic information in a variety of ways very easily because I'm working with a vector representation of the data. That is to say, these hexes are not stored as dots of colors in a Cartesian plane, but as geometry described in geodetic coordinates on Earth's oblate spheroid. The hex types, hammer counts, population, and so on are data associated with each settlement point, or each 18-mile hex, or each 6-mile hex and I can easily swap which bits of information are used to colorize, symbolize, and label these entities. It also makes it extremely easy for me to analyze and manipulate the information. Most of this manipulation I do in programs that I write in C# using shape file manipulation code that I have written for myself. For the drawing, however, and some of the data conversion tasks (like deriving contour lines from the USGS SRTM data) I use QGIS.

Still yet to do is adding in the coastal coin bonus calculation, calculating advanced facilities for settlements, listing the specific facilities, designating non-notable settlements, and describing the routes and roads.

Wednesday, December 21, 2022

Infrastructure Development Re-examined

This post is part of a series describing the procedural distribution of infrastructure and facilities in a pseudo-medieval TTRPG setting. If the reader hasn't read the prior posts, may I suggest starting here and reading in advancing chronological order?

This is a short one, as I just re-visit earlier work after some experimentation.

In the previous post I mentioned that the population implied by the level of infrastructure development was out of line with the desired population total. Specifically, I wanted the population total to be approximately 800 thousand but the 5,761 infrastructure points distributed by this technique implied, with that of the notable settlements, a population of only about 440 thousand. The solution I settled upon was to normalize the infrastructure points after their distribution amongst the 18-mile hexes based on the target population over the implied population. This had the effect of scaling the infrastructure points up to 12,163, implying a population of about 791 thousand.

Below is an image showing the most highly developed, Type-1, hexes in white, the completely undeveloped are black with no outline, and the shades between indicate intermediate levels of development with the lighter being more developed. The light blue pentagons represent the most populous settlements, those over 4,000, the red diamonds are settlements with 1,000 or more, but fewer than 4,000, and the grey circles are smaller settlements which qualified as "notable."

For reference the terrain is shown below.

I think that this has worked well and the answers have an intuitively correct feel to them. I have found anomalies at the 6-mile hexes on 18-mile hex intersections where they have been allowed to keep higher infrastructure totals than I would have allowed them manually because their higher total clearly should have been attributed to a settlement within one of the 18-mile hexes but was not because the program is operating with the myopic constraint of looking at each 18-mile hex group independently. Conveniently, the anomaly had a counter example nearby illustrating why those intersection hexes are exempt from the infrastructure point swapping step in first place.

The thing is though, this method has produced a picture of civilization that is merely punctuated by small areas of wildness and that's not as dangerous, superstitious, and parochial as I want my world to be. By shortening the "distance half life" from 18 miles to 12 miles I achieved what I think is a categorically different result.


Here humanity and the wild hold more equal sway. Humanity can be seen to have gained and lost ground against the wild. This is the sort of world I want my players to face.

Monday, December 19, 2022

Infrastructure Details at the Six-Mile Hex Scale

This post is part of a series describing the procedural distribution of infrastructure and facilities in a pseudo-medieval TTRPG setting. If the reader hasn't read the prior posts, may I suggest starting here and reading in advancing chronological order?

There's an aspect of Alexis' infrastructure distribution system that has remained a niggling worry for me and following this step I will see whether that concern was justified. The worry is this: infrastructure "points" distributed at 18-mile hex level (or 20-mile, strictly following his technique) are based on population, but only loosely in that the points aren't "conserved." What I mean is that the initial "seeding" of the infrastructure points has a direct correlation to population, but the "spreading influence" part can result in different total numbers depending on the terrain and thereby breaks the correlation with the population total. As long as these are treated as relative numbers rather than absolute, that's no problem either, however they do have an absolute meaning to the 6-miles hexes which thence have specific population meanings when there isn't a settlement within the 6-mile hex. I think that this will end up no jiving with the starting population figure. Maybe it won't be significant, maybe the "play" in the 6-mile hex type population implications is large enough to accommodate a wide range of terrain effects on the infrastructure. That's the disconnect in my understanding of how Alexis intended the system to work and what I think it will end up doing, anyway.

This is the first step where there will be randomization involved in building the data behind these maps, so we could rerun this step several times and get different results each time although I will employ a randomization seed in the program I write to do this so that I can repeat for specific results when desired (typically to troubleshoot misbehavior).

The technique includes mapping steps as well as the data generation part in which I'm interested. I'll skip directly to the "Hex Type" section of the procedure. Hex type is a categorical description of the level of civilized development to be found in the 6-mile hex, where type-8 is complete wilderness and type-1 is highly developed. The infrastructure points of the 18-mile hex are randomly distributed to the 7 hexes entirely contained by it to designate the level of development within each of these smaller hexes. It takes 64 points to make a type-1 hex, 32 to make a type-2, 16 for type-3, 8 for type-4, 4 for type-5, 2 for type-6, and 1 for type-7. Any settlements within the 18-mile hex, however, get the most highly developed designations automatically. The technique leaves undesignated 6-mile hexes at each of the 18-mile hex's vertices where only a third of the area falls within the 18-mile hex. These "gap" hexes are handled handled after their surrounding hexes have all been designated whereupon the average of those surrounding hexes is used to set their value, with fractional results providing a proportional chance of landing at the integral values on either side of the fractional value.

Because I'm doing the entire domain at once automatically, I'll be making a minor modification. I won't leave any gaps. Instead, as each 18-mile hex distributes its points, the fractional hexes will have a 1/3 chance of getting a point as well. Only the 7 hexes entirely contained by it, however, may be used in the type-swapping step to ensure that settlements within the 18-mile hex get the most civilized hex type available there.

I ignored whether or not any landmass actually existed in the 18-mile hexes while propagating the infrastructure points, but at the 6-mile level of detail the numbers have specific meaning and so those hexes without any land to develop will not get any infrastructure points. I had a vague notion that the number in 18-mile sea hexes might lend some sense to port traffic or piracy, and that is still at the back of my mind, but at the 6-mile hex level this doesn't seem helpful. There is a question in my mind as to whether the infrastructure points at the 18-mile scale might be prorated to the number of 6-mile hexes of the 9 within it that have at least some land. On one hand, concentrating infrastructure at the coastline seems like it would happen naturally from this, but on the other some hyper-concentrated development could result. For the first pass, I'll go with my instinct and prorate the 18-mile hexes' points before distributing them.

The end result in the most civilized part of the domain came out like this. Each six-mile hex shows the hex type as a Roman numeral and the specific infrastructure points as a smaller Arabic below it. I'm unsure about the level of civilization. Intuitively it seems high, but I won't make a judgement just on that basis. First I want to analyze what all this civilization adds up to in terms of population totals.

Fortunately I can run this entire process all the way through in under five minutes, so experimentation won't be terribly painful.

At the start of this exercise the 18-mile hexes were "seeded" with 2,831 infrastructure points distributed according to the total population of the notable settlements within each of those hexes. After being propagating points outward from these hexes to influence the development of civilization outside those settlement, there were 36,105 infrastructure points. Many of those were in the ocean however, and after dropping points proportional to the number of non-land 6-mile hexes, the total came back down to 5,761.

At this time Alexis has defined the Type-7 hex, but not the more civilized on his Wiki, so I have had to make assumptions. The Type-7 hex has just 1 infrastructure point and a population of 50 - 80, averaging 65. Using the final infrastructure points as a basis for calculating population, however, the implied population outside the notable settlements is somewhere between 288,050 and 460,880. The notable settlements themselves add 63,583 so that is about half of the population I wanted to end up with.

I think what I'd like to do is normalize the infrastructure points at the 18-mile hex level after the propagation step. Since the final population is intended to be about 735,000 outside the notable settlements, the total number of infrastructure points should be about 11,300, almost double what I have. Scaling the infrastructure after the propagation step will get the right number, but may result in less spread than might otherwise occur. On the other hand, scaling the starting number will likely increase the spread of civilization over a great distance and make a larger final number.

One possibility is to scale the starting points iteratively until the solution converges on the desired final result. While that is probably the best option, I'm going to start smaller and simply scale the final number at the 18-mile level and see what happens. Having the infrastructure more tightly consolidated seems like it might be a good choice in a dangerous world anyway.

This will take some experimentation.