Automated GM-Free Adventures (a.k.a. "Shardhavens")
Basic Intro
So, as some of you know, I've been working on the first phase of an automated 'exploration' system on Arx, which will allow people to go out and have adventures on their own that can result in treasure/lore without requiring a GM present, but which still have risk.
The first phase involves generating 'shardhavens', which are a specific bit of Arxian lore: abyssally-tainted ruins and other places, where monsters live and treasures or lost bits of knowledge can be found.
These shardhavens are procedurally-generated mazes which are full of monsters to fight, treasures and trinkets and lore to find, puzzles to solve, traps to disarm, and other obstacles to pass.
In effect, they're each a tiny multiplayer roguelike that happens to give you interesting things you can use in the main game (and which come with an attendant risk of injury and/or death at the hands of horrifying monsters).
This thread is as much to share my own system design thoughts as anything else, but I know some people have been curious about it.
Basic Concepts
To start out, I defined the concept of a 'shardhaven type'. For instance, an old crumbling ruin will need different descriptions than a dank cavern system, and both will need different descriptions than a twisted, abyssal forest.
Shardhaven types are dynamic; we can add new ones as-needed. All other 'pieces' that get put together for a shardhaven when one is generated are marked as belonging to one or more shardhaven types, and so the system can easily find what it's looking for.
The concepts the system uses right now are fairly simple:
- Shardhaven definition
- Tilesets and Mood Fragments
- Obstacles
- Treasures/trinkets
- Monsters
Procedural Generation
The first and most important stage of a shardhaven's creation is to generate an actual layout. This is done through a procedural generation maze-maker I wrote, using a fairly standard recursive backtracking algorithm. (Since in my variant each 'wall' is one cell square in size, the algorithm has the limitation that it requires odd dimensions; a 21x13 grid is acceptable, but a 20x14 one would not be.)
Each square of the maze is assigned a template from the tileset; a tileset is a series of names and 'mad libs' type descriptions, such as:
The ceiling of this once-grand room arches high overhead. {} Columns line both sides of the room, making for shadowed alcoves where anything could be hiding. {} {}
When the rooms are instanciated later, each of those bits marked with {}
will be replaced by a Mood Fragment, which is a 1-2 sentence blurb like, "There are long, deep lines scored into the stone near the entrance, as though something once desperately clawed at the wall."
Once the maze is generated and tilesets are assigned to all the squares, exit markers are generated between each square of the maze; some of these exits have an Obstacle assigned to them, to make something the group will have to pass.
At this point, though, the shardhaven is still just a 'layout'; there's no actual rooms that players could go through. The layout actually stores all the 'state' of a shardhaven: who's explored where, who has disarmed what traps, and so on.
When a shardhaven is 'instanciated', it goes through that layout and dynamically builds all the rooms/exits necessary for a player to actually move through the shardhaven. It's at the instanciation phase that the 'mad libs' bit of tileset descriptions are filled in with Mood Fragments.
A shardhaven can also be deinstanciated; all the rooms and exits will be destroyed, but the layout remains intact. When reinstanciated, doors that have been broken down or traps/puzzles that have otherwise been disarmed/solved will still have their state (unless someone has 'reset' the shardhaven, which clears all that data).
Obstacles
Obstacles prevent a party from passing through an exit until they're addressed. There are three types of obstacles:
- Obstacles that each player must pass every time. (Think a chasm to jump over, which you have to jump back over if you backtrack.)
- Obstacles that each player must pass once. (Think a trial of spirit, where you don't have to pass it a second time when you backtrack.)
- Obstacles that only one player needs to pass and then the whole party can go through. (Think locks to pick, puzzles to solve on a door, and so on.)
Each obstacle has a collection of solutions. A solution can be a list of bits of IC knowledge (@clues), where if you possess that knowledge you don't even have to roll because you have the necessary knowledge to pass it. But more commonly, a solution is a dice roll; to jump a chasm, for instance, might be a dexterity+athletics roll.
Some solutions will pass the obstacle for everyone. The chasm might have a dexterity+carpentry roll to construct a crude rope bridge, in case you have a carpenter along; if the bridge is constructed, now everyone can pass instead of having to each jump across the chasm.
When you attempt to take an exit that's blocked by an obstacle, it tells you what your options are and lets you pick one. On failure, some obstacles will hurt you (don't fall into the chasm!); all obstacles will prevent you from attempting again for three minutes (to avoid people just spamming attempts, and to encourage RP in the room while you wait).
Monsters
When you enter a room, there's a chance of a monster appearing to attack you. (You can 'sneak' from room to room -- a dexterity+stealth roll -- to reduce this chance.)
Monsters are basically a random encounter table; there are 'mook' monsters (where multiple weaker monsters will attack you) or 'boss' monsters (bigger single monsters). When a monster attacks, everyone in the room is pulled into coded combat, where you have the opportunity to guard other players, attack, attempt to flee, and so on.
When a monster dies, there's a chance of it dropping alchemical materials (basically monster-parts) or a treasure.
Treasures (Trinkets and Weapons)
These are also randomly generated from what are called 'loot fragments'; a list of adjectives ('shining', 'gleaming', 'sinister', etc.), a list of weapon decorations, a list of item types, and so on.
A trinket might be an {adjective} {material} {item}, like a 'gleaming copper lantern' or a 'sinister orichalcum lyre'. (These items will actually figure into the magic system eventually, as they'll be able to be broken down for magic power to use in rituals.)
Weapons, meanwhile, are actual weapons for use in the combat system; those that are of lower-quality materials are just 'an ancient {material} {weapontype}', like 'an ancient rubicund halberd'. Those of high-quality materials actually get names generated from first/last fragments, such as 'Songstealer, a diamondplate longsword' or 'Neverweeper, an alaricite longbow'.
The material, quality, and type (small, medium, huge, or bow) of a weapon are picked from a probability table, and then the name and a description are generated.
Shardhaven Configuration
Everything about a shardhaven -- spawn rates and chances, how often monsters are 'mooks' versus 'boss' monsters, how difficult the monsters should be overall, and so on -- is tuned in the original Shardhaven record. This makes it easy to tweak a shardhaven, or to make one a lot more difficult than another.
Down the road, I plan to add a graphical shardhaven editor so that staff can actually manually tweak a shardhaven's layout after generation -- placing guaranteed monster encounters, marking a room that will absolutely contain a treasure, and so on.
Future Features
Shardhavens are just the first part of the greater exploration system, and this is only the first phase of shardhavens. There are still things I plan to add even from a player side, like:
- Potentially-trapped chests containing trinkets, treasure, or rare materials for the crafting system.
- The ability to rediscover lost lore in a shardhaven, thus earning @clues.
- Integration with the magic system down the road, where there will be magic-using ways to pass some of the obstacles.
- Wrapping a shardhaven journey into an 'expedition' which you need to actually ICly fund before you can embark on your adventure, and which will track what sort of things you found.
Wrap-Up
I've been trying hard to make the obstacles have an interesting variety of skills involved, so that there's reasons to bring smart people who aren't swordy-fighters (who then you want your tanks to protect in combat!), and so on.
I've even added a command to allow people with leadership to make a party leadership roll (once every 30 minutes) to reduce the difficulty of an obstacle temporarily, in order to represent drawing the party together to help someone pass along who might not otherwise be able to do a 'jump the chasm' obstacle.
But I am curious about balance -- about what sort of skills people want to be able to bring to these areas -- and what people think of such a system in general. The players I've run through the Castle of Testing (my test shardhaven) seem to have enjoyed themselves, but I'm always curious what sort of things people most /want/ to see out of exploration.