Types of quests

Started by
54 comments, last by Norman Barrows 11 years ago

Starting work on the questgen in my project.

So far i've come up with the following general types of single-part quests:

1. attack

2. defend

3. move

and for the objects of a quest (what to attack, defend or move/move to):

1. person/NPC/friendy unit or monster/badguy/hostile unit

2. item

3. information

4. landmark, location, building (a fixed position).

its seems that all types of quest are a combo of these.

multi-part quests are simply a series of single part quests where the reward from one part is the prerequisite for the next part, or multiple single quests must be completed for the overall reward (find the 8 holy rolls of bottom-wiping hidden across the game world).

have i left any out?

I already did the google thing both here and on the web in general, and everything seems to boil down to just these.

so lets play the "what category of quest is this?" game.

examples:

kill the dragon = destroy monster.

rescue the princess = move friendly to home. of course you have to go to the friendly first, defeat any badguys there, and escort them back.

Norm Barrows

Rockland Software Productions

"Building PC games since 1989"

rocklandsoftware.net

PLAY CAVEMAN NOW!

http://rocklandsoftware.net/beta.php

Advertisement
I'm typing on my phone, so forgive the brief reply, please.
Type 4: Find. As in, locate this item or place. May involve talking to NPCs, which could, potentially, be described as a separate category, but probably not.

In the above context, fetching a mcguffin would be classified as Move("Home","McGuffin")?

There's also 'achieve'/'reach'. Such as, reach level 15 or get 10 strength, or reach the top of a series of moving platforms, or reach a time-locked door that's closing slowly.

Though I guess 'achieve' could really be Move("Player", "Location") or Move("Player's Level", "Threshold")

As hinted at by the time-locked door, quests can be decorated with other requirements like time.

Another one is interacting with NPCs not for information, but to change their disposition or convince them to do or not do something. Technically, Move("NPC's emotions", "Desired state"). But if you abstract stuff too much, I guess "Kill monster" could be defined as Move("Monster's HP", "To zero"). happy.png

Found my notes. They weren't in the todo list, they were't in the comments, they were in the notebook where I write down bugs i find while testing or playtesting.

Forgot one or two actions:

1. attack/destroy

2. defend

3. goto

4. transport

5. make/build

6. get

7. steal

8. find

but many of these are implied by the basic attack, defend and goto.

for example, if the quest is to find an object, that usually implies going to it, and often implies taking it to someone or some place. but the taking it somewhere is technically a second single-part quest (a goto or transport quest).

a transport is really a goto quest or mission - just with some cargo aboard, so to speak.

finding a location implies going to it usually. if the quest is to learn the location of an object, then the objective is information, not a physical location. This type of quest is common in Oblivion: go learn where the bad guys are, go tell the boss, then the boss tells you to go get them. the first part of this little 3 part quest is a quest for information. the third part is an attack quest, with a goto implied.

perhaps a better way to look at it is based on conditions, not "orders".

types of conditions checked for quest completion:

person/thing at location

has person/thing in inventory, i guess including has skill level / exp etc.

person/place/thing dead/destroyed

person/place/thing alive/exists/has been made/built, inventory type objects made/built could be handled by "has in inventory"

information is known (as opposed to unknown)

time expired

any others?

so to assemble a quest, instead of: goto x, steal y, return to z, give to npc w.

it would be something like npc w has item y in inventory.

doesn't seem to get you much. just two different ways of expressing a quest, one in terms of orders, the other in terms of condition checks.

however it does allow one to express all possible types of quests as a combo of 6 condition checks. possibly useful.

Norm Barrows

Rockland Software Productions

"Building PC games since 1989"

rocklandsoftware.net

PLAY CAVEMAN NOW!

http://rocklandsoftware.net/beta.php

Hmm, I know we've had a thread or two here in the design forum about this topic before. You might want to try a forum search on "quest" or "quest list".

I want to help design a "sandpark" MMO. Optional interactive story with quests and deeply characterized NPCs, plus sandbox elements like player-craftable housing and lots of other crafting. If you are starting a design of this type, please PM me. I also love pet-breeding games.

Type 4: Find. As in, locate this item or place.

Yeah, forgot that one in the original list, then I found my notes.

In the above context, fetching a mcguffin would be classified as Move("Home","McGuffin")?

I forgot transport in the original list of actions.

that would be a transport quest, or a goto with has_item_in_inventory, or even more simply NPC[questor] has item in inventory (from a conditions point of view).

transport seems to cover a lot of cases: kidnap and rescue quests / missions are both transport quests. transport this person to that place (possibly against their will).

escort might also be considered transport. you have to ensure the movement of a person from here to there, and their safe arrival. not much different from a MMO fedex for 10 rat tails. both the person and rat tails must arrive in good condition. both the person and rat tails must move (somehow) from A to B. only real difference is the person can walk, and you have to carry the rat tails. the only other difference is the implied threat of "escort" vs "transport" in an escort mission, trouble is expected, and an encounter is pretty much guaranteed. In a transport quest, no unusual trouble is expected, and the normal random wilderness and dungeon encounters are all you have to worry about.

the reason why i'm interested in categorizing these is because it may be possible to define a struct (or object for you OO types) that encapsulates all the variables of a single part quest. then the reward(s) from one or more single part quests can be used as the prerequisite(s) for another single part quest, allowing one to string together multi-part quests that make sense.

it appears that with just a few basic types of single-part quests to work with, that there are just a few basic ways that these can be combined that make sense, IE the reward from one is the prerequisite of the next. This leads to a set of just a few "templates", "themes", "scripts", "multipart quest generator types", I dont know what you'd call them.

"multipart quest generator types" is probably the most accurate. so the basic idea is you have these multipart questgen types which use the various types of single-part quests to generate a multipart quest with missionflow that makes sense.

now if it was just easy to generate storyline context to go with the mission flow, I'd be set.

There's also 'achieve'/'reach'. Such as, reach level 15 or get 10 strength, or reach the top of a series of moving platforms, or reach a time-locked door that's closing slowly.

Though I guess 'achieve' could really be Move("Player", "Location") or Move("Player's Level", "Threshold")

As hinted at by the time-locked door, quests can be decorated with other requirements like time.

Another one is interacting with NPCs not for information, but to change their disposition or convince them to do or not do something. Technically, Move("NPC's emotions", "Desired state"). But if you abstract stuff too much, I guess "Kill monster" could be defined as Move("Monster's HP", "To zero"). happy.png

achieve stat level is sort of unique. not quite the same as has_item_in_inventory. OTOH, they are both subsets of player_has(). player_has(10 dexterity) player has(sword of slaying). which in turn is a subset of someone_has(who,what).

reaching the top of moving platforms seems to be more of a goto location type thing.

reach door in time would be goto location with time limit.

changing NPC disposition: ooh! thats a good one! INFLUENCE. but influence is usually a means to an end. but at an atomic level it is a little quest unto its self. I need info from an NPC in Oblivion. But they don't like me. Bingo! Spawn new mini-quest. make this guy like you via influence, bribes, charm spells, etc. So yes influence is another valid action in games that model its effects (don't worry, mine does!). when figuring out different ways single part quests could be strung together, i found that many types of quest can be preceded by "perform a quest for someone before they will disclose the location of the main questor in a multipart quest" and even further: "perform a quest for someone before they will disclose the location of someone who knows the location of the questor". I know this sounds extreme and contrived, but in implementation its not unreasonable. this is what its like: while visiting the cave of a nearby band of friendly cavemen, doing some trading, etc, they tell you stories of a herd of huge animals said to guard a great treasure. this is the initial "quest encounter". so you decide to go after the animals and get that treasure. well, they want you to do something for them before they'll tell you where they heard about the animals (from another group of cavemen). so you do their quest, and they tell you where they heard about the animals. SO you go talk to THOSE cavemen, and they also want you to do a quest for them, before they'll tell you where the herd is. so you do that quest, then they tell you where the herd is, you go there, kill the herd, get the treasure. twists i've already played around with include another group is going after the animals as well, with both "you're ahead of them" and "they got a head start on you" versions, including the chance to encounter each other on the way to or from the herd location (and try to take the treasure if you or they got it already). influence would play a role here. if the caveman disclosing info happens to be your best buddy, odd are he wouldn't send you on a quest. more likely he'd grab his spear and say, "Ugg! Let's go!". downside to that is that its hard enough to generate long multipart quests that make sense, without letting the player essentially skip one part cause their "bro [friendly NPC] hooked them up" so to speak.

but you can see what this leads to:

with a template of quest1 (do something for 1st group) to get location of quest2 (do something for second group) to get location of quest3 (herd with treasure),

you start by deciding (somehow) that you'll be using this template and that quest3 is herd with treasure (a destroy quest).

then you can randomly choose what quests 1 and 2 are INCLUDING ANOTHER ENTIRE MULTIPART QUEST! perhaps using some different template and a different final quest such as transport. and the subquests of that multipart quest could in turn also be entire multipart quests.

infinite recursion.

Norm Barrows

Rockland Software Productions

"Building PC games since 1989"

rocklandsoftware.net

PLAY CAVEMAN NOW!

http://rocklandsoftware.net/beta.php

Hmm, I know we've had a thread or two here in the design forum about this topic before. You might want to try a forum search on "quest" or "quest list".

already done. both here and web wide. that second list of 8 actions was the result.

to which it appears we should add "influence":

1. attack/destroy

2. defend

3. goto

4. transport

5. make/build

6. get

7. steal

8. find

9. influence

1. person/NPC/friendy unit or monster/badguy/hostile unit

2. item

3. information

4. landmark, location, building (a fixed position).

person/thing at location

has person/thing in inventory, i guess including has skill level / exp etc.

person/place/thing dead/destroyed

person/place/thing alive/exists/has been made/built, inventory type objects made/built could be handled by "has in inventory"

information is known (as opposed to unknown)

time expired

how to express it all in a database record, struct, object, etc....

it would be nice if you could simply define mission conditions and the software would generate orders based on the conditions for you.

note i'll use quest and mission interchangeably here.

but i dont see any way to do it with just conditions. they don't encapsulate all info required for mission success in all cases. player has to be told or find out which badguys to kill and where they are before a badguys_dead condition can be satisfied.

seems to me there ought to be a mapping , perhaps one-to-one , between quest actions and mission conditions, or a one-to-pattern mapping, for example: a given quest action always requires the same 2 or 3 types of mission conditions for success.

determine the patterns. that will define the vars to track. most likely vars having to do with mission orders rather than conditions. the orders will be a superset of the conditions. determine the possible patterns (templates, multipart quest gens) for combining single part quests. plug it all together. think it might work?

assuming something like this works ok (and it should, i've made similar things in the past), how to deal with the classic problem of generic storyline text not bringing unique context to each adventure?

Norm Barrows

Rockland Software Productions

"Building PC games since 1989"

rocklandsoftware.net

PLAY CAVEMAN NOW!

http://rocklandsoftware.net/beta.php

Hmm, I know we've had a thread or two here in the design forum about this topic before. You might want to try a forum search on "quest" or "quest list".

already done. both here and web wide. that second list of 8 actions was the result.

Oh, you saw this one then? http://www.gamedev.net/topic/570791-mmo-quest-types/ I guess your second list does pretty much cover that. But ok, I've got a few more:

- Gather a resource (may require a tool)

- Capture a monster

- Grow a plant

- Use X of a quest item on X monsters or locations (example there is or was a quest in WoW where you put medicine on diseased gazelles)

- Successfully execute a combo, this is kind of related to minigames like DDR and Guitar Hero where you match the pattern and timing

- Buy X (I don't really like this kind of quest, but it seems different from Find X or Build/Make X or Gather X)

I want to help design a "sandpark" MMO. Optional interactive story with quests and deeply characterized NPCs, plus sandbox elements like player-craftable housing and lots of other crafting. If you are starting a design of this type, please PM me. I also love pet-breeding games.

What's the difference between: "6. get" and "7. steal"?

Isn't 'get' fighting through enemies to acquire Object?

And isn't 'steal' sneaking past enemies to acquire Object?

So isn't 'steal' just a specialization of 'get' that requires not being seen?

So it seems it would be better to add modifiers as well.

Quest types

  • Attack
    • Subtypes:
    • Destroy
    • Hunt = Kill + Moving Objective + Multiple Objectives (optional)

    • Kidnap = Attack + Non-lethal + Get + Give... or something like that. Probably multiple steps.

    • Ambush = Kill + Moving Objective + Time limit

    • Murder = Kill + Moving Objective + Don't be caught

    • Assassinate = Kill + Moving Objective + Don't be seen

  • Defend
    • Transport (Defend + Moving objective)
    • Fallback (Defend + time limit + Moving objective)
  • Give
    • Deliver (Give)
    • Trade (Get + Give)
    • Threaten (Give + Information + ...?)
    • Warn (Give + Information)
  • Visit / Goto
    • Visit
    • Observe (Visit + Get + Information) (see/view something occurring, possibly with the Time-limit modifyer, if it's happening in real-time)
    • Interact (touch, activate, move something)
    • Race (Visit + time limit)
  • Get
    • Collect / Gather (Get + Multiple objectives)
    • Craft (Get + it doesn't actually exist yet)
    • Steal (Get + Non-lethal + Don't be seen)
    • Take (Get + dropped from an enemy (requiring kill) or pickpocketted)
    • Find (Get + unprotected but unknown location)
    • Purchase (Get + a merchant has it + No theft + Non-lethal)
  • Talk / Dialog
    • Persuade / Convince / Influence
      • Deceive
      • Coerce
      • Convert (Turn an enemy into an ally, or one political party to another affiliation)
    • Acquire information (Talk + Get + Information)
    • Give information (Talk + Give + Information)
      • Order (Talk + Give + a command)
      • Request (Talk + Ask
      • Demand (Talk + Give + a command + by emotional force)
      • Bully (Talk + Give + a command + by physical force)
      • Blackmail (Talk + Give + a command + by some kind of leverage)
    • Swap information (Talk + Trade + Information)

Objective types

  • Entity
    • Enemy
    • Ally
    • Friendly
    • Neutral
    • Another player
  • Item
  • Information
    • Orders (Directions from a superior)
  • Non-tangible power (skill level, ability, etc... Maybe part of the quest requires you to 'Get' the non-tangible ability to climb walls before proceeding further)

Modifiers

  • Don't be caught (Can be seen, but can't be caught)
  • Don't be seen (Can't be seen or caught)
  • Don't kill (Non-lethal attacks are permitted)
  • Don't attack (Not even non-lethals are allowed)
  • Time limit
  • Time window (From X to Y in the evening)
  • Moving objective
  • Multiple objectives

Then ofcourse, things are sequenced in multi-step quests to chain these together - so a 'trade sequence' is just a chain of 'Trades' - but that's a higher level up.

This topic is closed to new replies.

Advertisement