Showing posts with label Meta. Show all posts
Showing posts with label Meta. Show all posts

June 27, 2020

All Together Now

As I revisit my generation process from top to bottom (as I do every few quarters), it might be helpful to have a flowchart or at least a process list, both for my own reference and the general welfare of the public.
  1. Terrain generation, either from code or manually input (do not recommend)
  2. Derive currents by a) determining major trade currents at 0 and 45 latitudes, b) extending these currents and splitting them where they hit landforms, and c) interpolating these currents via IDW to make a nice smooth surface. I also have found that d) applying a Gaussian smooth filter to the results is even nicer.
  3. Assign sea surface temperature (SST) and measure the effect of the currents on that temperature: currents from the poles bringing cooler water down to the equator and vice versa.
  4. Generate areas of high and low pressure
  5. From the pressure map, obtain wind direction and speeds
  6. Determine the effect of topography on wind
  7. Apply base precipitation and use the on-shore winds to blow that moisture across the continents
  8. Use the coastal current temperatures and on-shore winds to determine areas of coastal climate influence
  9. Apply base temperature, then modify it according to the coastal climates
  10. Lapse the temperature up mountain slopes
  11. Run Koppen and Holdridge algorithms
At this point, social simulation can take over.

April 15, 2019

The Wolf and the Lady

This has been an appropriately dark week.

Last night, Gene Wolfe passed away. He was, in my mind, one of the greatest (if not the greatest) sci-fantasy writers of all time. To describe what Wolfe did as worldbuilding or story-telling is not really accurate, because neither word fully captures the breadth of what he created.

The Book of the New Sun is my favorite work of his, although it's all genius. Noisms suggests that the Soldier series may be more accessible, and that's true. BotNS is the type of book you read a dozen times and still have to work to understand; a key element of Wolfe's work is the unreliable narrator. Sometimes, the author/narrator is mistaken. Sometimes, he forgets or misremembers. And sometimes, he lies outright. And it is never clear, especially to the inattentive reader, which is which. Wolfe's books are not to be read as much as they are to be conquered.

Not hours after Wolfe's death, a devastating fire swept through the Cathedral of Notre Dame, a landmark of Christendom for nearly a millennium. This is probably the Pareto optimum tragedy: almost no lives were lost that I saw (one firefighter was severely injured), but this is a cultural loss of almost unimaginable scale.

It is also a learning point for any worldbuilder. Building and places are more than the stone and wood and glass that comprise their physical structure. They become loci for the identity of those who inhabit them. The identity lives on, but the loss of the structure is the loss of something real and metaphysical from that identity. People create place, and the interplay of person and place creates something that cannot be replicated, like a seasoned cast iron pan. Notre Dame was/is a collecting point for the shared experience of millions of people, pushing ever on into the future and spilling over into the next generation of sharers in that experience.

These events signal a genuine end of an era. One era lasted 93 years, the other 856. The world will be different forever.


September 24, 2018

Plaintext Character Sheet

I really thought I'd find something about this elsewhere. But only a few places even alluded to it.

What if, instead of complex pdfs or spreadsheets, we just used a plain, customized text file for our games?

It's not flashy. But it's easy to use, and literally in the most portable format. Gaming on your computer or phone? In any operating system? Easy. At a physical table? Just print it out and update it. All your info, history, stats, etc, can be kept, in the order you like.

But it requires something I haven't seen a lot of these days: players doing work. Many (myself included) want to show up to the table and reap the benefits of the countless hours the DM has slaved over their creation. Why is it that way?

We whine when a little bit of math is required to calculate food, or carrying capacity, etc. Don't whine! Do the work! Instead of endless masturbatory posts on r/DnD with yet another fox-tiefling genasi bard devil with a heart of gold or whatever the hell people are doing these days, put in a little effort to build a character that isn't a Mary Sue.

And I mean build. Don't sketch. Building is done in the game, and polishing between sessions. Double-check your math. Can I really carry 180 lb without slowing down? Where are all my pack animals? Did I leave my sword at the inn or not? Do we have enough rations and health to make it through the jungle?

So far, the plaintext system makes this really easy because I can compartmentalize my items, their weight, any relevant data about them. All my abilities, right there on the page. No more flipping.

It's not fancy, sure. But I don't want fancy - I want something that works. I'm going to experiment with this in a PbP game I'm playing in and see how it goes.

Ideally, you could hand draw it. That could be cool too. I want to say Alexis has a post about this but I can't remember what it is.

It really boggles my mind that there's nothing really about this - not even a "don't use them, they suck!" It's like we've not even considered it. Is it too simple?

Here's the sheet I have right now. Bit of a wall of text, but I can pull it up on my phone, laptop, anywhere.

Mnophet Setep-en-Anubis, Horadrim Initiate

Awakened Gnome
Folk Hero
Fighter 4
Cleric 1

Kills   21

AC  12 (leather armor)
HP  48/48
THP 0
HD  4+1 4d10/1d8

SAVE   OOO
FAIL   OOO

gp  1146
sp  33
cp  105

encumbered at 90 lb
heavily encumbered at 180 lb

Passive Perception 13

Prof    +3
Init    +2
Speed   25

STR 18  +4
DEX 15  +2
CON 15  +2
INT 12  +1
WIS 10  +0
CHA 9   -1

STR +7  *
DEX +2
CON +5  *
INT +1
WIS +0
CHA -1
Acrobatics      +2
Animal Handling +3  *
Arcana          +1
Athletics       +4
Deception       -1
History         +1
Insight         +3  *
Intimidation    -1
Investigation   +1
Medicine        +0
Nature          +1
Perception      +3  *
Performance     -1
Persuasion      -1
Religion        +1
Sleight of Hand +2
Stealth         +5  *
Survival        +3  *
Proficiency with brewer's supplies
--equipped-- 37.5 + 21.05 = 58.55 lb
Sandsword +1            2 lb        +7, 1d6+4 piercing, martial, finesse, light, cast sand for blindness (3 charges), DC 13 per charge or DC 15 for all 3, recharges on short rest in sand
Scimitar                3 lb        +7, 1d6+4 slashing, martial, finesse, light
Handaxe (2)             2 lb        +7, 1d6+4 slashing, simple, light, range, thrown (20/60)
Longbow                 2 lb        +5, 1d8+2 piercing, martial, arrow, heavy, range, two handed
Arrows (234)            0.05 lb
Arrows +1 (9)           0.05 lb
Leather armor           10 lb       AC 11, light
Pouch                   1 lb
Backpack                5 lb        l cu.ft or 30 lb
Fine travelers clothes  3 lb
--backpack-- 21.55 lb
Tinderbox               1 lb        action to light torch, 1 minute to light fire
Waterskin               5 lb        4 pts of liquid
Hempen rope             10 lb       2 HP, DC 17 STR to break
Poison vials (10)       0.05 lb
Healer's kit            3 lb        10 uses
Anubis statuette        0.5 lb totem of the Horadrim
Wand of Magic Detection 1 lb        cast Detect magic, 1d3 charges at dawn
Map
Ink pen
Ink
Letter to Head Priest
Scorpion shell          0.05 lb
--camel-- 107 lb
Crowbar                 5 lb        adv on STR checks
Hammer                  3 lb
Pitons (10)             0.25 lb
Torches (10)            1 lb        1 hr, 20/40 ft, 1 fire dmg
Rations (10)            2 lb
Ceremonial dagger (18)  1 lb
Shovel                  5 lb
Iron pot                10 lb
Brewer's supplies       9 lb
Chain shirt             20 lb       AC 13, medium
Iron spikes (9)         0.5 lb
Two-Weapon Fighting: When you engage in two-weapon fighting, you can add your ability modifier to the damage of the second attack.
Stealthy (feat): If you are hidden, you can move up to 10 feet in the open without revealing yourself if you end the move in a position where you're not clearly visible
Second Wind: You have a limited well of stamina that you can draw on to protect yourself from harm. On your turn, you can use a bonus action to regain hit points equal to 1d10 + your fighter level. Once you use this feature, you must finish a short or long rest before you can use it again.
Second Wind             1/1
Action Surge: Starting at 2nd level, you can push yourself beyond your normal limits for a moment. On your turn, you can take one additional action on top of your regular action and a possible bonus action. Once you use this feature, you must finish a short or long rest before you can use it again. Starting at 17th level, you can use it twice before a rest, but only once on the same turn.
Action Surge            1/1
Battle Master:  You have four superiority dice, which are d8s. A superiority die is expended when you use it. You regain all of your expended superiority dice when you finish a short or long rest. You gain another superiority die at 7th level and one more at 15th level. DC = 8 + prof + STR = 15.
Superiority Dice        4/4
Commanders Strike: When you take the Attack action on your turn, you can forgo one of your attacks and use a bonus action to direct one of your companions to strike. When you do so, choose a friendly creature who can see or hear you and expend one superiority die. That creature can immediately use its reaction to make one weapon attack, adding the superiority die to the attack’s damage roll
Riposte: When a creature misses you with a melee attack, you can use your reaction and expend one superiority die to make a melee weapon attack against the creature. If you hit, you add the superiority die to the attack's damage roll.
Sweeping Attack: When you hit a creature with a melee weapon attack, you can expend one superiority die to attempt to damage another creature with the same attack. Choose another creature within 5 feet of the original target and within your reach. If the original attack roll would hit the second creature, it takes damage equal to the number you roll on your superiority die. The damage is of the same type dealt by the original attack.
--Spells--
WIS +3, DC 11
0: Spare the Dying, abjuration, 1 action, instant, VS. You touch a living creature that has 0 hit points. The  creature becomes stable. This spell has no effect on  undead or constructs.
0: Thaumaturgy, abjuration, 1 action, 1 minute, 30 ft, V. You manifest a minor wonder, a sign of supernatur,al power, within range. You create one of the following magical effects within range. Your voice booms up to three times as loud as normal for 1 minute. You cause flames to flicker, brighten, dim, or change color for 1 minute. You cause harmless tremors in the ground for 1 minute. You create an instantaneous sound that originates from a point of your choice within range, such as a rumble of thunder, the cry of a raven, or ominous whispers. You instantaneously cause an unlocked door or window to fly open or slam shut. You alter the appearance of your eyes for 1 minute. If you cast this spell multiple times, you can have up to three of its 1-minute effects active at a time, and you can dismiss such an effect as an action.
0: Sacred Flame, abjuration, 1 action, instant, 60 ft, VS. Flame-like radiance descends on a creature that you can see within range. The target must succeed on a Dexterity saving throw or take 1d8 radiant damage. The target gains no benefit from cover for this saving throw. The spell's damage increases by 1d8 when you reach 5th level (2d8), 11th level (3d8), and 17th level (4d8).
0: Chill Touch, abjuration, 1 action, 1 round, VS. You create a ghostly, skeletal hand in the space of a creature within range. Make a ranged spell attack against the creature to assail it with the chill of the grave. On a hit, the target takes 1d8 necrotic damage, and it can't regain hit points until the start of your next turn. Until then, the hand clings to the target. If you hit an undead target, it also has disadvantage on attack rolls against you until the end of your next turn. This spell's damage increases by 1d8 when you reach 5th level (2d8), 11th level (3d8), and 17th level (4d8).
2/2
1: Ray of Sickness, necromancy, 1 action, 1 minute, 60 ft, VS, concentration. A ray of sickening greenish energy lashes out toward a creature within range. Make a ranged spell attack against the target. On a hit, the target takes 2d8 poison damage and must make a Constitution saving throw. On a failed save, it is also poisoned until the end of your next turn. When you cast this spell using a spell slot of 2nd level or higher, the damage increases by 1d8 for each slot level above 1st.
1: False Life, necromancy, 1 action, 1 hour, self, VSM. Bolstering yourself with a necromantic facsimile of life, you gain 1d4+4 temporary hit points for the duration.

May 16, 2018

Terra

Names for fantasy planets make no sense.

They are, of course, useful conventions for the author, so as to not have to say "this thing I'm working on" every time.

I've not named my world. I don't know who would have come up with that name.

In our own world, the words we use for the ball of dirt we live on come from various civilizations' words for just that - dirt. More importantly, the words I personally use, Earth and sometimes Terra if I'm fancy, come from the ancient cultures that have most created me, a European: Latin (terra) and Germanic (eorðe).

What do other people call the earth? The Chinese word is , which also means dirt. The Hebrew word ארץ, which can mean earth or land, is different from the word for dirt, אדמה. The Turkish word toprak apparently has no connection with that of soil.

I don't mean to produce a comprehensive etymology. But I think it sheds light on what these words would be in a fantasy world. Of particular note is the fact that by picking a single name for your con-world, you present yourself as decidedly culture-centric. You've picked a favorite.

If I insist on using the English word "Earth" in a conversation in Mandarin, I am making a very pointed (and offensive) statement about my opinion of the relative importance of each language. Proper names be damned! There are no proper names for Earth.

Nation names are a little bit easier, but not much. England, so called for the Angle peoples, was first called that (sort of) by Bede as "Engla londe." No one really knows where this word came from, but it refers to some aspect of the Angles (or their Germanic region) that someone else noticed. Rarely do you get to pick your own name.

So what on earth am I going to call this thing?

April 2, 2018

Motivation

I've been playing D&D for only a few years now, but I've always been a mapper at heart. In fact, part of the reason I was drawn to DMing is the kind of control I have over the cartography. I'm also a sucker for realism; the standard medieval countryside of many D&D settings doesn't  appeal to me.

Even all that wouldn't have gotten me to where I am today. My very first campaign saw my PCs in a tiny village in the badlands of a fading empire, on the shores of a wide sea, which existed to provide a port-of-call for ships carrying valuable spices and wine across the ocean and push them on down the coast towards the capital. So I got to thinking: how far is this trade route? How does that affect the prices of those goods? Is it even worth the trip? (No, as it turns out.)

I wasn't satisfied. To make things worse, D&D 5e, with its emphasis on simplicity (good in many ways) provided no help whatsoever in thinking about consistent production of goods, and supply and demand. Sure, I could say "wine is 2x more expensive here" but that wasn't good enough. I'm an engineer by training, and a data cruncher for fun, so that didn't cut it for me. To be honest, there are very few places where 5e is in fact consistent.

Then I found Alexis. His trade system was exactly what I'd been looking for! He'd based his  detailed system (and gorgeous maps) on a fascimile of the real world. Regardless, I was hooked. I began thinking about how to install this system for my own world. Even better, if I could make it flexible, able to accept any inputs, that'd be perfect. I know enough Python to be dangerous, so I threw together a few generator functions and started plugging away.

...Only to find that Maxwell had followed nearly the same path, with much prettier results. I wasn't discouraged - after all, one size might not fit all, and I have much to learn from this convergent evolution. But that body of work also sparked some of my own dormant ideas.

I'd continued to work on my maps, both because I love doing them and because a knowledge of local and global terrain was necessary to build the table of trade routes. But I still wasn't very happy. It was so much work, and I'm very impatient. Alexis has had the benefit of many years to build his system...I wanted it all and I wanted it now.

But what if I could automatically generate many of these resources? What if I gave my program a map, and it produced the tables I needed? Not only which resources could be found where, but the distances between them? There was no end to the data I could generate from that. And from data, comes stories. I wanted detail, informed by reality, of what sorts of things happened in a given area.

So I started researching.

There's been a lot of work done on procedural generation for stuff like this, a lot of very good work. But the systems I've looked at are never exactly what I wanted. Many systems use Voronoi polygons - I wanted to stick to hexes. Voronoi polygons look good and make pretty terrain, but they aren't immediately gameable like a hex is (at least to me). The other problem is that most procedural generation is either random or starts from a seed. I want the ability to make things that don't make procedural sense. The world doesn't always make sense - sometimes rivers DO split (this is very rare, though). Sometimes cities pop up in odd or unfavorable places. Real life is dirty, and the infinite number of choices available in the growth of terrain and civilization means that a pure procedural world will have too many smooth edges.

Also, I'm not that good of a coder.

So I decided that I'd use an SVG format for my map. I can manipulate the file programmatically (with Python and BeautifulSoup4), and manually (using Inkscape).

From the terrain map, I can generate resources. I can get a list of settlements (and generate new ones) to collect and refine them. I can determine lengths of trade routes. I'm a big fan of decentralization, even at the cost of a little initial speed.

This blog is to be a repository for some of my thoughts and the things I come across in my research. I'm not looking for advice, feedback, or praise, although I won't say no to those.

It's not going to be a quick project. And even though it's not the best or the cleanest, it's mine.