Idle thoughts: Storytelling in a Procedural Game
Original write-up by By: John Flannery; Technical Producer at Streamline Studios
Once upon a time, Daggerfall sent me on hours-long quests through maddeningly complex dungeons to retrieve an ingredient for the Mages Guild. Finding a better way to handle that sort of thing has been a key interest to me ever since. The idea of procedural dungeons and quests was fascinating. . .the reality, a bit dull. Using the dungeon as a format, the following examines an approach which just might work ?
Dungeons function well as an interactive storytelling device, as a player driven series of events with a short journey in-between each. The following could be similarly applied to other locales, or styles relatively well. Also, encounters within do not necessarily mean combat. Conversation, investigation, traps, puzzles, etc. would also count as “encounters.” Combat is just easy fun.
Here is the "Tomb of the Mad Ogre" (Illustrated)
A Dark and Eerie Entrance
Lair of the Minions
It’s a Trap!
Remnants of a sad past
Boss has a friend, and it ain't you!
Totally unexpected Betrayal!
A fairly standard dungeon, with appropriate story beats for your Pencil and Paper dungeon crawl adventure.
It hits the key elements. Introduction to set the tone, several world-building rooms, a combat or three, final conflict, even some betrayal for good measure. Each room hitting a beat to make the place feel alive and the players engaged.
The corridors between are a spacing tool. How much time does the journey take between learning about the minions and how they live (B) and the Great Betrayal (F)? This will be up to player choice and the encounters placed in those passageways. If the game is starting to drag, trim down the inbetweening.
Only 3 events are really needed to complete the dungeon: A, F, and G; Intro, Betrayal, and Final Confrontation. Almost a 3 Act structure on their own. The rest of the story is left as a potential, something that may happen, will add to the experience, but not be required for the core experience to make sense, or feel complete.
Comparing this to the average procedural dungeon (illustrated). Here we have rooms and corridors arranged in a look similar to the hand-crafted one. However, traps and critters, and maybe bits of lore are scattered about evenly.
In some respects, Narrative is like animation. It needs Anticipation and Follow Through. Building up to the beat, hitting it, then easing off afterward. In the hand-crafted we can accomplish this with distinct islands of activity, where the player sees the event coming. What will be in that torch-lit room? What reveal will shock or amaze us? Afterward, a breath (and collection of loot).
3: LOW HANGING FRUIT
An easy first step is to make the rooms/story beats fixed, but change up the corridors between them. Rather than hand crafting the corridors and their encounters, we leave that up to the generator. Likely we’ll have some sort of density parameter for how much is in them, help keep a decent pacing between key events. More on that later.
From the benefit side, we can focus the development on the events, rather than the whole dungeon. This could be used to make the individual events more interesting, and/or add even more events for the generator to pull from. Variations of Minions, or Mini-Boss, or Trap, etc. Making each playthrough get different pieces of the overall story.
Looking at the illustration, one immediate issue I see is that “F”, The Betrayal, which was key for the story arc, is no longer in the direct line of exploration or even required. We can have the generation require these elements to be more linear, or more interestingly we can have it place the keys for the required events in the previously required event. So to get through to G, you must first find and complete F, a little heavy handed, but it will get the player exploring.
At this point, we have the basic functionality of a narrative down. We do have some issues and opportunities before us.
Although not illustrated, there is a potential problem down the line. From a pacing perspective we want F to happen near the end, not at the beginning. With this in mind, we can work with the generation to place these rooms in an approximate order, like Zones. Start -> Act 1 -> Act 2 -> Act 3 -> Finale. . . Each zone getting farther from the entrance and closer to the Finale.
These Rooms/Events would then have a parameter related to their place in the story. Intro, Act X, Finale, and likely Epilogue, or even Epilogue X if need be. If our example was assembled from a pool of options, the generator would be grabbing 1 Start (A), 3 Act 1s (B, C, D), 1 Act 2s (E), 1 Act 3 (F), and 1 Finale (G). Then arranged them in a generally linear fashion. Concentric or spiral formations would be fun alternatives, though require more events to really take advantage.
Getting a bit crazy, what if we pull the events from the rooms. Each room would then be setup to accept types of events, rather than a specific room per event. This can be a bit twitchy, as we don’t want the dramatic final battle to happen in the minion’s lair, rather then on the swinging bridge, but this could allow us to change the environment entirely, but maintain the same arc.
This poor attempt at an ice cave illustrates the idea. And what ice cave is really complete without glowy ice crystals ?
Pacing is still an issue. We have the rooms/events placed at decent looking intervals from a top view, but each of those corridors may be empty, or hours of combat slog. Either would throw all our placement work to naught. We also want to look at total mission length, avoiding player fatigue is something to keep in mind. Related thought, many of these sorts of plots work for quick hit and go, not a lengthy campaign. Hours-long slogs for a shrub? Not a good plan. So, let’s ballpark some timing:
Major Boss: 10 minutes
Minor Boss: 4 minutes
Lieutenant: 1 minute
Expendables: 10 seconds a piece
Major Reveal: 2 minutes
Minor Reveal: 1 minute
Incidental Discovery: 30 seconds
With this in mind, we can get a rough gauge of how much time the current events will take, and compare with how long we want the mission to take:
Lieutenant + Expendables: 2 minutes
Minor Boss + Expendables: ~5 minutes
Minor Reveal: 1 minute
Minor Boss + Expendables: ~5 minutes
Major Reveal + Minor Boss: 6 minutes
Major Boss + Minor Reveal + Pack of Expendables: ~13 minutes
Combined a bit over 30 minutes of gameplay. If our target is 1 hour we have an idea of how much miscellaneous encounters we want in those corridors. Similar calculations can be done for the resource drain on the PC(s), for gauging minimal drops for average difficulty and such. . .
Placing of these miscellaneous encounters can be done with pure random. . . but frankly that will produce similar problems to the initial pure random dungeon we started with. Instead, we can continue the Anticipation and Follow Through mentioned earlier. For better pacing feel, want certain sections getting the bulk of the additional encounters, while others get slim to none. In our example, the passages leading to B, C, and E are good candidates. B and E as they seem good to build up combat wise, C as a misdirection. G and F seem more a quiet before the storm types. . . but that may be personal whimsy.
To accomplish this the Events would need an additional parameter, Encounter Weight or some such. With that in hand the system could focus its additions leading in to those rooms and away from rooms like D, which could use a quieter build-up. This also relies on the system knowing the direction the player is likely to approach from, so the weight of encounters is pushed more towards that side, establishing the build-up properly.
An enum related to the Type of Event would add a nice touch here. Help the system decide music, and possibly lighting scenarios for the coming scene.
Though truncating a lot of complex systems into a simplistic description, the above provides a template for how procedural systems could be used for a narrative. Keeping the pacing in place, while creating variation requiring multiple playthroughs, or conversations with the community to get the full picture. With some additional work, entire portions of a story-driven game could be left to such a system, with fair to good confidence that the side quests will stay engaging.
To make a wrapper around the dungeon procedural, the quest itself, would be a different rambling attempt at systems design. In Outline it would look something like:
Choosing a Goal (go to X, Kill Y; Go to X, Get Y; etc.)
Choosing a Locale
Choosing a key rival/opponent/idle squatter
There are some interesting possibilities in this space that we’re looking forward to exploring. In the meanwhile, does the above click with you?
Read more stories...