Sunday, August 21, 2016

The Wilderness Machine

Reflecting on my attempts to automate the wilderness (eg hexstocking), I realize that there was a failure of...  ambition, almost.  And definitely some failures of engineering, which made greater ambitions untenable.

If I'm going to automate, I should go whole-hog for a level of complexity which would be utterly unmanageable by a human, and design the system for that from the beginning, rather than just doing what a human DM would do given an abundance of free time and a dearth of creativity.  Does a submarine swim?
  • Stock lairs in hexes according to terrain type.  Dwelling-type may be chosen from the random dungeon types table, if reasonable for monsters of this type to live in a hole in the ground.
    • Actually, looking at the end of this where I'm considering migration, the more-correct solution is to start with an empty wilderness and run like 10 years of immigration and migration beforehand.
  • For each lair, construct a "hunting range" of other hexes into which its monsters frequently wander.  Hunting range primarily based on monster speed, movement type, diet, and hex types.  Range concretizes some of Trilemma's nonmechanical difficulty elements.
    • Sentient monsters taken prisoner can serve as wilderness guides throughout the range of their lair
    • Monsters unlikely to pursue parties beyond the edge of their range
  • Construct per-hex random encounter tables, based on the lairs whose hunting ranges contain that hex.
    • Do not attempt to manually query these tables.  The user interface for this is "Machine, give me a random encounter for hex 0423" -> "Goblin warband from the village in hex 0625, with n champions, m goblins on wargs, 15kcp and a sword +1 interacting with 4 wild boars from lair in hex 0321".
      • Actually though, I should drop lame-ass animal lairs and assume a reasonable, dense distribution of mundane wildlife (eg herd animals, normal-sized hawks, rats, ...).  If it isn't going to ever kill a wilderness-level PC, I don't need to track it as a monster.
    • Favor monsters from lairs that the players have met before.  This both encourages narrative recurrence / campaign capital development, and is generally reasonable in terms of shared movement habits - if you reuse the same game trails and they reuse the same game trails, you're likely to run into each other again.
    • Optionally, vary encounter tables with time of day, weather, season.  Bears hibernate in the winter, big cats hunt at dusk and dawn, giant bats are nocturnal, humanoids don't like hunting in the rain, ...
      • Cut the day into 4-hour blocks - dawn (4-8), morning (8-12), afternoon (12-4), dusk (4-8), first watch (8-midnight), second watch (midnight-4)
  • Likewise, vary probability of random encounter by individual hex, day/night, weather, season, ... instead of just terrain type.
  • Manual update with results of encounter -> "goblin warband from village in hex 0625 destroyed"
  • Monthly, check for monster migration. Monsters migrate based on monster-density in their hunting range, terrain types, season.  Monsters can also migrate in off the edges of the map (bounded area being simulated), and migrate off the edge of the map (though maybe known lairs do not migrate off-map).  Monsters less likely to migrate if they have a village, dungeon-lair, or lots of treasure.  Maybe also kill off some lairs during monthly rollover.
    • Changing ranges might be a better approach, with lair migration only if no workable range is achievable that includes that lair hex.  On month rollover, greedy search from each lair for a set of hexes which generate an amount of population support sufficient for the lair and which minimize exposure to predation.  If no satisfying solution found, the lair migrates.  Perform updates in ascending order of speed; fast predators can reactively update their ranges in response to slow prey migration.
    • Or each lair has a fixed amount of time/effort/utilization available to it, and this can be assigned to hexes to derive population support from them or to travel through them, with environmental factors and presence of predators making this less efficient.  Utilization of each hex also determines on a per-hex basis the weighting of the lair in that hex's random encounter table - you're more likely to have an encounter with wyverns in their hunting grounds than in the hexes under their flight path between hunting grounds and lair.  High utilization also means greater familiarity with the hex among captured sentients.
And then you feed the machine a big-ass hexmap, press go, and run an illegible Western Marches, where regions emerge from complex monster behavior over varied geography but don't have names and don't stay the same.  A really illegible approach would do away with hexes entirely, and make rollover a continuous rather than discrete process, but that's a lot more annoying for a computer (you can only approximate continuity, via very granular time or space), and this is probably crazy enough already.

The obvious question is "would this be fun to play in?"  And that I do not know.


AM said...

I'm not sure if it'd be "fun" either, but it sounds "awesome".

Amusingly, the earliest incarnation of Ultima Online supposedly had a system similar to this, and it completely broke because the players acted in ways that made no sense from any ecological or economic framework they could model.

John said...

Wikipedia has a quote on this:

"We'd spent an enormous amount of time and effort on it [ecological/economic simulation]. But what happened was all the players went in and just killed everything; so fast that the game couldn't spawn them fast enough to make the simulation even begin. And so, this thing that we'd spent all this time on, literally no-one ever noticed – ever – and we eventually just ripped it out of the game."

I do not think this would be an issue for a single-party game.

Scott Anderson said...

I don't think you will have the high-modern authoritarian problem either. You can tailor the experience to a particular group

Koewn said...

Ultima Online was one of the best psychological experiments ever done on the Internet I think. I'd missed the whole thing for various reasons, but a few of my gaming buddies have some great stories about completely ruining things for as many people as they could, including each other. Best fun you could have without getting arrested.

FWIW, if you do go crazy and do this, and then further decide to simulate prey animal herds in any way, try tracking them as their meat value from L&E - that way you can have the things that prey on them, from animals to dragons to orcs, assign a value to the particular herd for purposes of wanting to migrate with it/etc based on their supply costs in said meat.

John said...

Scott: Yeah, I'm not really concerned about the high-modernist failure mode for D&D. But the notion of legibility is interesting; I've been developing a Green Chaos (in contrast with the Warhammer-esque "black chaos" I've projected onto ACKS' cthonic chaos cosmological assumption), along with a theme of Wizard of Earthsea / Kill Six Billion Demons-style "power of names", which centers on legibility (naming renders legible, imposes order on disorder). I have not yet figured out how to communicate it well, but one facet of it is that it bothers me that something as enormous and messy as a fantastical supernatural Wilderness (in the "supernatural underworld" megadungeon model) is rendered clean and simple, cut up into geometrically-pleasing hexagons, named and numbered, discretely populated, and so rendered legible for the purpose of clearing and taming. There is a conflict here between ACKS and Western Marches; you won't ever fully map or clear a megadungeon, and in Western Marches' metaphor of "wilderness as megadungeon", it follows that wilderness should be fundamentally unclearable too, which runs rather counter to ACKS' assumptions about carving out new domains. A Wilderness Machine does still render wilderness legible (in that it is still cut up and named and numbered), but transforms it into a chaotic system (in the mathematical meaning of the term), which is a step in the right direction.

On reflection, this post is actually talking about making wilderness less legible to PCs, and how that would improve the wilderness game.

Koewn: I was thinking about using something like "total boring herbivore biomass" on a per-hex basis. Maybe total plant biomass too, with the predictable interactions between the two; herbivore biomass reduces plant biomass growth, may make it negative, and herbivores migrate like a fluid following concentrations of plant biomass. This also opens up automating monstrous effects on terrain.

Koewn said...

Indeed, plant biomass would be the next step. If there's one thing I can say about this hobby is that you just never know what you'll end up learning about.


To name it is to know it; to know it is to diminish it.

Google Maps, et. al. have places in the world still where there's no data at a given zoom level; though mostly oceans and other stretches of nothing human.

It could be a matter of lowering the resolution of what data is provided; here where strongholds are we resolve at the 6m hex, step beyond that and we resolve at the 24m hex, then the 96m, etc; assuming one cares enough to want to define the boundaries of the continent. There'd be some fill-in effects where the tessellation has to meet up. (or one just starts using 'blobs', where 6m hexes flow together to make big goopy shapes that might have been a hex grid once)

But, something like a Silk Road might be a pearl string of 6m hexes winding across a landscape resolved in the 96m or 384m hex size, where landmarks are described as "16 days following this or that constellation at dusk depending on the season".

And if the force of the wilderness is something akin to the deep chaos of dungeons, perhaps those larger hexes are just plain harder to traverse; tying (as one might) back to what the dice can do for us.


John said...

Irregular polygons are probably easier to deal with than fixing up variable-scale hex tesselation, especially since you lose the main benefit of hexes (uniform center-to-center distance) by mixing scales. I do like the idea of settled places being higher-resolution than wild / unknown ones (though on the flipside, settled places are where the least interesting stuff happens, so it sounds like it might not be a great return on investment of DM effort).

Koewn said...

Could be. On the other hand, you know where all the 6m hex centers are on a hex field, so if you're centering your 24m/96m.. hexes on those same centers, it should be a simple lookup to see if you have undefined smaller hexes left outside or on the edges of the larger ones.

I like the idea of larger hexes for things like getting lost - exiting out a random face of a 96m hex is a lot worse than a 6m hex; but I haven't managed to think of any other mechanical use. I'm not sure how to sharpen it into smaller hexes as exploration happens - the more I think about it the more it seems just like work for work's sake.

Perhaps the inverse is more useful for a wilderness focused game - here's a 24m/96m hex of settlements; the class II is in the middle. Something visually akin to the "city radius" of the Civilization games.

Bruce Capua said...

I'm not sure this project would need all the details you're thinking about (biomass for example), but this sounds like a very cool idea.

Also, I've always liked the idea of using 4x games as campaign maps. Looking forward to trying this again with Civ6.