Types of quests

Started by
54 comments, last by Norman Barrows 11 years, 1 month ago
In my last post i forgot to list:
9. determined that when a "using special item" quest is generated, a "get special item" quest is should be automatically generated to precede it, and the two quests together make up that stage of the campaign.

here's the list of variables to track a single quest that I came up with:

action

object

modifiers

object data

mods data

here's the list of variables i came up with to track a campaign:
1. a list of stages.
2. for each stage:
A. type (single quest, split/merge, loop, split, or multiple-simultaneous).
B. info about the quest(s) in that stage. only multiple-simultaneous stages will have a list of quests. all other have one quest per stage.
C. "on success" and "on failure" next stages. these are used for the branching in splits, split/merges, and loops. for all others, they both have the same value, whatever the next stage in the campaign is.
D. probably need a "current _quest" var to track where they are in the campaign.
here's the stage templates i came up with:
1. single quest: success quest A -> next stage.
2. split/merge: success quest A -> next stage. failure quest A -> compete 1 or more stages to continue to next stage. this provides mission flow that splits then merges again.
3. loop: success A -> next stage. failure A -> complete zero or more stages before you can attempt quest A again. this provides mission flow that loops.
4. split: success A -> stage 1. failure A -> stage 2. where stages 1 and 2 are different branches of a branching story line campaign. this provides mission flow that branches.
5. multiple-simultaneous: 2 or more single stages that can be completed in any order to advance to the next stage in the campaign.
here's the method of generation i came up with:
so to generate quest using action/object method:
first you make your tables:
1. make list of actions valid for the game in question.
2. make list of objects valid for each valid action.
3. make list of modifiers valid for each valid action/object combo.
to generate a campaign, you first generate the number of stages on the main path from quest encounter to final reward.
campaigns are generated from last stage to first stage.
if a split stage is generated, the length of the branch that splits off the main path must be determined, and those stages generated, perhaps with a flag set indicating that its a branch off the "main path", so the final reward should be lower (1/2 treasure for example).
if a split/merge stage is generated, the "sidetrack" stages for it need to be generated
if a loop stage is generated, the stages in the loop need to be generated.
put it all together, and you have a quest gen system that will do all kinds of neat mission flow.
the question is, is it possible to generate the "why" they should do such and such, as opposed to simple orders than can be derived: "kill rufio" orders follows from action: destroy, object: rufio. "why kill rufio" other than for the reward, is another can of worms.
perhaps "why" is not needed. in the oblivion "rufio" quest, they don't ever say why. in fact they explicitly say its not important.
orders, conditions, and prerequisites are all pretty self evident once you've generated action, object, and modifiers. but i'm wondering if the orders will sounds too contrived, or too "generated" ?

Norm Barrows

Rockland Software Productions

"Building PC games since 1989"

rocklandsoftware.net

PLAY CAVEMAN NOW!

http://rocklandsoftware.net/beta.php

Advertisement

The point being is that whilst you have atomised your quests down to a set of basics - the story variations upon those basics are only limited by your imagination.

AND what can be generated. : (

You enter a tavern and listen to a man who tells a story of an adventure about some bloke who inadvertently picked up an orb of vision and proceeded to see a sleeping dragon on his mound of treasure, tracking this guy down you learn that he sold it to a passing merchant, who subsequently had sold it to a noble who had then dispatched the orb along with some of his knights to slay the fell beast and claim the treasure, but no word has been heard of them in quite some time...[queue dramatic music ].

cool, a test case.

ok, kill dragon. initial quest encounter occurs at tavern. first quest: find guy who found orb. second quest: find merchant. third quest: get location of dragon from noble. 4th quest: kill dragon, get treasure. so far, so good, works as expected. the orders:

1. find guy who (supposedly) knows where dragon is.

2. find merchant who (supposedly) knows where dragon is.

3. get location from noble

4. kill dragon, get treasure

this is what i was talking about with the difficulty of generating "Why". once you get into the details of reasons, motivations, and by what means, quests become less generated and more hard coded (less replayable). the orb of vision is "why" these people know where the dragon is, but its just context to give the campaign a pretext for making you do whatever the quests are. Its the kind of color that is difficult to add with random generation without seeming contrived. the whole interactive story / story line generation thing. its the context provided in hard-coded campaigns and quests that makes them not appear generated. and the lack of context in generated campaigns that makes them appear generated. about the only way i ever found to reduce this effect was with the politics engine in SIMTrek / SIMSpace. the politics engine provided the overall context for a campaign. why are you starting a defensive campaign? like the politics engine just told you, the klingons have invaded federation territory!

so as i see it, everything up to now is pretty straightforward, and doable, albeit perhaps a bit complex.

the REAL challenge is getting a generated story line context to go with the quests, without seeming contrived, lame, or illogical.

not sure it can be done well. about all i can think of is generating random reasons "why" to do things. they would have to make sense, and a large variety of reasons would be required to make it not seem generated.

i'm also not sure its required. nice but not required. how the questor comes to know the location of the dragon is interesting perhaps, but not required for mission completion.

But I _would_ like to be able to generate context if possible. basically we're talking about generating a unique story line to go with a campaign/quest. the campaign/quest is the "plot" or "theme", and defines some basic things like "setting" and "characters". I recently did some research on generating story lines, as i'm considering adding hard coded campaigns as well as campaign generators to my title, and was looking into story line generation as a means of increasing replayability vs hard coded campaigns. results to date in the field are not promising.

Norm Barrows

Rockland Software Productions

"Building PC games since 1989"

rocklandsoftware.net

PLAY CAVEMAN NOW!

http://rocklandsoftware.net/beta.php

edit: 36 Dramatic situations

hmm, what about starting with these, generating the STORY first, THEN generating the appropriate types of quests?

non-mission critical variables, such as who the specific bad guy is, could be generated to maximize the randomness of stories, helping to guarantee uniqueness.

sounds like i need to spend a day investigating that approach.

Norm Barrows

Rockland Software Productions

"Building PC games since 1989"

rocklandsoftware.net

PLAY CAVEMAN NOW!

http://rocklandsoftware.net/beta.php

Part of what can make quests interesting and not feel contrived, is building expectations and then breaking them.

Player is recruited to help defend a village from a group of bandits. As he's fighting the bandits, he realizes that the bandits are actually from another nearby village, and are trying to recover their stolen wives, children, and possessions that the village the player is defending stole from them.

Another thing that can make quests more interesting, is to give the player choices, and have the results of those choices carry real impact.

Player is recruited to help defend a village from a group of bandits (evil ones, this time). When the bandits attack, the player notices that one of the bandits is actually the person who murdered the player's brother. Seeing the player, that bandit takes to flight.

Player's choice: Chase the murderer down and get revenge, or stay and defend the village?

Real impact: The murderer gets away if the player stays and defends. Or, if the player gives chase, later when the player returns to this village, the entire village is burned down from the bandit attack. Consequences are final.

Another thing is, surprise the player, keep them on their toes so much that they don't see the cliches.

Player is recruited to help defend a village from a group of bandits. As the player and a few other mercenaries head towards the village, suddenly a dragon bursts out of the sky and attacks them. After an unexpected and intense battle, by the time they actually reach the village, the fight is already over and the village defended itself on its own with the mercenaries that did arrive on time. The player isn't paid by the villagers, since he didn't arrive in time to help.

As Stormynature said, once you establish the fundamental building blocks of the quests and realize how few there are, then you hand it over to the creative people who hide the limitations through artistic innovation in storywriting. Artists tend to rise to the occasion when faced with limitations.

The field you would be interested in pursuing self-generating stories would be Natural Language Processing.

Some links that may be of use to with regard story generation

http://grandtextauto.org/2006/09/13/the-story-of-meehans-tale-spin/

http://ijcai.org/Past%20Proceedings/IJCAI-81-VOL%201/PDF/004.pdf

http://www.eliterature.org/images/microtalespin.txt

http://grandtextauto.org/2007/10/30/scott-turner-on-minstrel/

9. unique actions germane to the specific title (in case we forgot anything) (as shown in the 'successfully execute' example - new things specific to certain titles fit into this system without new 'actions' needing to be added - merely new states, which are easier to add)

yet another simplification.

do unique title specific action = successfully execute(title specific action)

Norm Barrows

Rockland Software Productions

"Building PC games since 1989"

rocklandsoftware.net

PLAY CAVEMAN NOW!

http://rocklandsoftware.net/beta.php

Quest actions and modifyers can be unified:
QUEST ACTIONS | States instead of Actions [...]

here's the list i came up with when assigning checks to actions:

attack/destroy: state_is(tgt, dead)
defend: state_is(defendee,alive)
transport: state_is(transportee,@destination)
acquire: state_is(whoever,however many of whatever)
influence/convert state_is(subject,some level of relations)
use/interact with: state_is(object, activated)
do (combo): state_is(subject,doing move1) + ... + state_is(subject,doing moveN)
be guinea pig: state_is(guinea_pig,under the influence of the experiment)
unique actions germane to the specific title (in case we forgot anything):
state_is(subject,unique title-specific state).

Norm Barrows

Rockland Software Productions

"Building PC games since 1989"

rocklandsoftware.net

PLAY CAVEMAN NOW!

http://rocklandsoftware.net/beta.php

Part of what can make quests interesting and not feel contrived, is building expectations and then breaking them.

this might be handled with a modifier, or some internal flag that indicates that things are not as they seem. no, not that way. more like you have 2 versions of a quest, the regular version, and the "i'm on the wrong side" version. final conditions would be different, bit initial orders would appear the same, so you wouldn't be able to tell if you were playing the quest with the "plot twist" or not.

I think "plot twists" will be key to maintaining variety. before i started this thread, i was starting to code templates for various types of campaigns. in those, i'd add optional plot twists such as: questor tells you where dragon is, but another party already has a head start on you.

odds are, certain types of plot twists like these will always be possible for certain actions. yet another component of the generator to be figured out. for each action, list possible plot twists. when generating a quest, check for optional plot twist and generate additional info as needed. the action will define the plot twists possible, and therefore the detailed info needed to execute the plot twist.

i find it interesting and elegant that so much info is encapsulated or implied by action, object, mods, and plot_twist_type.

actually, plot twists might be better handled at the stages level. more stuff to figure out.

Norm Barrows

Rockland Software Productions

"Building PC games since 1989"

rocklandsoftware.net

PLAY CAVEMAN NOW!

http://rocklandsoftware.net/beta.php

Another thing that can make quests more interesting, is to give the player choices, and have the results of those choices carry real impact.

this would require the effects to be modeled in the game engine.

in your example of kill badguy vs defend settlement, not a problem for my title. NPC's are persistent and it tracks relations, so you can have an arch enemy. and settlements can be destroyed by attack. about the only thing it doesn't do already is make your arch enemy run away (until they're half dead).

this might be a type of plot twist, or perhaps a branch that depends on your choice.

Norm Barrows

Rockland Software Productions

"Building PC games since 1989"

rocklandsoftware.net

PLAY CAVEMAN NOW!

http://rocklandsoftware.net/beta.php

Another thing is, surprise the player, keep them on their toes so much that they don't see the cliches.

yes, i've used this technique before. its a plot twist thing. you have 2 or more versions of a quest. one is the regular quest: defend village, get paid. the others are twists: give orders for defend village quest, but actual quest is survive dragon attack. all the quests seem to start out the same, but they aren't. some have twists lurking in their mission flow. the trick is to make the orders the same for the regular and twisted versions, so they all look the same at quest start.

a quick test of the system using your example:

we'll call this a dragontwist quest.

randomly determined quest type: dragontwist

quest template: you need the false quest (defend village, etc). you need the monster (dragon). the false quest needs a time limit.

running the quest: get quest encounter. show orders for false quest. at some point before time limit, trigger encounter with dragon.

checks: failure (of false quest): time expired.

how it works: the player gets the quest encounter to defend the village. they must arrive at the battle before the dead line. then they encounter the dragon. the dragon encounter must take long enough to make them miss the deadline. this quest is basically a no-win situation. you must survive the dragon attack, but get no reward for doing so (except maybe dragon treasure). the "false" quest is designed to be undoable (insufficient time) and the player always fails it.

Note that "failure time expired" is the only check required. the player can never get to the battle on time, so no "success: village defended" check is required. no "dragon kills player" check is required, due to assumption 1: "the player is expected to defend their party and its possessions at all times". no "success: dragon dead" check is required, as there is no questor rewarding you for the dragon's death.

how does this type of quest fit in with what we already have? is it a new action or modifier or type of stage?

Norm Barrows

Rockland Software Productions

"Building PC games since 1989"

rocklandsoftware.net

PLAY CAVEMAN NOW!

http://rocklandsoftware.net/beta.php

This topic is closed to new replies.

Advertisement