Types of quests

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

- 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)

variations on themes. but that's the whole idea here: there seem to be a small number of generic themes for all types of quest / missions in all types of games, apparently irrespective of genre.

gather resource:

get action, or someone_has(player, 50 wood) condition.

get actions can come from buying, killing and getting treasure, gathering resources, finding, pretty much any means. the fundamental goal is to place some quantity of something in someones possesion. which would lead to questgen code like: qty=dice(10), item=random_object(), for_who=npc[questor].

capture a monster:

depends on whether you have to deliver it to someone/somewhere or not.

if you do, this is a transport against their will mission (kidnap).

if you don't this is just an attack (to subdue) mission. And yes, the game supports attack to subdue, capture of subdued wild animals, taming of captured animals that are domesticable (dire wolf only at this point), killing captured animals, escape of captured animals, etc. I've tried to be thorough. ; )

- Grow a plant:

that would probably be a make action.

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):

Hmm, use of an item... that may be a new one...

by George! looks like we got us a winner! Give that man a cee-gar!

1. attack/destroy

2. defend

3. goto

4. transport

5. make/build

6. get

7. steal

8. find

9. influence

10. use

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

2. item

3. information

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

1. at_location(who/what, where)

2. someone_has(who, what, how many)

3. exists(person/place/thing)

4. is_known(what, bywho)

5. time_expired(deadline)

i changed around the list of conditions a bit, listing them as pseudocode function calls with parameters.
someone_has() includes stats like (player, 10 dexterity).
exists() covers both the is_alive(), and is_dead_or_destroyed() cases. so i collapsed them together.
that reduces it to 5 basic types of mission conditions.
its hard to believe that every quest and mission in every game, book, and movie ever made consists of just a few basic elements like these. but every thread i've found online about this topic reaches the same results and comes to the same conclusion.

getting back to suggestions for the list:

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

could be another new one here. everyone on my block plays sports games, NBA2K13 and Madden for the most part. I see this type of optional mission goal in those types of games frequently. Tiger woods (another popular title in the 'hood) does some of that too, as i recall. stuff about executing a trick combo or some number of trick plays, etc.

Hmm, whats a good way to list that one, so it might apply to all game types...

can't think of anything better than "execute combo/trick maneuver" at the moment.

and so the list grows again:

1. attack/destroy

2. defend

3. goto

4. transport

5. make/build

6. get

7. steal

8. find

9. influence

10. use

11. successfully execute

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

2. item

3. information

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

5. combo/trick maneuver

1. at_location(who/what, where)

2. someone_has(who, what, how many)

3. exists(person/place/thing)

4. is_known(what, bywho)

5. time_expired(deadline)

I can't help noticing that actions are like verbs, and the list of objects is like subjects, and parameters like bywho are like direct objects in a sentence.
buy x:
another version of get.
get actually is a general version of make, build, get, steal, find, gather, etc. all versions of ACQUIRE.
if its not undesirable for the player to be able to complete a quest by any means they wish, then make, build, get, steal, find, gather, etc can all be collapsed into
acquire (by whatever means).
which would give us:

1. attack/destroy

2. defend

3. goto

4. transport

5. acquire

6. influence

7. use

8. successfully execute

and another simplification:
[player] goto(location) = transport(player,location)) the player transports themselves to a location. so goto is just a special case of the more general transport action, where you transport yourself.
now its down to:

1. attack/destroy

2. defend

3. transport

4. acquire

5. influence

6. use

7. successfully execute

I have a feeling that for many of these, other actions will be implied.
obviously, goto will be implied for just about everything.
I'm thinking that quests / missions where the game defines the goals and restrictions, but the player is otherwise free to choose the means would be superior to quests that don't allow this. Assuming the game supports this level of freedom, one wouldn't have to get into the nitty gritty special cases of steal this, grow that, gather the other, etc. you could do it all with a simple generic acquire(who, what, howmany) quest.
acquire(player, rat tails,10)
acquire(npc[questor], captured monster of some specific type, 1)
acquire(town center building, wood resource, 500 units)
or the final goal in the thieves guild campaign in Oblivion: acquire(The Gray Fox, Elder Scroll, 1)
if you needed to specify the means as well as the ends, you could always do:
AcquireEx(who, what, howmany, bywhatmeans)
where bywhatmeans would be find, grow, gather, buy, steal, make, etc.
like that AquireEx? can you tell i read too many directx docs? <g>

Norm Barrows

Rockland Software Productions

"Building PC games since 1989"

rocklandsoftware.net

PLAY CAVEMAN NOW!

http://rocklandsoftware.net/beta.php

Advertisement

Isn't 'get' fighting through enemies to acquire Object?
And isn't 'steal' sneaking past enemies to acquire Object?

you're already ahead of me, aren't you!

i hadn't read your post yet when i posted the AQUIRE(who, what,howmany) simplification.

yes, you are exactly right. and this is exactly what i want to do, determine the _fundamental_ most generic actions.

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

correct again. i hadn't gotten to that part yet. once you have your basic action (acquire, etc), and your basic parameters (who, what, howmany, etc). then come your modifiers. basically restrictions. time limit is the first, and can be applied to just about any quest. coming up with context to justify a time limit for some actions may be difficult or impossible in cases that simply don't make sense to have a time limit.

the second modifier would be things like bywhatmeans for the acquire() action.

i'd like to get to a point where you could generate a quest by picking an action from column A, parameters from column B, and zero or more modifiers from column C. throw out the cases that don't make sense, and whats left is a design for a generic questgen. possibly generic enough to use in different types of games by changing the parameters who=player or npc in an rpg, who = building or unit in a RTS, etc.

Wow! that list you made is Huge! I'm going to need a little time to read though them all and see whats covered already and whats not. definitely a VERY good start on the list of possible modifiers. Something tells me we'll see a number of new things on the list coming from your list, and probably a few insights and simplifications as well. A couple things like that caught my eye during a quick glance at the list. But i want to take the time to thoroughly review it to make sure i don't overlook any patterns, simplifications, etc.

Norm Barrows

Rockland Software Productions

"Building PC games since 1989"

rocklandsoftware.net

PLAY CAVEMAN NOW!

http://rocklandsoftware.net/beta.php

Have you studied the procedular quest determination of ProgressQuest?

Few more:

- Avoid doing X for the duration of Y

- Consume a specific consumable

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.

'Consume a specific consumable' seems to be a 'use' sub-type

- Avoid doing X for the duration of Y

Interesting. I'm trying to think of examples of that.

A similar variation is "Keep others from doing X for the duration of Y", which is really "Defend X from others + time requirement"


Avoid doing X could easily be a modifier, "Avoid using magic in this battle", "Avoid being seen", but if it's the main focus of a quest, how would that appear?

If it's avoid letting X happen to Y, that's really "defend Y from X", if it's 'avoid letting X happen' (without a Y to happen on), I guess it's a "Stop X from happening", which is a new quest type.

But I can't think of 'Avoid' as a primary quest focus, and not as a modifier. Can you think of any examples?

In Final Fantasy 7 (and many games) when you are in the Golden Saucer casino, you can fight in the arena and you randomly get restraints put on you, like "No magic" - but the primary goal is "Kill the enemy".

Though this introduces additional quest details (that have to happen at a higher level of abstraction) differing the 'condition' modifiers of victory (Don't be seen, Don't use magic), from the Restraints (You are no longer even able to use magic). Condition = You can violate it, but you fail the quest or get a lesser victory. Restraint = You cannot violate it, that option is removed. This has to happen at a higher level of abstraction though, since logically it seems detached from the quest system itself.

Examples of "Avoid doing X for duration of Y"

- Defend the base: keep the base from being captured or destroyed for Y minutes.

- Escort quest: keep the npc from dying before they reach the end of their gauntlet

- Gauntlet: survive in extra-hard mode for Y minutes or until the end of a physical level.

- Timed test: accomplish a goal while avoiding running out of the Y minutes on your timer.

- Enforced avoidance: consume a potion or be the target of a spell that transforms you such that you are incapable of doing one of your normal actions for Y minutes; this can't be failed unless you die or unless it's combined with another goal you have to accomplish to reverse the transformation.

- Moral/factional avoidance: you can't gain advance with faction A if you have a black mark on your record from doing something related to faction B. You must clear your record or repudiate B to begin/resume advancing with A.

- Avoidance of the "cheap" way - you must build Z without using any of a list of the easiest/cheapest resources, and only use their more expensive substitutes.

- And as mentioned, complete a battle without using X ability, taking Y length of time, or taking Z damage

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.

Have you studied the procedular quest determination of ProgressQuest?

is there a description of it or something online?

Norm Barrows

Rockland Software Productions

"Building PC games since 1989"

rocklandsoftware.net

PLAY CAVEMAN NOW!

http://rocklandsoftware.net/beta.php

Servant of the Lord:

still digesting your list.

just finished looking at the get actions, about to start on talk actions.

under modifiers you listed:

don't get caught

isn't this already implied by any kill of someone with friends? or any non-lethal hostile action against anyone (where they're not dead and can catch you).

early insights gained from your list (so far):

modifiers:
don't get caught (already implied by any kill of someone with friends?)
don't be seen (covert vs overt action)
no killing (non-lethal)
methods of aquisition: make, steal, take from dead opponnet, find, gather, buy
other insights stumbled across in the process:
is_known() and someone_has() can be simplified to:
has(subject,what)
where:
"subject" is who or what (a person or thing, IE npc or town center, etc).
"what" can be person/monster/place/item/stat/info/prisoner
assumptions, things implied that don't have to be explicitly specified:
1. player's are expected to defend their party and it's possessions at all times, this includes quest items to be turned over to a questor, prisoners, escortees, etc.
2. one must go to locations of quest events. killing Rufio implies going to Rufio's location (the inn of ill omen). This also applies to collecting quest rewards. "goto questor" is implied in "collect reward".
defining assumptions may go a long way towards simplifying things. anything assumed doesn't have to be explicitly specified in the single-quest data structure.
while doing this analysis one needs to be careful about stringing 2 single actions together and thinking they are a separate kind of single action, when its actually a min-campaign of 2 small single quests.
we will need good terms for single (atomic) quest actions, and for a string or series of quest actions such as:
goto badguy (implied) + capture badguy + transport prisoner to npc
all of which can be expressed as has(npc,badguy). goto badguy is implied, capture badguy is implied, and transport badguy to npc is also implied.
there will be both success and failure conditions.
conditions that are inverses can be collapsed into "condition" and "! condition". like is_alive() and is_dead_or_destroyed() being collapsed into "if exists()" and "if ! exists()"
combining this with success/failure yields 4 possible checks for each type of condition:
1. success if (condition)
2. success if (! condition)
3. failure if (condition)
4. failure if (! condition)
needles to say, conditions can be ANDed and ORed together.
these combos of success/failure and condition/not condition will cover many cases that may seem at first glance to be examples of new actions or conditions or quest types.
I've made a few quest and mission generators before. condition records usually take the form:
success/failure: whether its a condition for success or failure.
condition_type: including details for that condition like how many rat tails, possibly stored in generic data fields: condition_data[0]=rats, condition_data[1]=10.
and_with_next_condition: if true, AND this condition with the next one to make a compound condition: has(vaccine) AND has(treaty) AND has(Lieutenant Yar).
one might need a NOT field in there too, but usually a "success if (! condition)" = failure if (condition), and vica vesra.
The most insanely huge generator i ever made was for a Star Trek flight simulator. A politics engine (in a game with five factions) drove about a dozen types of campaign generators, which in turn drove about 2 dozen types of mission generators. Each mission generator could generate anywhere from a couple dozen to over 40,000 different kinds of missions before you even got into number appearing or initial placement. as politics between factions changed you changed from peacetime to wartime campaigns, for example, with appropriate missions against the appropriate faction. All mission flow within and between campaigns made sense.

Norm Barrows

Rockland Software Productions

"Building PC games since 1989"

rocklandsoftware.net

PLAY CAVEMAN NOW!

http://rocklandsoftware.net/beta.php

Servant of the Lord:

Looking at these talk actions...

deceive looks to be a give/deliver/transport info action, where the info is false.

hmm... transport information, how many quest actions fit that description? may be more opportunity for simplification.

coerce: implies some means of coercion. this would probably be some type of "do harm until they give you info". a subset of get info or has(player,info). if you're free to get the info by any means (bribery vs coercion for example), its just a "get info" quest, if coercion is required by the questor, its would most likely be a get_info quest with a by_what_means modifier. its might be easier to handle with the conversation AI system than quest engine. IE no npc gives info to hostiles until x amount of harm is done to them first. so a has(player,info) quest where has(badguy,info) is the initial condition, would automatically imply coercion of some sort, such as the "attack to subdue" feature in the game i'm working on.

Oblivion has a coercion quest in the fighter's guild campaign. you kidnap a badguy, then you're supposed to damage him some and he talks some, then damage him some more and he spills his guts. last time i played it, i started by bribing the guy to max disposition. never had to throw a single punch at him. got done bribing, and it immediately went to "looks like he's ready to talk now", and then to "looks like he's had enough and will sing like a canary now". sure he's had enough! enough of my gold! <g>.

convert is an influence type action. influence should probably be listed as: influence/convert

give info would be a transport info action, I'd think.

order is a special case of give info. info: what to do (orders). from: superior. to: subordinate.

demand: seems to simply be a step along the way to competing a quest. you don't get mission completion by demanding the enemy remove its troops from your border, you get it when they comply, unless your the ambassador. in that case, you're playing messenger: transport info (demand) to badguy.

bully, similar case. if you're the "muscle", then this would probably be some sort of influence action with harm implied. You're using harm to influence someone's actions. Punch them in the nose and demand their lunch money or you'll do it again. of course another way to look at it is with the more generic has(bully,lunch money).

I really like that Has() condition! it implies and encapsulates so much!

it occurred to me that some conditions will automatically imply others: has(town center,500 wood) implies exists(town center). obviously, exists() will be implied in almost all cases.

blackmail is giving a threat to get an action from someone (such as they give you something, etc). if you don't get the action, you follow through on the threat.

that would probably be classified based on the action your trying to get. if you're blackmailing for money it would be acquire money, with a by_what_means modifier of blackmail. blackmail and coercion are tricky, you have to have something you can hold over them.

swap info is a two part quest: get info + give info.

moving objective modifier:

probably can be assumed. objectives that can move will move. you'll just have to goto(them). i'm kind of thinking that all travel required can be implied and assumed and doesn't need to be specified. except perhaps for the most basic case of at(player,location) IE a simple goto quest.

Norm Barrows

Rockland Software Productions

"Building PC games since 1989"

rocklandsoftware.net

PLAY CAVEMAN NOW!

http://rocklandsoftware.net/beta.php

I guess it's a "Stop X from happening", which is a new quest type.


prevent(condition) = failure if (condition).

looks like (condition) will determine the quest type, and a "prevent" quest is simply one with "failure if (condition)". note that such a quest would also require a success condition such as is_time(deadline), or perhaps whatever the counter-pose to "if (condition)" would be. it wouldn't be (! condition), as that's the starting state of the quest.

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