Thursday, 14 January 2010

Quest Writing (Design Parameters)

After some consideration, I realise that my current "design parameters" for my module quest writing are way above any reasonable level of normal acceptance. I refer to the level of freedom I allow a player to do a quest with such parameters as (a) enabling a PC to be able to attack any NPC, (b) allow PCs to approach a problem from many angles (involving multiple NPCs), and (c) even allowing the PCs to enter a quest at a different stage. Writing for just one of these parameters is involved, and as I naively discovered, trying to accommodate for all three is simply an overwhelming problem that quickly spirals out of control.

Too Many Combinations!

This has come to light as I reach the final stages of a side quest that included every parameter listed above. Considering how long this particular quest took me to write (and that this quest is only an optional one that a player may not even play), I have decided that the designing of future quests in a similar manner (covering every angle as per my original design remit) is no longer a realistic goal.

I do not come to this decision lightly, as the end result of the quest I wrote that does have these goals included has turned out as versatile as I had hoped for. If I could have continued in this vein for every quest I wrote, then I believe the results would have been quite stimulating for the player. However, the continued effort required to achieve this kind of open-ended play is unachievable for a single developer, which I am. At least, it is if I want the module released sometime this decade.

Note: I do not intend to do away with any of these design concepts, but to avoid the kind of problem I had when writing the last quest I have simply decided to streamline the approach by aiming to use only one of these concepts (or two at the most) at any one time. And as the ability to attack an NPC cannot easily be prevented (or changed) without it feeling like I am "forcing the play", I expect any new quests I write from now on to involve fewer NPCs or limited access to the same quest instead.

To put this problem into perspective, but without going into too much detail, the last quest involved at least 4 important NPCs, 3 of which would be considered critical. (The quest itself involves even more NPCs.) Every NPC can be killed at any time by the PCs, meaning plot points had to make sense if the PCs managed to pick the plot up at a later point. Furthermore, the same quest could be accessed at 5 different nodes subject to which NPC was still alive and/or what the PC had already learned. This required an inordinate amount of variable and quest log tracking to ensure it always made sense when played. As it turned out, the nature of this particular quest forced these requirements of flexibility of design from me. However, with hindsight, there are one or two changes I would have made to reduce the amount of work, and if I had not already gone to the trouble of coding it, would have removed them from the original design.

Future Designs (Allowing NPC Deaths)

As I intend to keep the ability for the player to be able to attack any NPC at any time (and for other builders who wish to allow the same) I recommend these design structure points for writing quests:

1) Try to avoid further quest progression with the NPC quest giver, in case
the PCs kill the NPC after receiving the quest or at any stage
thereafter.

2) Ensure any other participating NPCs remain unknown (or undiscovered) until
their involvement is required, in case the PCs kill them before their
involvement in the quest.

3) Ensure to either allow the quest to be continued with the death of an NPC
(by the PC gaining information another way) or end the quest in the journal (if
for a side quest only).

4) Only allow "quest recovery" options (PCs can pick up on a quest a
different route) for the main quest only. (See next.)

UPDATE: I am looking at a system that makes NPCs permanently "friendly" (invulnerable) all the while a quest is active from (and further involves) them - and if there are no other mitigating circumstances. (I.e. If there is a way to do the same quest even when killing the NPC, then they will not be made invulnerable.) While this is a minor compromise, I believe it is justified as it allows me to concentrate more on the plot than spending too much time trying to protect against unexpected play.

Player Freedom (Poll results)

From the results of the "Player Freedom" poll to date, 28 out of 37 voters are happy with at least "minimal plot help", with half of those ready to accept "no plot help" and suffer the consequences of their actions. With this in mind, it would appear the builder does not need to be overly concerned about covering every angle of play (or a player's style of play). It also suggests the player is prepared to co-operate ("play along" with an obvious plot line) and not be upset at failing a quest if they have not done so. To put it another way, as long as the builder protects the player against "accidental" failings on their part (like destroying a critical plot item with a stray fireball), then the player is ready to accept that any antagonistic action they may take with their PC has the potential of ending the quest early (like if they killed the quest giver rather than helped them).

Therefore, rather than always allow a quest to be "recovered" if the player stumbles onto a path of the quest after having killed the quest giver (point 4 above), some quests would simply not be offered in such circumstances.

There are only 5 days left to vote in this poll if you want to have any more say.

Spell Alterations

Here is an updated list for the altered spells for Better The Demon:

- Virtue (D4 Temp HPs & longer duration.)
- Ray of Frost (D3 Damage)
- Divine Favour (Can scale to 6)
- Endure Elements (Increase Resistance To 3 Change Amount to 0)
- Summon Creatures (Duration 1 hour per level)
- Expeditious Retreat (Duration 1 minute per level)
- Magic Missile (Missiles increased to max of 10)
- Ray of Enfeeblement (Duration 1 minute per level)
- Resist Elements(Decrease Resistance To 12 Change Amount to 0)
- Ability Spells (E.g. Cat's Grace) (30 mins per level. Max 10 hours. d4+1 alter.)
- Invisibility (10 mins per level.)
- Knock (No scaling but line of sight required.)
- Animal Trance (Corrected range and caster level.)
- Barkskin (10 mins per caster level.)
- Aura of Glory (CHA from 4 to 2. Save Fear from 6 to 5.)
- Protection From Energy (Duration 10 mins per caster level. Resistance & Amount 12 x caster level.)
- Animate Dead (Permanent until destroyed. Scales with level.)
- Bestow Curse (Decreased effects to 2 as per description.)
- Magic Circle v Alignment (Changed to turns per level.)

19 comments:

Anonymous said...

I hear you. Quest design is scary business, and one perhaps best left alone altogether(if only that were possible, *sigh*).


That said, I understand the shift in your design decision. I figure, however, that you mean something more like: The more involved quest design I used to have will still be true on plot *relevant* quests. Sidequests will be less involved.

I figure this is what you mean, as point 1 could relegate characters to being 'XP farms' if their only quest/player relevance is in the form of their one interaction. I could be misunderstanding you, but that's my take.

Lance Botelle (Bard of Althéa) said...

Hi Chaos Wielder,

Thanks for responding ... ensuring good logical flow for quests can be a nightmare alright. ;)

In truth, my answer is both "yes" and "no", subject to the quests importance, but also to the complexity of the quest in the first place.

For instance, if the quest required multiple conversations with the quest giver (like updating different stages of the same quest), then I am considering doing this differently from now on. Otherwise, what happens if the player decides to kill the NPC half way through doing the quest? (I hope they would not, but ... see "my hope" below.)

That said, I would *not* want to make it so the NPC only had a *single* quest in mind, and that once it was "acquired" by the player that their job was over.

My hope is that players will co-operate with the module builder anyway, and so such "checks" would be less required. However, my fear is always leaving the player "stuck" if I have not considered their preferred style of play. "Enough with these tasks, I want to kill the guy and get the gold anyway" kind of thing. That is *not* a very good example, unfortunately, but the idea that the "quest giver" could be removed at any time forces me to consider alternative ways for the player to complete the same quest.

What I was trying to say is I am trying to weigh up the best course of action between ensuring a quest can be finished regardless of player approach as opposed to compromising my quest writing to ensure it. And I have a nasty feeling I would have to make more compromises for essential quests than side-quests, which if "failed" would not matter as much.

HOWEVER, I am also wondering if a player would get more upset by "failed" quests because I was not "supporting" their style of play as opposed to making the quests "simpler" but ensured everyone would be able to complete the quest irrespective of their playing styles.

As you can see, my quest design is closely tied to the last poll I put out a while ago, and is why I mention it again.

I think if I can find a way to minimise the NPC interaction after the quest is given, then the easier it would be for me (or any other module builder) to code around the NPCs "potential" death. Note, that by "minimise interaction", I mean from the point of view of the quest state and updating thereof.

Does that make sense, or do you still think I may be compromising the module?

Lance.

Kamal said...

I was one of those that voted for minimal help.

One thing I started trying to do was have my sidequest givers give a number of quests but not make all of them mandatory. The pc can do 2 of 3 and just tell the npc that they can't/won't do the third. The journal closes for the third with a note about the pc not completing this.

The other thing I started trying to do was give different ways to succeed in the quest. For example in a quest to stop a wizard, the player can try to kill the wizard of course, or they can steal the wizard's spellbook (effectively neutralizing the threat). The player effectively gets to choose between two different simple quests.

But I don't have anything as complicated as what you describe.

Lance Botelle (Bard of Althéa) said...

Hi Kamal,

Thanks for commenting. :)

I do think I have made things too complicated for myself.

I have done something similar to what you describe, but have the added complication of allowing NPCs to be killed - including the quest giver, which means potential tracking and completion issues.

I think I am going to reconsider some of my design parameters even further - to ensure I do not tie myself up more than I have to. If that means preventing NPC death until after a certain quest point check, then so be it. However, I hope the setting will be made at a point and time when it is obvious what path the player intends to follow: good path (won't do anything too antagonostic) or the evil path (may be prone to attacking the NPC).

Even today, I am still having to work more than I desire to ensure the quest I am on reaches a reasonable conclusion.

I am going to have to give this more thought. Maybe make an NPC invulnerable all the while a player has accepted a quest from them? (Unless, I am prepared to write code to support a change of heart.) Yes, I think that will probably be my new approach.

Thanks for helping me think more on this.

Lance.

Anonymous said...

That explains it much better. :)
I was mostly worried that it would be something like "Greg has quest G and only G"--it would get kind of bland. Of course, you don't have that, so I'm happy.

My approach on quests/etc is that I, as the designer, am totally comfortable with "failed" quests. Using a cliche comparison, opening doors shuts others. Due to the nature of my project, making the player feel "stuck" is sort of the desired effect(there's all sorts of conditions on that, but I'll save that for some other update).

Now, since you're doing multiplayer, taking that approach is the first step towards people quitting(that's my intuition, anyways). I'd hedge, then on something along the lines you're doing--allowing people to kill/etc anyone they meet, and making interactions limited to certain spheres(i.e., farmer Jon is and only ever is on the farm).

So long as you don't go overboard on making sure everyone can get involved, I think this will work fine.

Kamal said...

Since you can kill these quest npc's, I'd want to keep track of that so the journal isn't full of unfinished quests because you killed someone necessary to the quest.

I use an death tracking script that strictly handles journals, seperate from the main ondeath script attached to the npc.

There is a generic trigger script that the player must cross before reaching the npc. The script says little more than if journal = whatever, when the npc dies advance the journal to x.

I suppose a player could manage to kill an npc without crossing one of these triggers, but I try to put them such that it's not really possible.

So you could do something like that, make the death of quest npc's advance the journal to a closed state indicating "you've killed Mr Smith". It might only be good if you knew Smith was involved in the quest though, otherwise it might spoil the quest.

Lance Botelle (Bard of Althéa) said...

Hi Chaos Wielder,

Did you know that this module supports single player as well as multi-player? From your comment, it sounded like you thought I was catering for MP only?

I don't mind "failed" quests (side quests anyway), but I was having difficulty maintaining the variables for various stages of the quest as there were a number of ways the same quest could be started/finished/completed/failed. Having killable NPCs was compounding the problem. ;)

Hopefully, now I am getting closer to a more manageable system. See also my next comment for Kamal ...


Hi Kamal,

Making sure the journal is up to date is a priority for me, and is probably why I am having to work hard to make sure it is. ;) There should never be an unfinished journal entry in my mod. :)

I have also just finished putting together a new function (inside an include script) that is called from the NPCs OnAttack hook to check if the NPC is at a "plot critical point", which prevents them from being attacked/killed if need be. It sounds like a similar idea to your trigger check. :)

I still intend to make sure the function is required as little as possible and the chances are the player will never see it in action. However, it acts as a safeguard against players changing their mind/approach half way through a quest or if they would try something crazy that would spoil the module in some way.

I updated the main blog entry to mention this.

Lance.

Anonymous said...

The way I come at "failed quests" is a bit different(and I probably should write about it). But, yes, killable NPCs makes the matter tricky and, well, a headache.

I focused on MP for my comment because the NWN1 mod that 'Shagret' is inspired from, 'Beyond the Bog', catered towards MP, but my God was that a nightmare. In general, I think players in a MP experience are more interested in progressing the action rather than the plot/theme/narrative of any given situation(this is, of course, much different than what I want). I applaud you for putting in the effort, but be wary of the group that thinks they're in it for the killing and nothing else.

That might be worth writing about--how should a game world respond to radically psychotic player behavior? You know, really crazy stuff, like killing everyone for no reason. This is exacerbated, maybe, in MP...

Anyways, I'm rambling a bit. Point being, that MP problems trouble me greatly.

Lance Botelle (Bard of Althéa) said...

Hi Chaos Wielder,

Now what you just said is very interesting ...

I had never associated a MP game with "monster killing" more than being story oriented.

And from what you write, I wonder if it is because of my PnP (pen and paper) background and writing adventures for a number of players (party play) that is "confusing" the issue.

You see, in PNP D&D, my adventure is very much based on a story, and my continued writing of it in NWN/NWN2 is for my group of players to continue the adventure, but in a computer environment that helps me handle all the stats. As a consequence, the adventure can also be released for other players as well, be it MP or SP.

Therefore, my design to cater for MP was due to the number of players playing rather than aiming at any particular style of play. However, I also recognised that I wanted to allow the players to do "what they like" to a degree if it seemed "reasonable".

I certainly think this is a topic worth reviewing as you say.

I certainly agree that writing for a MP game is extremely complex and fraught with difficulties. Psychotic behaviour is just another element I am trying to observe/protect against. Maybe that is taking the writing too far?

Lance.

Kamal said...

I posted a long comment that somehow didn't make it. I'll summarize...

I had to think about this for Path of Evil, since the protagonist is a villain.

In areas with laws the local law enforcement might come after a psychotic killer player. Even an evil kingdom or other evil organized power is going to enforce laws (they just won't apply those laws to the rulers).

An example of this is the Athkatla spellcasting restrictions in BG2. The enemy wizards enforcing the law are a significant threat, the third time the player breaks the law a high level wizard shows up and gates in a pit fiend...

Also, by the time the locals find the bodies, figure out it wasn't the goblins, decide it was the player etc, the player might be out of the area already. Only witnessed crimes and magical knowledge of crime make immediate justice attempts possible. At least in old PnP clerics could cast Speak with Dead and get firsthand testimony from the victims, Speak with Dead's not in NWN2 though.

In lawless societies there might simply be no retribution (maybe the relatives are too scared to try). Or the player might attract someone seeking revenge/retaliation like a relative.

In the BG2 mod "Kuirosan the acid kensai", Kuirosan shows up to retrieve the super kensai the player can get in the house in the Temple district. Without metagaming, Kuirsosan will wipe out even a high level party. It's not a relative revenge, but Kuirosan is a consequence.

The occupants of the Temple District house are evil yes, but they are not threatening the party in any way. Whatever they plan it does not involve the pc at all. When the player intrudes into their house they warn the player and retreat upstairs. Only if the player insists on following them do they fight themselves. A good aligned pc may justify fighting them since they are evil, but refusing to give the sword to Kuirosan is evil as well.

You can't stop someone who deliberately tries to be psychotic without a live DM or deus ex machina since you simply can't plan every possible way the psychotic pc might try to break stuff without resorting to things like plot tags.

In the end it seems there are a few things you can do.

Not tell the player they've broken the quest and allow them to find out when they discover they can't complete it. This may make players mad, especially if it's a plot critical quest, "oops you broke the main game".

Warn players beforehand that it's possible to break quests if they go around randomly being psychotic..

A popup explaining that you killed a plot npc and can no longer continue the quest, combined with closing the quest journal. Maybe it's time to reload if this was a plot critical quest.

In the end, it's hard to plan for evil pc's since the bad guys are the ones that driving the action. Good guys only respond. RPG's generally follow one of two paths for an evil pc: the pc does whatever for the money, or the threat is so great even evil characters are threatened because it will destroy the land (like the OC). If it's offered as an option at all, siding with the bad guy is something the pc can only do during the final confrontation (see the OC again).

This is one reason why my campaign will spend a good amount of time with beta testers. I'm going to want them to try to "be evil" and report back on what they tried to do or felt it woulf be logical for an evil pc to do. I certainly can't plan for everything, but hopefully I'll be able to include a fair amount.

I'm already doing things like trying to make sure any plot items an npc might be carrying are pickpocketable and giving the player options to simply attack during conversation, or come back to npc's after completing their quests and attacking them.

Lance Botelle (Bard of Althéa) said...

Hi Kamal,

A very interesting and informative post. Thanks!

I think when you said about trying to "control a psychotic PC without a live DM" is the crux of the matter I am trying to resolve.

You may have seen some of the dieas I am using to try to get around the issues in this blog post (the Poll link one): http://worldofalthea.blogspot.com/2009/11/plot-twists-by-player-freedom-poll-plot.html

After our last conversation, I wrote a new function to handle plots surrounding NPCs if they are *attacked*. I used this hook as the test as even being attacked would change the NPCs attitude towards the PC even if they are not killed. This function then handles if the quest is "over completely" or whether it simply moves to a diffent stage. It then determines if the NPC can be attacked, or on the rare occassion, simply cannot be. (A reason is offered to the evil PC as to why, and they will be able to attack them eventually.) This new function resolves most of the remaining problems I was having.

As for "random acts of violence" by the player, I do have a system in place that checks if a "law abiding" NPC perceives (sees) them commiting an evil act and alerts the rest of society if so. Furthermore, the player can say "Sorry" with a feat I have included to help stabalise their role in society, although it also alters their current standing as well. (I.e. A player can become a known threat to the people each time they use the "Sorry" feat.) In the end, if the player becomes too crazy, they are labelled homicidal and many defenders of civilised lawful societies will protect the region from the player. At this point, only sacrifices at a good aligned altar (to bring alignment back to good) will stop them being an outcast everywhere. And if they kill an innocent again, then they are back to being an outcast.

I think beta-testing the evil path is a very good point to raise, as it goes a great deal against the normal style of play and would need thorough testing.

Like you, I also ensure some items can be pickpocketed or taken from a fallen NPC if need be.

Lance.

P.S. Sometimes it is better to cut a long post into 2 or more comments due to size.

Kamal said...

As you said, the systems to handle the uncooperative pc aren't there in the default game. I've read with interest your posts on your system work like law enforcement, something I think might wind up underappreciated by people who aren't builders themselves.

For me the punishment for uncooperative player is just going to be open journals. Psychotic is just kind of "chaotic stupid". A good npc bad guy generally has plans, is intelligent, and is not just smiting everyone that looks at them funny.

Kamal said...

Frail ancient book's that save the world? You could give players a warning of some sort that casting fireball on the bookstand is not a good idea, maybe they are told by the npc that wants the book?

If players still fireball then they could immediately lose. It's akin to making your nearby bad guys immune to fire, only more "pure". The kobolds aren't immune to fire, but the player still shouldn't use the spell. You could say it's arbitrary, but I think it works better plotwise than to say "these kobolds are a special breed immune to fire".

I actually have a quest where the player can steal a spellbook to stop a wizard and return it to the questgiver (they also have the option of killing the wizard). However, it's not logical the questgiver knows what the spellbook looks like, and they are not a wizard themselves. A spellbook would of course be valuable to a player. It's not presented to the player openly, but the player has the ability to take the spellbook to a scribe, who can make a "copy". The spellbook is destroyed by this, but the player gets a number of scrolls (the remnants of the book) and can return the copy to the questgiver.

So the book is destroyed but the quest is completed.

Kamal said...

More on frail ancient books:
"Pick a pocket or two"
One thing I've done it not make my npc's check journals to see if a player has killed the orcs guarding the ancient book. The npc checks the players inventory for the book. That way a rogue who sneaks in and steals the book is rewarded for their actions as much as a fighter who slays the orcs and takes the book.

Finally, does the player need that ancient book, or do they need the information it contains? If the ancient book carries within it the magic that will save the day then yes you need the book. But if the pc needs the information in the book (it holds the location of the Sword of Truth), then the player is just as well served by writing down the information they need from the book.

Finally, I've also included some cases where there are different "success" levels but "ideal" solutions. In the first module if you are a rogue you are tasked with getting some city guards to work with your boss. There are two success states. One is the guards say they won't work for your boss, but will also look the other way and not interfere. Getting this let's you report "success". But if you convince them to work for your boss you get bonus experience for "ideal outcome".

Lance Botelle (Bard of Althéa) said...

Hi Kamal,

Answer to all 3 posts:

"Law enforcement under appreciated" ... You may well be right. I just hope I have done it in such a way that is still fun and may make the wary "evil" PC player a little more cautious, but still play within their game in a more "challenging" way. ;)

Your spell book quest sounds neat. By the way, did you ever see my "Captured Spell Books" utility add on? It makes a book filled with scrolls according to whatever parameters you want to set it. I use them in my mod. They work well. Check out the link to it on the left hand pane. The download includes a manual so you can see the result before using it. I think it adds a great element to spell books. :)

Check points .. Yes, I agree that checking for items on a party is probably a btter way to check for plot progression than journal nodes.

The "frail book" was just an example. It could just have easily been a "frail glass vial of liquid" that holds the cure. If you see what I mean. ;)

Yes, I also use staged results for some quests. I think I would like to do this more than I already have, as it adds another dimension: a bit like unlocking the "secret" best finish.

If you get the chamnce, check out my Captured Spell Books stuff and let me know what you think. :) It uses my Readable Books format, which makes books a lot more fun to look at and read.

Lance.

Kamal said...

I've seen the spellbooks and readable books. It gives the game something something you find in stories, the importance of the spellbook to wizards. It makes finding one a major prize for players, especially wizard characters.

Lance Botelle (Bard of Althéa) said...

Hi Kamal,

Let me know if you get the chance to use it, or if you need any help implementing it if you do. :)

Lance.

Kamal said...

I wasn't going to use it, but readable books would definitely be something very useful for custom setting modules to help explain the world. It would also be great if their was a book that was central to the plot. It's too late for me to put more stuff into my campaign.

You asked on my blog for a summary of my campaign, here is the forums thread about it. There is a summary in the first post.
http://nwn2forums.bioware.com/forums/viewtopic.html?topic=715980&forum=111

Lance Botelle (Bard of Althéa) said...

Hi Kamal,

Thanks for the link. :)

Lance.