Wednesday, February 22, 2012


The most ambitious (and vestigial, so far, though I do have a little prototype) aspect of the SnargleQuest project to date is its approach to narrative -- essentially, procedural quest generation.  Doing this well is generally found to be quite a difficult problem, and most games to date have kept their aspirations exceedingly modest -- e.g. a random quest every few levels to kill n monsters of type T.  I have some concepts in mind for SnargleQuest that I hope will demonstrate the feasibility of a much richer system.  My ideas here are still developing, so this is all to be taken with salt.

My basic approach is to represent common story elements as elements in a dependency graph, and construct quest-type stories by working backwards from goals of various types.  The idea is to represent story elements in a way that are generic enough to be recombined, thus allowing a wide variety of different story structures.

It's a bit like a game of Recursive Fantasy Trope Mad Libs.  We may start with a goal like Rescue the Princess -- a common enough trope.  Actually, our internal schema may be a bit more generic -- Rescue X, where X can be anyone who might reasonably require rescue.  A rescue plot admits the introduction of certain necessary plot elements.  We have the captor, presumably some generic nasty.  The captive will be held at some location; we may require exposition so the player can find the location, and exposition can take may forms.  A rumor in a tavern?  A dying confession?  A trail of blood?  A tip from a guild colleague?  The possibilities are many and varied.

One critical aspect to making interesting content out of a scheme like this is the possibility for significant subquests.  Here our example may involve a main (perhaps game-winning) quest to Defeat the Evil Menace.  And what kind of Evil Menace would it be without a critical weakness?  Perhaps there's only one weapon in the world that can defeat the Menace, and that weapon must be sought -- bam, subquest.  It could go further still -- the One Sword might be broken into Pieces Three, hidden throughout the land.  The nice thing here is that the component parts can easily involve reusable logic -- there are many kinds of quests to Find Something, and those all have some aspects in common with quests to Find Someone.  For this system to fulfill its promise, sufficient advantage must be taken of such commonalities, and the results must be fun.

One thing I hope to accomplish as the system develops is a meaningful ability to set constraints on the various recombinations, to ensure that they make some amount of sense.  I would like, for example, to introduce things like plot twists resulting from hidden agendas.  We may have a plot graph that involves multiple characters; perhaps it's possible for two of these characters to turn out to be one and the same!  But we can't just alias any two characters, unless we're able to provide a sensible explanation why the King and the Princess's Kidnapper are the same person (this example, though, being far within the realm of reasonable palace intrigue).

So essentially I'll need some kind of system for expressing and enforcing constraints, and I'll have to design it to be expressive enough to say what I want, without being painfully verbose.  I'm busy working on more fundamental parts of the game, so it'll be a while before I get down to seeing how much I can really accomplish here.

I do, however, have a little prototype that does all this in a very basic way.  It's essentially just the very basic Mad Libs thing I describe above, with a few variations and some amount of overlap between the two or three different root scenario types.  Early days, but I have hopes.

No comments:

Post a Comment