Showing posts with label World Engines. Show all posts
Showing posts with label World Engines. Show all posts

Saturday, October 2, 2021

Tooling for 1:1 Timescale Games

I've had boring, practical questions about how to run 1:1 timescale games rolling around in the back of my head for I guess a couple months now.

  • World-design considerations.
    • Many of the games of that era seemed centered around a single city and/or megadungeon (Blackmoor, Castle Greyhawk, and the City-State of the Invincible Overlord, for example), and Jeff's Trollopulous seems to have followed a somewhat-similar pattern.  How important is having a central locus like this?
    • Is the right way to lay out a region for this style of play more radial, with wilderness increasing out away from The City, rather than a linear civilization->borderlands->wilderness gradient from a large, civilized heartland?
    • What's the right scale, so that travel is long enough to be a meaningful allocation of time-resources, but not so long that the game grinds to a halt as everyone is traveling?
  • Session structure.
    • BDubs' game seems to have a core community of players who play adventuring PCs and have a regular session, often dungeoneering, every week, plus some set of patron players doing their own thing in the background.  This seems like it doesn't scale up arbitrarily (but what does, really?).
    • Jeffro's adventurer-level players seem to play more like patrons, doing their own thing, maybe jumping an injured patron and taking his stuff, rather than partying up and having regular sessions where they go into dungeons.  
    • And then there's Gygax's example, where (purportedly) people would show up at his house unannounced and he'd run a session.
    • Under what circumstances do which of these different approaches to sessions (or lack thereof) work well?
  • Keeping the information organized.  What's the right (or at least adequate) way to keep the information about who is doing what when where (and when they'll be finished) organized?  And how do you keep (at least some of) that information secret, to let the interesting behavior emerge from patron interactions under fog of war?
    • Index cards?
    • Spreadsheets?
    • Shared google calendar?
    • Paper calendar that only the DM has access to?
    • Gantt charts (lol)?
    • Database?
  • How do you make such a style of play amenable / accessible to more casual players rather than just "elite auditor mindset" players?  (I'm bummed that I can't find either BDubs' or Jeffro's post where that phrase was invoked)

I think I have an angle of attack on one of the information organization question, at least.

The answer is databases.

This post brought to you by my assignment at work this week, auditing code that interacts heavily with databases

Why?  Because you can automate around them.

The barest, crudest sketch goes like this: have a table of ongoing operations with start dates, end dates, and descriptions.  When someone starts something, add it to the table.  Have a table of players, including their discord IDs, and a table containing (operation ID, player) pairs of "players who should be notified when this operation finishes".  Have a discord bot that runs every night at midnight, checks to see if any operations have finished on day rollover, marks them complete, and notifies players (and probably DM) by PM.

Ha, maybe run the bot at 5PM instead, right as people are getting off of work - a character's work for the day is done at that time too.  And any "orders" gotten in before 9AM the next day are completed by 5PM the next day.

But this doesn't really let you answer the question of "what is any particular character doing at the moment?"; there's no notion of character there.  So maybe we also want a table of characters (including an "owning player" column), and then a table with (operation ID, character ID) pairs indicating "this character is currently unavailable for play because they're busy with this long-running thing".

Of course, once you have a table for characters, it's very tempting to throw their stats and XP in there too...  and a table for all the unidentified magic items they're hauling around, with both the in-world description you've given and the actual identity of the item.  And how many charges that wand that they figured out the command-word for but never really properly identified has left.

It would be kinda nice to put wilderness expedition logistics information in there too and update it on nightly rollover...  but that gets a bit thorny because then we need a notion of a party, which presumably can have a set of characters (as well as a count of NPCs like mercenaries and shared equipment like wagons), and which might be busy with an ongoing operation (like overland travel).  So then we run into this: do we have a table of party/operation pairs, for parties that are busy?  Do we then query party membership to determine which characters are busy, or also still have a character/operation table and have to check both it and party membership?  Or do we just have a party/operation table, and have parties of only one character sometimes?  That might be kind of nice, for the case where you pick up friends along the way (or lose friends along the way and a party goes down to just one member).

Do we want some notion of location?  Of grid coordinates?  (I really hate programming against hex grids)  Parties having a location which is updated overnight based on their overland speed?  (But then I would need to encode their paths too, which sounds painful...  maybe this is a good argument for Arnesonian "12 miles a day regardless of terrain")  But it would be neat that if there are multiple parties in the same location in the wilderness, they might have a chance meeting.  Automatic random encounter determination, putting a pause on the travel operation until resolved?

If we're already considering notifying players in response to stuff in the world, we could extend that for information flow and intelligence.  Maybe having a spy in a location adds you to the notification list for start and completion of operations in that location.  Maybe operations should have secret vs common-knowledge descriptions, with spies having some chance to uncover the secret descriptions and town gossips yielding the common-knowledge ones.  Spies might dispatch messengers in response to some operations beginning or ending, creating operations in their turn for the messengers to travel to their destination.  Some notion of queuing news at a place (to be received on your return) might be necessary.  Automatic weekly collation of common-knowledge events in (say) a central city into a "News in Kezmarok" style digest sent to all players could be neat, and a good way for players to advertise "looking for group" or patrons to advertise "looking for temporary, deniable help".

Finally, NPC actions.  If you have all this tooling for keeping track of what PCs are up to, it seems natural to extend it to also keeping track of what NPCs are up to.  Clocks on steroids; give "orcish warlord gathers horde" a concrete end-date and set it up to notify just you, the DM, when it finishes.  And if players interfere, move the end date around accordingly.  Likewise, if you want to send an NPC party on a wilderness/trade expedition, make a series of operations, one to travel there, one to buy and sell goods for a week or two, and one to travel back.  NPC party raids a dungeon?  Make a single die roll to see how they did, make an operation where they take a week of bedrest and recruiting, and then put them out of your mind.  They're in motion, you don't need to worry about them for a week.  But your players might hear about them automatically.

This starts to look a lot more like a living world.   And the table of operations starts to look like a log of all the stuff that happened outside of combat, which would be a pretty neat artifact of a campaign (much like player-produced maps are a neat artifact). 

It also seems like it would be pretty easy to keep it game-system-agnostic.  Character stats seem like the most likely place to break this, and I'm not even sure I really want them.

Wednesday, January 27, 2021

The Random Encounter Deck

Had a discussion about using cards for random encounters the other day and it reminded me of my old trouble queue proposal.

Thinking about it further, using a deck instead of a random encounter table seems like a really good idea.  Roll up a bunch of random encounters beforehand, say one per two empty rooms in the level (so probably 10-15 encounters, which should be more than players will meet in any single expedition).  Put each one on a notecard.  Whenever you roll a random encounter during exploration, draw the top notecard off of the deck.  If the PCs kill it, don't return it to the deck, and if they flee from it, update it (remove anything killed from it, say) and return it to the deck.

So then the deck represents a set of facts about the world: it's the set of small groups of monsters without rooms in the dungeon level.

Between sessions, restocking the dungeon means refilling the deck.  The simple, obvious way to do this is to roll up more random encounters from a level-appropriate table, put them on cards, and add them to the deck.  But you could do a lot of interesting procedural stuff with this too.  Maybe you draw a couple of times from the deck and the random encounters that you drew take an action on the deck.  Humanoids might invite their cousins, adding another random encounter of their type to the deck.  Maybe predators like giant spiders remove a card of a prey species type from the deck (or are removed themselves if no prey cards remain).  Undead might take another draw and turn that into an encounter of their type (or you could animate encounters cleared by the PCs and add them)/  If you drew a scavenger, replace a slain encounter with more scavengers of that type, like the gelatinous cube turned the corpses into more biomass and then underwent binary fission.  If you draw a rival adventuring party, draw again and they fight whatever you drew.  Maybe if you ever have four random encounters of a single kind in the deck at restock-time, they form a lair, removing them from the deck and adding them to the map.  Likewise, if the PCs knock over a lair but there are survivors, maybe they get added to the deck as encounters.  It all seems like a relatively low-overhead way to add some liveness to the dungeon's inhabitants.

And if you have your random encounters on notecards, this seems like a good place to store the state of your named beastman champions, including two or three words of personality description and any permanent injuries or magic items they might have gotten from previous PCs.  You could even leave lairs in the deck; if a lair has six encounters, then you have six cards, and each card says "part of lair x".  So then your players can wage a war of attrition, trying to destroy the lair piecemeal rather than fighting it all at once (but likewise, those encounters have somewhere to retreat to and if they get away may bring reinforcements).

And then bringing it all back around, if your players have caused trouble and there are impending consequences that might reasonably find them, you make a card for it and shuffle it in to the random encounter deck of wherever that trouble is looking for them.  Maybe mark cards as "global trouble" vs "level inhabitants" so that they're easy to separate for shuffling into another area's deck.

...  now the only problem is that I don't actually own any notecards.

Friday, November 13, 2020

The Rumor Mill

Someone in discord asked recently how you'd go about generating rumors on the fly in response to PCs hiring level 0 men to canvass taverns and listen to all the gossip.  
 
Rumors should be plausible, but improbable; unreliable, but occasionally prophetic.  Part of the fun of rumors and gossip is guessing at what is true and what is false.  But generating facts about the world is hard, especially facts that might be known (or believed) in town, but are still relevant to adventurers.
 
I have three ideas in mind, depending on what structures you're using to keep track of of the state of the world.


If you're using something like Dungeon World's clocks, then gathering rumors is a good way to reveal the existence of a clock or part of its state.


If you have a trouble queue and there's an event that is about to be popped from it, having an ear to the ground might alert the players to that incoming event before it arrives.  Maybe take the top element and two others from deeper in the queue; the two from deep in the queue are false leads that look like they could be indicators of near-term action by those enemies, while the one from the top is the truth.

3. The Renegade Crowns Approach

Make lists of each of the following:
  1. Dungeon power centers
    • Rival low-level adventuring parties (3-5)
  2. Local (town to county-scale) power centers
    • The local head priest and the temple
    • The count and his guards
    • The coven
    • Local humanoid wilderness lair leaders 
    • Small mercenary bands
    • etc
  3. Regional powers
    • The duke
    • The patriarch
    • The archmage
    • The khan next door
    • The evil overlord
    • Smaug, Godzilla, Cthulhu, or other kaiju-with-cult
    • etc

Generally a rumor is likely to have legs if it is juicy, and rumors are juicy when they're interpersonal.  Roll 1d3 to pick which of those three lists to start with.  Roll on that list to pick one of the parties in the rumor.  Roll 1d6 to determine which list the other party is from; 1-2 they're from one list "down" the social order, 3-4 from the same list, and 5-6 from one list "above" the original party.  If there is no list above or below, just use the original party's list.  Then roll a party from the second list.  If it's the same as the first party, then the interaction was internal to that group.  If neither of the parties is welcome in town, consider rolling again (it would be weird for there to be a rumor about two beastman bands fighting in the dungon, but not totally implausible).  

Once you've determined the two parties involved in the rumor, make a roll to determine the alleged nature of their recent interaction:

  1. Bloodshed or plotting thereof
  2. Shouting and fisticuffs, or destruction or theft of property
  3. Faux pas, snub, or other disrespect likely to have repercussions
  4. Secret meeting
    • ("Ol' Bargum said 'e saw the duke 'imself leaving the Vulgar Unicorn this morning...  Can't see why 'e'd be in there, but a bit early to be in the bottle, even for Bargum.")
  5. Conspiracy against a third party (roll again for stratum and party)
  6. Tryst or otherwise strong and secret alliance
Note that we don't want a 2d6 reaction-type roll here, with a strong central tendency.  We want scandal, suspicion, big highs and big lows which might be blown a little out of proportion.  Rolling lots of ambivalent 7s on 2d6 would just make our job of making up an explanation harder.
 
As an example: we might roll a 1 on the 1d3 and get a rival adventuring party, then a 6 for "one step up the ladder", roll the local high priest/temple on that list, and a 6 on the interaction.  Maybe the rival party's cleric is sleeping with the high priest to get cheap healing.  Maybe the rival party are secretly sworn servants of the temple.  Maybe they owe the high priest a life-debt or he has them under a geas.  If we had instead rolled 3 for "same social stratum" and then the same rival adventuring party, and then 6 again, maybe one of the "PCs" tried to seduce one of their party member's henchmen.

When your players receive rumors, roll several.  Secretly pick one to be true, then tell all of them, true and false, to your players.

Sunday, July 24, 2016

Renegade Crowns' Domain Engine

While thinking about the issues with ACKS' domain system, I keep returning to Renegade Crowns.  It's strange that I mentioned it during my Suns of Gold review without making the important connection.

Suns of Gold has a trade system that generates adventures - you often have to go on an adventure in order for a deal to be profitable.  This is good, and fun!

Renegade Crowns' domain system is also designed to make domains a source of adventures.  If you want to stay in power, you have to do stuff.  This is...  good, and fun?  Probably better, at least, than "I sit back on the throne and send henchmen".

Notably, RC has a "domain engine" (sort of like a world engine, but smaller).  It has two pieces of state: an Internal Trouble score, and an External Trouble score.  These go up over time, and going on adventures can reduce them.  If they hit certain thresholds, mandatory adventures happen - deal with them or be deposed.  Internal Troubles may result in settlements declaring independence, peasant rebellions, or courtiers assassinating you, while External Troubles might be monsters eating your peasants or neighboring domains declaring war and invading.  Solving these troubles has varying effects on the trouble scores, depending on how well they were solved and by what means (for example, brutality tends to project strength to monsters and foreign powers, but breeds local resentment).

While the specific modifiers to trouble scores are rather...  cynical ("If the characters actually solved the original problem [causing public discontent], increase the Internal Trouble score by 5 points.  The population now knows that they can get the prince to do things by complaining about him, and they are likely to try it again  in the future"), in the Warhammer tradition, something more-or-less of this form is probably a good replacement for Morale for Simple Domains.

Saturday, October 10, 2015

Quality Links

I've been pretty busy between crunch at work and prep for my Midnight ACKS game, but there have been a number of really good posts that came up on my radar this week.

First off, Koewn's analysis of ACKS' stealth mechanics is fantastic.  I was considering (am still considering, actually) an ACKS assassin that trades plate for something else, and this has reasonably convinced me that they don't need Naturally Stealthy (-1 to enemy surprise rolls) to be effective at sneaking at low levels.  Honestly, reading his analysis, I'm pretty convinced that ACKS' stealth system is fine and we've just been Doing It Wrong; I actually kind of like that a 1st level thief is ~18% more likely to surprise a target than a common man.  As Koewn points out, this is about on par with the incremental improvement in combat ability that fighters get, with a 1st-level fighter being better but not massively better than a common man. The question remains, though: what to give assassins?  I'm thinking Poison Use (some combination of bonus to saves against poison, bonus to proficiency throws to produce poisons, no chance to poison self when using poison), but I haven't set on anything yet.

Second, Trilemma has a pair of solid posts on knowlege and preparation and DM-player bandwidth.  The first is a good statement of the general philosophy behind his prior (excellent) posts on useful dungeon description and monstrous effects on terrain, as well as explaining the importance of intel in old-school gaming, the prevalence of monsters with crazy immunities, and (indirectly) why vancian casting was awesome.  In a way, it explains a lot of the mechanical oddities of the Old School that fell by the wayside as cultural, playstyle elements of the Old School (which made those mechanical elements sensible) faded due to dilution, and in identifying those cultural elements provides a path forwards/backwards, depending on how you look at it.

Trilemma's second post, on bandwidth, is particularly relevant to me at the moment, as I am engaged in world creation and trying to get data to my players.  It's also somewhat interesting because "the bandwidth problem" was something parts of my group have been talking about for years, but never thought to write down.  I have the good fortune of having a player this campaign who really likes lore (at one point he explicitly asked me for more lore, and I was taken aback; not a problem I've ever had before!), but my approach is still mostly a combination of a (written lore), c (no lore), and d (players propose reasonable lore).  Some but not many things are fixed (written lore), many things that aren't relevant to the game just don't exist (no lore), and if my players propose something that makes sense, it's on me to either find a good a reason it isn't true, or to adopt it.  I imagine this is probably true of most campaigns, that they follow hybrid approaches.  Still, interesting stuff to think about.

Finally, today from the Hill Cantons, two solid posts on building and running dynamic sandboxes [1, 2]!  Since I'm running a dynamic sandbox at the moment, these are extraordinarily relevant to my interests.  The first article discusses having a campaign news cycle and dynamic encounter tables, while the second focuses on his Chaos Index world engine and campaign-scale event charts.  The campaign news cycle is probably not reasonable for a setting like Midnight, where news is sparse and literacy is sparser, but dynamic encounter tables are something I've been playing with lately.  ckutalik proposes a "New Development" slot on one's random encounter tables, where something related to a world event or past PC actions shows up when rolled.  I've been thinking about having an encounter queue instead - when the PCs take an action which generates Consequences, those consequences go in a queue.  When you roll "queued encounter" on the table, you pick something sensible from the first couple of things in the queue and that's what they find.  This means that consequences can linger in the queue for quite a while, but will probably find the PCs eventually.  I've also considered having multiple queues on a per-area basis; failing to assassinate the duke might queue a squad of royal guards in his domains, and bounty hunters in each of several nearby domains.  Things like that.

From the second post, I could see setting up a Shadow Index, where certain actions increase the grip of the Shadow on the world and that alters things cosmologically (again, ideally I think I'd want per-area or -domain indices, so that some places can be deeply shrouded while others are 'points of light').  I've been running some loosely-defined world engines for various plots that are afoot; when the players decide to engage the ghouls hunting the farmers of Ostergot, the mushroommen of the Monastery Caverns grow and multiply, and when they fight the mushroommen, the ghouls spread.  Event charts are something I should consider; my plan currently is to use politics as the primary event-driving factor for the campaign, but the occasional natural disaster or similar would not be amiss.  My thought is to set up a network of high-power NPCs who have various relations with each other, and in any given unit of time some may undertake actions (declaration of war, assassination, charm / domination, slander, ...) against others, the consequences  of which trickle down to the PCs.  Event tables would be a simpler way to handle this, though, with "assassination attempt on X by Y", "raiding of X's domains by Y", and "warfare of X against Y" as table items with fillable variables as sensible.  Maybe I'll do that instead.

Anyway, good posts, well worth reading.