ProblemI have a 40x30 map of Voivodja to populate for my A Red & Pleasant Land campaign. 1200 squares. I brainstormed a little over 100 ideas for locations. I have 1100 squares that still need something in them. At least a seed of an idea.
Available ResourcesCopies of AR&PL, Vornheim, Frostbitten & Mutilated, lots of other OSR books, and a Bachelor's in Computer Science.
SolutionThe beginnings of an app for auto-populating the contents for all of the hexes in a world. On the backend, I've written a basic text templating and random table rolling engine. I've given it a huge data set of useful random tables from the various OSR books I own. Where appropriate, results in random tables recursively reference other tables, which reference other tables, which references other tables, etc.
Pass in a seed file of hex coordinates mapped to terrain types, an optional file of "Named NPCs", and it will spit out an A5-sized PDF ready to be printed as a coil-bound notebook.
LayoutIt's just a simple templating engine on the backend, so it can be laid out however you write the templates. As I've currently written them, each hex is described as follows:
- Hex coordinate
- Region symbol (in this case, which vampire house's territory this falls into) and general theme for the hex (taken from the "adventures for their house typically involve..." list included with each House's monarch in AR&PL).
- Potential adventure hook, with potential references to random creatures, Named NPCs, locations, or other hexes.
- Terrain symbol (forest, mountain, etc.), landmark, and potential complications for that terrain (again, from AR&PL)
- Potential daytime encounter, with region/terrain/time-of-day appropriate random encounter. Encountered NPC may have a random want, random conflict with another NPC, and randomly carried item.
- A potential nighttime encounter, with the same random details as above.
- Potentially a second landmark for the terrain type in this hex. With the same possibility for a random encounter as above.
- Possibility for a random treasure located at this hex.
- A potential "Interior" (as per AR&PL) landmark, and a potential "perplexity" (AR&PL). Also a possible random encounter and random treasure as above.
- Plenty of blank space at the bottom to jot down notes (new landmarks, results of encounters, adventure modules that will live here, etc.) during the game.
- A list of any other hexes that reference something in this hex.
When appropriate, the adventure hooks, NPC goals, NPC relationships, etc. have a chance of referencing a different, random hex. So the hex-to-hex relationships for a fun, dynamic hexcrawl are also auto-generated. Those hooks, goals, relationships, etc. also have a random chance of referencing either a random encounter table or referencing one of the "Named NPCs".
The same templating and random table engine is used to populate a list of Named NPCs.
A seed file of the named NPCs you wish to have is passed in. The details for each NPC in the file can be written with as much detail as you like and can reference random tables just like hexes can.
In my case, I'm using a seed file listing several Pawns, Knight, Bishops, Rooks, Clubs, Hearts, Diamonds from each house, and I'm having the first name, last name, goals, relationships, etc. all generated from referenced random tables (Vornheim NPC & Aristocrat tables).
These Named NPCs are then automatically assigned at random to encounters, adventure hooks, NPC relationships, etc. in the listing of hex contents. Any hexes that reference the NPC end up listed with the NPC details in the back of the PDF.
So, what's the benefit of doing this? Why not just roll on the same random tables mid-game? Mostly, for speed of reference. As players are moving from hex-to-hex and asking if they see anything, it would be really nice to already have an idea of what obvious landmarks they might see.
Having a bunch of hex-to-hex relationships pre-generated should also help with making things dynamic and giving players reasons to travel to different locations.
I've done my best to write my templates and random table references to avoid too much nonsense, but everything is still generated at random. It's going to give results like "Brontosaurus is trying to seduce Red King" in some places. But this isn't meant to be the final say on exactly what is located in each hex and what is happening. Much like if you were rolling on these tables mid-game, the results should be interpreted and adjusted by the referee as needed. And, obviously, I can still write my own ideas and adventures into hexes where I want them.
Right now, it's not exactly an "app". It only exists as a Python script I can run locally. Good for my immediate needs of generating an auto-populated notebook for my campaign. But still needs work before it would be useful to anybody else.
Add more random tables!
Similar to the "Named NPCs", maybe add the potential for "Named Treasures", "Named Magic Items", etc. Basically, anything else that you'd want to be able to easily see a listing of what hexes it is referenced in.
Most of all, if there's demand for it, turn this into a proper app! (Either web app or PC/Mac/Linux app).