Showing posts with label Tools. Show all posts
Showing posts with label Tools. Show all posts

Saturday, July 12, 2014

Excel for Campaign Events

A couple of commenters on yesterday's post asked for some tips on putting together their own campaign events sheet for their campaigns; glad to help.  Here are some simple Excel techniques for generating campaign events and setting them on a month and day.  It's not too sophisticated, I frequently use Excel to generate large batches of raw (random) content, plug it into my notes, and then take it from there.  If you need to generate ideas for multiple domains or regions, or multiple years, it makes sense to take the extra ten minutes and put it into Excel with some formulas instead of rolling out dice manually.

Here's how the Excel looks:



Formulas go in cells E, F, G, H.  The formula in cell E generates a random number from 1,100, nested in an IF statement to return a "Yes" if the random d100 is less than or equal the target number in column C.  Formula:  =IF(RANDBETWEEN(1,100)<(C2+1), "Yes", "No")

Cells F and G generate a number from 1 to 12 or 1 to 30 for months and days respectively, after checking to see if an event was indicated in column E.  Formula:  =IF(E3="Yes", RANDBETWEEN(1,12)," ")

Finally, column H concatenates it all together, plugging in spaces and commas.  Formula:  =IF(E3="Yes", "Month "&F3&", "&"Day "&G3&"  "&A3, " ").  I copy the final notes from column H to my actual calendar and add details from there.

Here's a functional Excel example you can snag from my dropbox to start modifying yourself:

Campaign Events Sample

Friday, July 11, 2014

Campaign Events in Taenarum

The next step of bringing the Taenarum campaign to life is the addition of a calendar and campaign events.  For game calendars, I usually just replace the names of the Gregorian months with flavorful names that fit the setting.  I'm not interested in leap years or alternative durations for weeks or months; that kind of stuff isn't high impact on the game and is too much of a chore for everyone to remember.  It'd be like replacing feet and miles (with apologies to the rest of the world).  For Taenarum, the Gregorian month names get replaced with month names like Gamelion, Anthesterion, Elaphebolion, Mounichion, Thargelion, Skirophorion, Hekatombaion, Metageitnion, Boedromion, Pyanepsion, Maimakterion, Poseideon.  In the campaign, the current month is Thargelion, corresponding to May in the Gregorian calendar.  Finally, I add a bunch of holidays, festivals, and religious observances to the calendar to round it out.

Next I develop a giant list of potential events, with a percentage chance of annual occurrence.  One of the themes I want to develop in Taenarum is that the gods are petty and manipulative, and frequently intervene in human affairs to the detriment of ordinary people.  Per the Deities and Demigods approach, they're supernatural bullies statted out like big old monsters.  There are a handful of events on the list that are explicitly divine - like when rampaging beasts or gigantic 20 HD monsters are sent out into the world, to punish some city or region that offended one god or another.  I've also included a straight 50% that any major event has a god behind the scenes pushing the matter.  Storms are natural events, for instance, but there's no reason a god couldn't also be behind pounding a region with a storm.

Here's the giant list of events (so far):

  • Assassination - 10% (Unnatural)
  • Bandits - 50% (Unnatural)
  • Birth in Ruling Family - 20% (Unnatural)
  • Border Skirmish - 40% (Unnatural)
  • Comet - 30% (Natural)
  • Cultural Discovery - 10% (Unnatural)
  • Death (natural) - 10% (Natural)
  • Death of Official (accident) - 25% (Unnatural)
  • Divine Disfavor - 15% (Divine)
  • Divine Favor - 15% (Divine)
  • Divine Plot - 25% (Divine)
  • Earthquake - 10% (Natural)
  • Epic Hero - 10% (Divine)
  • Explosion - 10% (Natural)
  • Famine - 10% (Unnatural)
  • Fanatic Cult - 10% (Unnatural)
  • Fire, Major - 10% (Natural)
  • Fire, Minor - 50% (Natural)
  • Flood - 30% (Natural)
  • Great Beast (10+ HD) - 75% (Divine)
  • Hurricane - 15% (Natural)
  • Insurrection - 10% (Unnatural)
  • Lycanthropy - 15% (Unnatural)
  • Magical Happening - 30% (Unnatural)
  • Market Glut - 20% (Natural)
  • Market Shortage - 25% (Natural)
  • Marriage - 20% (Unnatural)
  • Meteor Shower - 20% (Natural)
  • Meteor Strike - 1% (Natural)
  • Migration - 10% (Unnatural)
  • New Religion - 2% (Unnatural)
  • Plague - 25% (Natural)
  • Plague - 10% (Unnatural)
  • Population Change - 20% (Natural)
  • Pretender\Usurper - 10% (Unnatural)
  • Raiders - 25% (Unnatural)
  • Rebellion (minor) - 10% (Unnatural)
  • Resident Specialist (new) - 20% (Unnatural)
  • Resource Lost - 10% (Natural)
  • Resource New - 10% (Natural)
  • Sea Monster (20+ HD) - 75% (Divine)
  • Sinkhole - 5% (Natural)
  • Spy Ring - 60% (Unnatural)
  • Storm - 80% (Natural)
  • Tornado - 10% (Natural)
  • Trade Route Lost - 15% (Natural)
  • Trade Route New - 15% (Natural)
  • Traitor - 30% (Unnatural)
  • Vengeful Stranger - 10% (Divine)
  • VIP Visitor - 25% (Unnatural)
  • Volcano - 2% (Natural)
  • Wandering Monster (20+ HD) - 75% (Divine)
  • War - 40% (Unnatural)
  • War in Heaven - 10% (Divine)
  • Waterspout - 25% (Natural)
  • Whirlpool - 25% (Natural)

I used the list (and excel formulas) to calculate whether an event happens that year, and then calculate the month and day.  Taenarum is in southern Laconia, the region of Sparta, so I went ahead and created events for the year for that region.  If the players ever travel, I'll do the same for the remote regions.  I use a random list of Greek gods to determine whose favor or disfavor is earned if a divine event is indicated.  I also have a list of the major cities, their rulers, and ruling houses, to randomly generate the other party where an event implies an outside power.  The famous rulers of Greek mythic history - villains like Menelaus and Agamemnon - make great power mad tyrants to put in the game world, starting wars and stirring up trouble and intrigues.  I have a hope that any high level Taenarum campaign becomes 'A Game of Thrones, Greek Edition'.

Here's a quick look at a practical example for Laconia.  I created a list of events for the Laconia region; 13 events are happening over the course of the year, and by dint of random results, 4 of them are happening in the current month (Thargelion).  Here's the list:

  • Day 13 Fire, Minor
  • Day 19 Famine
  • Day 22 War in Heaven (Hades and Hermes)
  • Day 24 Storm

The day 13 event is also where I've placed the festival of Thargelion on the calendar.  Thargelion is a fertility festival honoring Apollo, involving sacrifices and fires - criminals were even used as human sacrifices in earlier times.  Dice indicated the fire is divinely influenced.  Allowing the inspiration to guide me, here's how I'm interpreting the results:  the local lord (a bit of a malefactor) has framed a political rival as a criminal so he could hand him over to the priests for the Thargelion sacrifice and burn him alive.  Displeased with the injustice, Apollo causes a fire in the town that ends up destroying the granary, causing an immediate food shortage for the isolated home base of the campaign (the famine).

The players may or may not be involved in the events - I'm perfectly comfortable if the events happen behind the scenes (as news and rumors when the players return to town) or whether they become potential plot hooks.  The players might hear about the unjust arrest and someone might try to hire them to foment a rescue.  Perhaps the local priests ask for help appeasing Apollo in the aftermath.  I just like having interesting things going on in the background when the players return from the dungeon.  Additionally, omens and oracles are an important part of the Greek theme, and the list of events provides plenty of material for supporting prophecies and omens and foreshadowing some major future catastrophe.  Maybe the players have a vision in the dungeon (there are plenty of oracles and seers down there, hags and magic statues and scrying pools and whatnot) and some of these events can be foreshadowed through visions.

Looking ahead to Day 22, 'War in Heaven', consider this:  Hades is the god of wealth and the Underworld, which makes him the ideal patron for a dungeon like Taenarum and its many vaults of gold and wealth.  Hermes is a god of Thievery.  I'm thinking the 'War in Heaven' event will involve a bold heist in the depths of Taenarum by Hermes or one of his well known followers - it's the kind of event that could have ripples throughout the dungeon.  It suggests more potential plot hooks for the players, too - like if Hermes or a messenger approached the players undercover to do the heist, or Hades approaches them to foil it.  "Wait a second, that cloaked stranger literally disappeared in the alley - were we just visited by a god?"  Great fun, right?

Anyway, wrapping up this particular post - these steps aren't that hard to do - build a calendar, create a list of possible events, generate a list of actual annual events for the local region, and then use inspiration and dice to add details and get them ready for play.  The mileage you get out of a small amount of work is phenomenal.  Time-bound events add a ton of inspirational value to the referee, while adding depth and dimension to the setting.  What are you waiting for - get out there and add campaign events to your game!

Wednesday, May 28, 2014

Megadungeon Practices


I've been meaning to do this for a while - list out the practices I've incorporated into building my megadungeons.  I've been running megadungeons for the past 3 years and have been building up some useful experiences.  The previous megadungeon was called The Black City - it was all about Vikings exploring the dungeons beneath a ruined, alien city in the frozen north.  The current campaign (Taenarum) involves the road to Hades.  The defiant god of the underworld has populated a massive dungeon with monsters and traps to lure arrogant heroes to their deaths.  I've also had this on again / off again relationship with a project called Harrow Home Manor, but it's on the shelf for a little while why I focus on summer gaming with the neighborhood kids and family - Harrow Home was too horror oriented.  I'm sure I'll get back to the horror soon.  That is not dead which can eternal lie... you know how the lines go.

The concept behind a megadungeon is to have a location expansive enough that most or all of the adventures can happen in and around the dungeon.  During the campaign, there will be side treks in the wilderness and excursions to towns and cities, but the primary action is back in the main dungeon.    The dungeon should have enough material for a party of adventurers to progress through many levels of experience by moving down to more dangerous levels - maybe all the way from levels 1-10 if you're ambitious.  I've incorporated another piece to the definition as well - the megadungeon should be large enough that multiple adventuring parties can be exploring it at the same time.

In no particular order, Beedo's principles for the megadungeon campaign:

Top Down Design
I start with a compelling rationale for the megadungeon - an elevator pitch - and then make sure there's a good variety of themes for levels and sublevels.  This provides an outline for the overall project, a roadmap on where you're going.  Here's a recent example of this approach:  Nodes of Taenarum

Accessibility
I like the megadungeon to have "highways" in and out - a mechanism for fast access that lets experienced parties quickly get down to the unexplored areas without wasting a lot of table time dealing with trivial wandering monsters and travel.  The Black City had 'the transit tunnels', a series of subway tunnels beneath the ruined city.  Taenarum has the wide, spiraling 'road to the Underworld'.

Vertical Transit
Each map should have multiple ways up and down (unless choke points are an explicit part of the design - but like salt, use them sparingly).  I also like chutes, elevators, and portals.  The vertical access points also provide rationales for why monsters of higher and lower levels mix it up.

Use a Stocking Algorithm
I typically use a home-made random stocker modeled after the Moldvay BX version, where 1/3 of the rooms are either empty or contain monsters, and the other 1/3 is either a trap or special.  I've even done some posts on the blog giving some ideas how to build a random stocker in Excel.  Take the time to create useful trap and "special" tables for yourself.

Customize Monster Lists for Areas
Build unique encounter lists to fit the thematic areas of the dungeon.  Include the chance of encountering weaker monsters from the level above, and stronger monsters from the level below.  They travel around!

Deeper Levels = Greater Danger
Make it clear that deeper levels are more dangerous.  The megadungeon is a player-driven sandbox, and this structure lets the players have a degree of choice over the amount of risk they'd like to undertake.  Here's an example of a rationale for why depth = danger:  The Dungeon as Estuary.

Gold as Experience
Making gold the primary vehicle for gaining experience motivates the players to seek lucrative hoards and prioritize treasure over combat.  Roleplaying, trickery, and noncombat solutions are just as relevant as fighting.  The standard for giving out experience is about 80/20 - 80gp for each 20xp of monsters killed - a 4 to 1 ratio.

Progressive Elaboration
Start with a minimal keyed description for each room, and add more details only as necessary when the area becomes relevant for game play.  It lets you create the maximum scope in the least amount of time:  Developing the dungeon through progressive elaboration.

Pacing Advancement
A major advantage of using Gold as XP is that you can calculate how much treasure can be potentially recovered from an area as a lump sum, allowing a top-down approach to allocating experience across each level and sub-level.  This gives the referee rough insight on how quickly the party will be ready to descend to more dangerous areas.

Harmonizing Random Results
I'm a big proponent of not altering dice rolls during game play, but I do advocate adjusting random results during dungeon stocking.  However, the challenge of reconciling inconsistent random results (like antagonistic monsters living nearby) spurs creativity.

Set Piece Locations
One way to ensure large semi-random levels maintain their interest is by including some well-designed set piece encounters on each level - they act as points of interest, destinations, and landmarks.

Factions and NPCs
Too many unintelligent monsters are boring.  Rawr, I'm a monster.  Invest time in creating interesting factions and NPC leaders that have their own goals and motivations for being in the dungeon.  It opens up a political roleplay dimension during dungeon exploration.

Overarching Stories
Don't be afraid to put some story behind the dungeon inhabitants.  "The cultists of Pan are exploring the dungeon to find the lost elemental artifacts and return the world to primordial nature; the followers of Hecate want to open the gates of Tartarus".  Giving the NPC factions motivations and goals allows stories to emerge naturally as the players interact with them.

Rivals
One of my signature elements is to have lots and lots of NPC rivals to the players - other adventurers, explorers, treasure hunters, and so forth - friendly rivals back in town, dangerous opponents when met in the dungeon.  Some of the most memorable moments emerge when the players finally get the better of their long time rivals.

X is for Killing
The megadungeon is a sandbox where the players are free to try anything; if you've put something in front of a group of players all holding sharp pointy things, don't be surprised if they stab it.  There are no DMPC's or Mary Sue NPCs in the sandbox:  X is for Killing

Campaign Events
Have a list of random events that are happening in the world, place some of them on the calendar, and call them out as they happen.  Even though the players are focused on the dungeon, this puts the world in motion and creates a sense of time and verisimilitude.  Example:  Campaign Events for the Black City

Flow of Information
There needs to be a steady flow of information from you to the players so they can plan interesting excursions into the dungeon.  Two easy forms are rumors and quests, discussed just the other day:  Rumors and Quests.  Treasure maps are awesome too.

Plan to Restock
My players don't typically return to areas they cleared previously, but the dungeon should provide a rationale for why monsters return and areas become populated again.  In Taenarum, there are Stygian wells that allow undead and spirits to creep back into the dungeon, and there are powerful servants of Hades that literally reset traps and restock areas with enchanted monsters.

I hope to make this a living list of principles - I'm sure I haven't captured everything in one pass!

Edit - here's the first thing I forgot to include on the first pass:

Support Episodic Play
Place a town nearby the dungeon.  Start and end each game session back in the town (preferably at the tavern, for style points).  This allows players to come and go in between game sessions - important when you're gaming with adults who can't meet every week.

Monday, May 26, 2014

Dungeon Quests and Rumors



I'm formalizing a new technique for my sprawling megadungeon, Taenarum.  Let me know if you've done anything similar, and how it's been working out.

The basic problem is scope.  Taenarum, the entrance to the Underworld, is somewhat large - it is spread out, if not dense.  Each dungeon level spans 4 sheets of graph paper as quadrants.  The quadrants contain anywhere from 25 to 40 rooms, and each has a slightly distinctive theme.  The main road (a vaulted 20' x 20' passage) wends through all 4 quadrants as it spirals down into the earth, eventually leading to the River Styx some 9-10 levels below.  On either side of the main road are the many side passages and lairs that constitute the encounter areas for that level.

I'm pacing the dungeon so that a party should have to explore and loot somewhere between 1.5 and 2 quadrants before feeling ready to head down to the next level.  I certainly don't expect anyone to clear the dungeon.  It's just not that interesting to crawl a massive dungeon room by room.

In the past, I've used rumors and hints in town to give the players more choices about planning their game session.  The idea of calling them "rumors" and "quests" is to put some more structure and discipline into the mechanism from my side of the table.  Rumors are nuggets of information that don't have an expiration date;  quests are windows of opportunity to do something for gain, but if you pass the opportunity by, it's assumed some other adventuring group attempts the quest and the opportunity is now gone.  I just completed mapping and stocking the final quadrant of level 4, so I'm way ahead of the players and campaign - I'll be able to start on the campaign hex maps shortly.  I'm circling back to create rumors and quests for the 16 or so quadrants that are already out there.

Here's why these types of things, the rumors and the quests, are important.  The players need information to make decisions and create plans.  If the players are aimlessly wandering, and know very little about the dungeon, each decision - to go left, or to go right - isn't much better than a coin flip.  The game is much more satisfying for all involved when the players are creating explicit plans to follow their own goals.

The players naturally pick up clues and information just by exploring the dungeon, certainly.  You want them to have a list of open questions and potential goals or targets that carry over from previous sessions, so each game night starts with them planning the night's excursion.  Almost every game session of Taenarum starts back at the adventurer's tavern.  The image of grubby adventurers pouring over maps and notes and arguing over objectives across a wooden table, surrounded by mugs of drink, is fairly well grounded in their actual behavior.

I give the players an opportunity to learn a new rumor each week just by networking at the adventurer's guild hall - they've gone out of their way to make introductions to some of the other groups that visit the place.  Now I'm going to start formally introducing quests - maybe not one per session, I'll see how the pacing goes.  I'm going to attach some kind of monetary award to the quests to make them more enticing - but ultimately, remember that the real rewards are in the dungeon.  Perhaps a few hundred gold pieces (per dungeon level of the quest) is enough?

Since I have two different groups of players exploring Taenarum, introducing rumors and quests gives them additional reasons not to trod the same ground.  I may have mentioned this, but they do share notes and try to visit the same places if there's a chance to get the same boon!

I could eventually add people to act as patrons for the quests, but for now I'll just improvise a villager, adventurer, or visitor to the town as the situation requires.  One of the first things I make for a new campaign are some tools for quick NPC generation - they come in super handy for these types of things.  Perhaps I'll even introduce a message board where quests get posted.

Below are some sample rumors and quests for the four quadrants of level 1.  One of the groups already discovered the source of rumor 1.1 (the shrine of fate) and guided some traders to the market (quest 1.2).

1.1
Rumor:  There's a secret shrine to the Fates that grants boons - a bronze man points the way!
Quest:  Clean the despoiled shrine of the goddess Aphrodite and earn her blessing.

1.2
Rumor:  The Arch of Greed - a great treasure lies beyond it.
Quest:  Find the shortcut to the monster market to help guide some traders.

1.3
Rumor:  There's a chasm that provides quick access to a few of the lower levels.  Bring ropes!
Quest:  Rescue another adventurer from enslavement to the dryads (or the alseids - can use this one multiple times).

1.4
Rumor:  There's a statue hidden in a pit that pours healing potions out of it's mouth!
Quest:  Pig-men of the sorceress kidnapped my daughter, please rescue her.  (In reality the daughter ran off to be an apprentice).


*Image is from The Shady Dragon Inn, a great resource for NPC's and parties for classic D&D.  Sadly, it's not in PDF on dndclassics.com... yet.

Tuesday, April 22, 2014

Using VLOOKUP to Generate Game Content in Excel

Part 1 on Monday looked at using RANDBETWEEN and IF statements to generate random numbers, evaluate conditions, and return a result.  Today we'll take it another step of the way in terms of generating stuff for your game by showing how the VLOOKUP function in Excel works.  VLOOKUP stands for Vertical Lookup, and requires your content to be in a vertical list.  The first column is the lookup value -  the number you’d be trying to roll on a die in a table.  If your table consists of 10 wandering monsters, you'd expect column one to list the numbers 1 to 10, in ascending order.  The whole set of columns (B2 through E11) is an array.  Here's a simple table we'll use for an example:



The basic syntax of the function is =VLOOKUP(lookup value, array, column index of the data to retrieve).  In the example above, column B is index 1, C is 2, D is 3, E is 4.  Here's how a simple VLOOKUP formula would look to return a random 1st level monster from that table:

=VLOOKUP(RANDBETWEEN(1,10),B2:E11,2)

Let's break it down.  A random number (RANDBETWEEN(1,10) is substituted for the lookup value.  The array is the entire table - cells B2 through E11.  I also recommend going and putting dollar signs in front of the table array values so the actual formula looks like this:

  =VLOOKUP(RANDBETWEEN(1,10),$B$2:$E$11,2).

The dollar signs lock the lookup (in Excel terms, it's called an absolute reference).  Normally a formula increments the cell values when you copy and paste the formula to other cells.  The dollar signs ensure the vlookup consistently checks the correct cells for values.

You can easily change which column the content is retrieved from by updating the column index -

=VLOOKUP(RANDBETWEEN(1,10),$B$2:$E$11,3)

By updating the column index to 3, a result of 7 on the RANDBETWEEN number yields "gray ooze".  You can even get fancy and make the column index a random number, too - let's say you didn't care if the VLOOKUP returned a 1st, 2nd, or 3rd level monster, you could put in a formula like this in place:

=VLOOKUP(RANDBETWEEN(1,10),$B$2:$E$11,RANDBETWEEN(2,4))

VLOOKUP is an important building block.  Along with the RANDBETWEEN and IF statements we looked at Monday, we're cooking with gas!  Let's look at a simple practical example I used in the Black City game to generate tons of Viking names on the fly.  Consider this logic I used for Viking names.  First you have basic names (given names).  A last name has a 50% chance of either being a father's surname, a location, or a nickname.  So Vigor son of Baldi could be Vigor Baldison, Vigor of Zealand, or Vigor the Hook Nose.  As long as you have content tables with the three lists - the first names, the locations, and the nicknames, automating name creation in Excel with the functions we've reviewed is a snap.

In this next example, here are 10 given names (out of around 300) to show how the concept works.  I called this worksheet "name content":


On the next worksheet, I'll go ahead and put the following formulas in place.  You'll note that when you highlight an array of cells in an external worksheet, Excel prepends the sheet name to the array - it shows up as 'name content'! in the examples below to let you know it's referencing another sheet in the workbook.

Column 1 - generate first name
Formula:  =VLOOKUP(RANDBETWEEN(1,10),'name content'!$A$2:$B$11,2)

Column 2 - use a random number to generate type of last name (1-4).  This is just a working cell to create a value for columns 3 through 5 to check against:
Formula:  =RANDBETWEEN(1,4)

Column 3 - check the value in column 2 to see if there's a surname (on a 1 or 2 out of 4); if so, retrieve a firstname from the 'name content' sheet, and append "son" to the end to make a Viking surname.
Formula:  =IF(B2<3,VLOOKUP(RANDBETWEEN(1,10),'name content'!$A$2:$B$11,2)&"son","")

Column 4 - check if the last name identifies the character's homeland; if so, retrieve a location and add "of " to the beginning:
Formula:  =IF(B2=3," of"&VLOOKUP(RANDBETWEEN(1,10),'name content'!$A$2:$C$11,3),"")

Column 5 - check if there's a nickname; if so, retrieve a nickname and add "the " to the beginning of the nickname:
Formula:  =IF(B2=4,"the "&VLOOKUP(RANDBETWEEN(1,10),'name content'!$A$2:$D$11,4),"")

Column 6 - Let's concatenate the first name and the content of the other columns together to make a handy column for use in the game:
Formula:  =A2&" "&C2&D2&E2

Here's the working table with all the formulas in action:


We get a nice list of Viking names (all with A's in the first name, since I only put about 10 in the content table.  But you get the idea).  Here's that list:

Aran Anirson
Agnar of Dublin
Agnar the Black
Alrek the Beer-Drinker
Anir the Bellower
Annund Armodson
Alfgeir Agnarson

Muhaha - what will you do with your new powers of Excel?  Many times, I generate a list of names and personalities in advance, and keep them saved in a text file for use during the game.  When a need arises, I'll just pull the top one off the list as necessary during the game.  When the players run into bandits, or traders, or start talking to a random guy at the tavern, the improvisation goes much better when I can rattle off that it's "Alrek the Beer-Drinker" who they're talking to instead of 'random Viking guy'.

In fact, I use long lists of personalities, quirks, and mannerisms generated through VLOOKUPS quite a bit. I don't do well improvising interesting people on the fly and can use a little help. I may not know how I want to portray the bandit leader (so they're not like every other bandit) when I roll a wandering monster, but once I see that the leader is violent, or jealous, or risk averse, I can take it from there pretty easily and make a fun encounter.  NPCs with personalities keep the game interesting for me, and you never know when that random encounter is going to lead to a memorable scene or a future henchman or an enduring villain because you took the time to give the character a name and a personality hook, and then something funny or meaningful happened.

Getting back to Dungeon Content, I try to have giant tables of empty room types and trap types to integrate into the random stocker, as well as monster customized for each level and area of the dungeon.  You should see how the same techniques of content lookups and concatenation used to generate the Viking names can be used the same way to integrate content for a dungeon stocker.  However, let's be clear about something.  This is not programming.  The goal is not to make a finished tool to publish.  The goal is to give you a reason to dump all those random tables and content lists you've been acquiring, to dump them in Excel and to arm you with some basic techniques to generate tons of cool content during your game prep - and to do it much quicker than rolling and flipping pages and writing stuff down.

However, one type of content where there's no substitute for hard work and brainstorming is 'Specials'.  The 1E DMG has a pretty good list of dungeon objects and special properties, and -C over at Hack and Slash put together a list of types of specials - descriptors like Riddles, Quests, Terraformers, and Shops.  For a large dungeon like Taenarum, I try to smash it all together and see if something inspires me while trying to make sense of a bunch of random inputs.

Here's an example from this morning:  I was working on a room on level 4 of Taenarum and it contained a 'Special'.  The random results indicated it was trapped, weird, involved a pillar or column, and was intelligent.  Furthermore, the trap had to do with blindness.  Yikes.  What to do?  Well, the adjacent room has 'tritons' which clambered up from level 5 below.  Tritons in the game are scaly fish men with bug eyes and gills.  I decided the thing in the room is an Obelisk (close enough to a pillar for my purposes) and the tritons are worshipping it.  They're triton heretics who have turned their back on Poseidon, and the Obelisk represents Dagon, who they consider a scaly lord of the deep.  Furthermore, Dagon is trapped in the Obelisk itself!  In truth, Dagon is no god or demon, but was an Atlantean sorcerer imprisoned in the rock by Poseidon before the sinking of Atlantis.  The Obelisk was retrieved from the depths and hidden in the dungeon by Dagon's followers - it was brought up from the sea caves below.  The Obelisk communicates telepathically and can strike unbelievers who touch the stone blind.  Smashing the Obelisk destroys the magic prison and releases Dagon from an interdimensional space.  He's now an insane wizard with a god-complex and a bad attitude.  Great fun, right?

This is why jamming together a bunch of random results from giant mega tables is entertaining.  Dagon the mad wizard could make for an interesting campaign plot twist if the Obelisk is ever found and broken.  I doubt I would have put something like it in that area of the dungeon without being forced to reconcile some random inputs.

I hope this series has been helpful.  I'm at close to 500 rooms for Taenarum, the new dungeon, and a big part of why it's going so quickly is having tools that I like.  Whether the end result is good or not is a judgment best reserved for my players, but the two groups seem to be enjoying the campaign so far.  We got in a couple of family games over the holiday weekend, so I'll have some game reports before the end of the week.

Edit:  Based on requests in the comments, I've tried to put a sample Excel with the formulas out on a public DropBox - try to access it here:   VLookup Examples

Monday, April 21, 2014

Excel and Random Dungeon Stocking

If you're familiar with a programming language, you can go pretty far in automating a random dungeon .  Not everyone is a programmer, but lots of people use Microsoft's Excel - it's been a workplace standard forever, and lots of students get access to Office at university.   Here are some tips on generating basic content with Excel that anyone can try.

The 1980 Moldvay edition red book for D&D has a simple stocking approach on page B52 - one d6 roll for room contents, and a second d6 roll for treasure.  Today we'll automate those rolls in Excel.  The first Excel function we'll look at is RANDBETWEEN - it generates a random number between two end points.  For instance, type "=RANDBETWEEN(1,6)" in an open cell in Excel to generate a number from 1 to 6 (omit the quotation marks when you put it in Excel).

Because of how quickly you can copy formulas between cells in Excel, this is also handy for generating lots of random numbers without rolling dice.  I always have a spreadsheet open to the side when I'm running a game, with around 20 cells of "=RANDBETWEEN(1,8)" to generate lots of hit dice for wandering monsters.  I have similar lines for other common hit dice values - "=RANDBETWEEN(1,8)-1" for those 1-1 HD monsters like goblins (treating zeroes like ones) or "=RANDBETWEEN(1,8)+1" for hobgoblins.  You can add multiple results together -  "=RANDBETWEEN(1,8)+RANDBETWEEN(1,8)" adds two 8-sided rolls together for a 2 HD monster.  You can use this approach to generate ability scores on the fly for NPCs - a formula like the next one generates an ability score between 3 and 18:

"=RANDBETWEEN(1,6)+RANDBETWEEN(1,6)+RANDBETWEEN(1,6)".

I leave one cell free on the sheet where I type a letter or number - you'll see that whenever you make a change to that cell, all of the random values reset, effectively 'rerolling' all the random numbers.  There are many rolls that are important to roll in front of the players - attack rolls and monster saving throws, for instance.  But for set up items like hit points, it's great to have this kind of thing handy while you're running a session.

Getting back to the dungeon stocker, let’s take a look at using the IF function in Excel (a simple type of if-then-else you'll see a programmer use) and marry it up with our random roll.  We can nest a couple of "If" statements to generate room content in line with Moldvay's tables.  Assume you've put your 1-6 die roll in cell A1.  In cell B1, go ahead and put in a formula like this:  "=IF(A1<3,"Monster",IF(A1=3,"Trap",IF(A1=4,"Special","Empty")))"

Breaking it down step by step, the formula first checks to see if the dice roll is less than 3 (meaning a result of 1 or 2) in which case the value is "monster".  If it's not a result of 1 or 2, it checks to see if the result is 3, yielding "trap"; it goes on to check if the value is 4 (special) and anything else is "empty".  Simple, right?

We need to add a second dice roll for treasure in cells C1 and D1.  In C1, go ahead and put another d6 roll - "=RANDBETWEEN(1,6)" - and in cell D1, put a slightly more complicated "IF" formula like this:

"=IF(AND(B1="Monster",C1<4),"Treasure",IF(AND(B1="Trap",C1<3),"Treasure",IF(C1<2,"Unguarded Treasure","No Treasure")))"

By using IF and AND, we're able to evaluate two results at the same time - the room contents we generated previously and the new dice roll - to see if treasure is present.

To finish up today, go ahead and copy the four cells down the page.  An easy way to do it is to highlight the four cells containing formulas (A1, B1, C1, D1).  In the bottom right corner of cell D1 there is a little square in the highlighted outline - by clicking on it, holding, and dragging your cursor down the sheet, you can auto-copy the formulas down the page.  This way you can generate the contents of lots of rooms at once.

Even if you don't plan to do any random dungeon stocking, the random number generation available in Excel is really useful.  Let me know what you think.  In part 2 I'll cover how the VLOOKUP function can be used to retrieve actual content results from our content tables to make the stocker provide a little more value.

Wednesday, April 16, 2014

Developing the Dungeon through Progressive Elaboration

I'm a general manager these days, but most of my industry experience is in IT project management.  Software projects are notoriously high risk and prone to under-delivering or killing the budget.  Over the past 10 to 15 years, different approaches to structuring  software projects have come into vogue to help guide the creative process.  I always enjoy seeing how I can apply stuff learned on the day job to the night job - campaign creation.  Your campaign development is a work product.

Traditional project approaches use a structure called 'waterfall'.  All the activities of a phase are completed before moving on to the next set of activities.  In software terms, that would be identifying all the requirements for the software first, then creating designs and blueprints, then building it, then testing it, and so on.  The work product from the previous phase is an input flowing into the next phase, usually represented through a step chart (gantt chart), therefore the term 'waterfall'.  In campaign creation, you could imagine creating all the hex maps first, then maps for all the towns and cities, then descriptions of all the towns, and so on - exhausting one activity completely before moving on to the next thing.

Scrum (a type of "agile development") is focused on quickly getting a working iteration of software published, putting it in front of the customer, and moving on to the next iteration while incorporating feedback and customer insights.  If the waterfall approach had you building one large layer at a time, the Scrum approach involves a 'vertical slice of the cake' that has a snapshot of all the layers accounted for in that mini product.  In dungeon terms, imagine creating a few rooms, fully mapped and detailed and keyed and packaged, and then getting some players to experience those limited rooms.  You'd incorporate what you learned in the first game session when you prepared for the next session.  That;s a bit like a Scrum project.  I'd say most just-in-time campaign creation uses that approach.

The approach I've been taking with Taenarum involves "progressive elaboration".  There was a software project management approach championed by IBM in the late 90's called "RUP" - the rational unified process - that used progressive elaboration as a core method.  One of the driving metaphors was developing a walking skeleton, and slowly adding on to the skeleton the way a sculptor would add clay to a metal frame.

In Taenarum, I've started with expansive maps of the dungeon levels, without adding too many details - just the layouts and number of rooms.  I make some notes on the theme of the level, and a list of monsters to plug into the random stocker.  Then I use a random stocker to quickly add raw content to the rooms.  These few things give me that underlying 'metal frame' - the walking skeleton.  Sometime later I do another pass over the level, harmonizing  and rationalizing the random results to make it either coherent or interesting… (and sometimes even both).  Doors, secret doors, and other map objects get added in.  Treasure is added where appropriate - first as gross sums to balance the level, and then it gets decomposed into more interesting forms when time permits.

Here's an example.  After the first pass through the random generator, I'd have an entry like this:  Room 7, monster & treasure:  Traders.  Next it becomes a 'trader camp' with 5 traders and 800gp treasure.  On the third pass through, I decide to give the main guy a name and personality (table driven) and change the raw treasure total into something more interesting.  (Pro tip:  the ACKS book has handy tables for trade goods as replacement treasures for coins - the tables are massively useful, regardless of system).  Here's how the final room ended up looking in my notes:
7.  Trader Camp
---------------------
Pillared chamber used as a camp by a party of traders led by Kyriakos of Gytheio - a handsome man with earrings and the attitude of a practical joker.
5 Traders (level 1 fighters) and 3 slaves (normal men).   Incidental weapons (spears, clubs) and leather armor
Trade goods:
6 bundles of fox pelts (90gp total)
2 casks of distilled wine (400gp total)
3 rugs (15gp total)
8 weeks of food, water (40gp value)
100gp, 1500sp
10 +1 arrows with bronze tips, carefully wrapped
I use a little excel sheet to generate hit points on the fly, and can improvise or derive combat stats as necessary, so I'd usually never put that kind of thing in my notes.

You may wonder - why bother with all those iterative passes over the same material, when I could have jumped right to creating the entry for room 7 on the first pass?  It comes down to balancing scope and detail.  The barebones version of the level, with a map and raw content, lets me improvise as necessary if the players wander farther into the dungeon than are fully prepared.  Any one of us could improvise a room like the Trader Room - the worst case is that it might slow the game down a little if you need to roll a bunch of dice at the table.  By starting with the skeletal framework, I've been able to sit down with a couple of hundred more rooms available than otherwise - Taenarum is over 300 rooms in just a few weeks of development.  The finishing details get added as time permits, or when I know there's a good chance the players will visit a given area in an upcoming session.

Back before I mused about becoming the Anti-Beedo, I was definitely a 'vertical slice of cake' kind of referee, who would have completely finished  Room 7 Trader Camp before moving on to Room 8 - I developed things serially.  Anti-Beedo wants to cover as much ground as possible, and is willing to leave the finer details ambiguous until time permits or it's necessary for clarity.  The approach is working, and I've been happy with Anti-Beedo's results so far.  I have more dungeon material in Taenarum in just a few weeks than I had in the Black City after many many months.

Monday, September 24, 2012

Abducted by Fairies


So - what happened to your character while he or she was abducted by the faeries?

Fairy abduction is a common enough literary theme, but we don't use it very often in games - mainly because players hate losing control of their characters!  It's a fantastic plot device in a horror game because it underlines themes of helplessness and impotence against otherworldly powers.  In a fantasy or adventure game, time spent in the otherworld should give the character some kind of benefit to offset the inconvenience of having to play a backup character for a time.

Here's a small table of "benefits" that might happen to a character who has been spirited away to the otherworld.  There are cross-cultural similarities between fairy abduction, alien abduction, carried off by spirits (kami), or snatched by one of the gods, so replace the word "fey" with the other dimensional being of your choice.  Some modern UFOlogists even use the term "ultraterrestrial" to marry these phenomena into a singular theory.

In my current campaign, one of the comely male characters was whisked off by a group of Norse dark elves a few weeks ago, after the rest of the party was put to sleep.  Assuming he's returned to the world in the near future, here are the kinds of things that could happen to him after he's spent time with their dread queen:

1 Time Loss
2 Fairy Marked
3 Abused
4 Future Sight
5 Psychic Empowerment
6 Favored
7 Altered State
8 Scarred

Time Loss
The character might have been gone for only a few hours in our world, but years or decades had passed amongst the immortals of the fairy world.  Advance the category on the age track (if using an aging table), or increase intelligence or wisdom by 1 point and reduce constitution.

Fairy Marked
The character returns with a distinctive birthmark that improves reaction rolls with fey creatures by +1, and takes a similar penalty with inquisitors or enemies of the fey.  (We also see these called devil's marks or witch marks).

Abused
Many abduction stories have a sexual component.  The fey took something personal from the character - in time, a half-human offspring returns to the world, fully grown because of the time differences between the otherworld and the mortal world.  The offspring is a wicked changeling who will challenge the character's place in the world!  (Literary examples of this type of character include Valgard (The Broken Sword) or  even Mordred (Le Morte d'Arthur).

Future Sight
The character was offered a disturbing vision of an unavoidable tragedy that will befall the mortal world in the near future.

Psychic Empowerment
Time spent among the faeries unlocks a latent psychic talent, such as ESP, telepathy, clairvoyance, or postcognition.  This new ability can be used once per day.

Favored
The character won the favor of a fey noble while in the otherworld; they return with a whimsical title and a magic item appropriate to the role.  Unfortunately, they don't fully remember all that was required of them.  Future comedic interludes are assured.

Altered State
The character has been enhanced or altered in a bestial way through exposure or experimentation - increase 2 physical attributes by a point but reduce their charisma.  (If it happens in the Black City, the character is now partially troll-blooded).

Scarred
The character returns with hidden scars, chunks of missing time, and a bad attitude.  Their hatred grants them a +1 when fighting fey creatures.

Saturday, June 23, 2012

Black City Retainers


No plan survives contact with the enemy... or in this case, no campaign survives contact with the players, at least in its initial form.  I've been busy revising a lot of my campaign tools this week to increase utility for the table top; all those random tables of which I was so proud are getting turned into spreadsheets to generate content in advance for faster use at the table.

I've converted the ship generator, name generator, hex content stocker, and just put together a simple spreadsheet for rolling up NPC retainers.  Here's a snapshot or so of 20 retainers appropriate for a Viking themed game.

On the island of Thule, retainers become available a number of ways.  Some men hire onto larger ships as rowers, sailing to Thule to contract out as mercenaries.  Sometimes there is a falling out with one's own crew.  And lastly, they're survivors of a failed party seeking to catch on with a new group.


Thursday, June 21, 2012

Randomly Generated Viking Ships


Big thanks to those insightful comments from yesterday - it really helped cement my decision to pregenerate more content, both for my tabletop game and for the future manuscript.  I like the idea of publishing the source tables in an appendix with some algorithms so a home DM can make their own content, too.

I put the excel programming in place and generated a few hundred sample ships yesterday - below is a table excerpt on how they look.  For me personally, this gives me plenty of bones to improvise the rest; keep in mind that somewhere I have a chart with ship demographics - what's the level of a knarr captain versus a longship captain, what's the crew breakdown of level 0 guys, that kind of stuff (it might be out here, too, I'll look for the link).  I also made a few hundred extra Viking names and personalities in case other names are needed.  Next up - a "meat shields" type generator for Black City retainers, and then I'm going to program the hex content generators.

Click to Embiggen


Sunday, March 11, 2012

Lauding the Wiki



One of the cooler things we've put in place the past month or so has been the Gothic Greyhawk campaign wiki.  I had asked for recommendations some time back, and folks suggested a few platforms - we started playing around with the free version of Obsidian Portal.

I wasn't interested in posting backgrounds, NPCs, and using the wiki to organize the DM's content - the typical stuff (I use OneNote on the laptop).  Instead, we've been using it to keep track of the group's public information - their expedition equipment and gear, treasury, list of magic items and resources, that kind of stuff.  This has been a huge advantage for enabling player planning.  Take the list of scrolls, for instance.  In between game sessions, anyone in the campaign can peruse the list of scrolls and see what's in the group's arsenal. Ditto with the magic items.  My players wouldn't have been nearly as successful in some of the recent knock-down fights without the ability to collectively discuss the resource pool and brainstorm in between sessions on how to deploy their resources.

They've even taken to bringing tablets so they can pop out to the wiki if necessary and look stuff up.

There's also a body of standard procedures that always gets written down and lost - marching orders, overnight watches, standard memorized spells.  Putting those things on the wiki and defaulting to the standard procedure has also stream lined play and maximized table time.  I dislike spending game time on stuff that you should be able to write down once, and just reference and update.

It's still a work in progress, but you can see what we've done with the wiki here:
Gothic Greyhawk on Obsidian Portal
List of Magic Items
List of Scrolls

*Smitty, one of the players, put together that nifty Gothic Greyhawk banner.  Thanks man!