December 28, 2021

Elevation XVIII: A Bigger Map

The map I've been using is about half the size it should be. So I wrote some code to generate a map of arbitrary size. I'm actually a little mad about it, since it took about half an hour to generate what took me months to figure out 3 years ago. But I'll be better for it.

The next step is to regenerate elevation and terrain, wind and currents, climate and all that good stuff.

If you're just starting out, don't make the same mistake I made; do this in a language that can handle big data efficiently. Python can barely chug along through this stuff.

December 20, 2021

Ex Nihilo III: River Travel

 The first obstacle I encounter when finding river routes is that there's no immediate correlation between AP and river vehicles (barges, small ships, etc). So we begin with some initial thoughts and observations.

Almost all relevant river travel will be by barge or similar vessel. The navigability of a river will then be dependent on the depth of the river and to some extent its velocity - some rivers may be too fast to pole or tow against. Once width becomes an issue, the point is moot anyway.

The numbers I'm getting from my velocity model (I've since tweaked the width and depth equations slightly) appear roughly commensurate with the numbers ORBIS uses. They apply a constant 65km/day rate, which is about 1.6 mph. If I only consider 10 hrs of daylight travel, we can get that number up to 3.2 mph (ah, what if I used daylight hours based on latitude as my indicator? Thoughts for later). This indicates that river travel will only be faster than dirt roads or lower. However, the cost will be much cheaper than overland travel. This kind of problem can be left with partially incomplete information, as this makes the party's decisions much more realistic.

Assume a river with downstream velocity $v = 1.837$ mph. This is equivalent to a day's journey (10 hours) of 18.37 miles. For a party traveling on land with 3 AP, that's the equivalent of 6.123 mi/AP. My assumption here is that river travel works by the same AP travel rules as travel on foot.

By the same measure, moving upstream against the current is a much slower affair. ORBIS puts upstream motion (by poling, horse-hauling, or even tacking) at 15 km/day. Therefore, we can put an upper limit on navigable rivers at where this advantage becomes moot, about 2 mph of downstream velocity.

Consider two hexes, A and B. The river flowing from A to B is 26 ft deep, 612 ft wide, and has a velocity of 1.837 mph. There is also a high road which runs throughout.

Traveling along the road with 3 AP takes 2.56 total AP (thanks to the maintained road) and 0.85 days. However, since the river is not quite fast enough, rafting down takes 3.27 AP and 1.09 days. These differences can add up for a long journey.

Say we wish to travel back from B to A. The road journey takes 0.85 days as before. But fighting against the current slows our barge to 25.6 AP, 8.5 days!

This has a few implications for travel and trade. First, there will be a severe resource asymmetry for downstream collection centers. In this case, a good might be 10 times more expensive in B than in A! Due to the upfront costs involved, trade will always move by water if possible, regardless of small disadvantages in time. Second, travel will likely also be asymmetric, as it will often be faster to raft downstream and walk back upstream. In fact, we have real-world examples of this, where cheap flat rafts would be brought down the Mississippi then disassembled in New Orleans, after which the crews would travel on land back up the river.

So it seems we will need a few different pathfinding tools:

  • Routes by land only
  • Routes favoring water wherever possible
  • Routes combining water and land for maximum speed

December 16, 2021

Ex Nihilo II: Routing

I worked the number of total polities down to the low 2000s. This is probably still pretty high, but it takes a while to simulate warfare between so many cities, so I'll call it here.

The next thing is to place roads, according to Higher Path rules. I briefly tried a modification, where the number and type of roads was determined by the total infrastructure, and not the infrastructure category. For example, rather than primary, secondary, and tertiary routes, a hex with an infrastructure of 61 could have 1 low road (35), 1 cobbled road (20), 1 cart track (6), and finish out the 6 total connections with trails (0). This all adds up to $35\cdot1 + 20\cdot1 + 6\cdot1 + 3\cdot0 = 61$ total. However, I didn't much like this as the resultant network was weird-looking, with all routes being pulled towards the local center.

It's got kind of an artsy feel to it, but massive infrastructures would be necessary to make any kind of even network. So I went back to the old way but will continue to think about it.

It's a busy-looking map, but remember that this is primarily DM-facing (more accurately, computer facing). All we need to know for now is that there is a road from A to B of type C. From hence we can apply A* route-finding algorithms to find optimum travel paths between hexes. I'm using the AP weights from here, assuming a normal walking pace. The function will return both the route taken and the cost in AP, so that travel times can be determined for the trade network.

Note that these don't take into account the convenience of river travel if available. A comprehensive model will present the players with a plan involving the cheapest method: a boat from A to B, then overland from B to C, then finally upriver to D. For this, I'll probably rely heavily on the fascinating work by ORBIS. In the same manner, I need to re-address sea travel, so those are next on the list.

December 13, 2021

Ex Nihilo I: Starting Off

It's been a while since I've had much time to devote to my projects. I'm starting to get the itch to actually play again, and the problem rears its head that it's just not done. Nor will ever be done. I've spent a good deal of work on the tribal development system, which would eventually give rise to settled civilizations and more complex societies. I still want to develop that out, but a project of this magnitude is lifelong.

My thought at the moment is to generate a more or less fully populated world, without the benefit of the procedural history system. I would lose a lot of that organic weirdness, like the records of wars and such, but it would significantly shorten the timeline to a version that could be used in an actual game.

Instead of slowly planting and growing cities, I just place them according to the design principles I developed last year: the carrying capacity is determined first by the desirability of the location and then by proximity to nearby cities. This yields between 15,000 and 20,000 cities, ranging in size from villages of 200 to cities of about 75,000 inhabitants.

Infrastructure map: humans (green), elves (red), dwarves (blue), halflings (orange)

Not sure why halflings seem to dominate but there is plenty of time for modifying the variables later. This also brings to the front the issue that the world is roughly twice as small as it should be, and is incredibly habitable. Nothing wrong with that, but I do want to rework the map size (which gave me so much trouble 3-4 years ago) to be closer to Earth's surface area.

On the first pass, each city is its own hegemony, leading to a very busy map. About 86% of the habitable surface has at least 1 point of infrastructure, which is almost nothing anyway.

Hegemony map, very cluttered

The next step is to collapse these thousands of independent tribes into larger hegemons. Through the sword. This thins out the cities and yields a nicer political map.

Hegemony map, starting to firm up

This is approximately 10k hegemonies and about 25k cities. This is more than a pretty good start to create a playable world. I'll tweak this process some more, then begin to add resources and trade networks.