View more

View more

View more

Image of the Day Submit

IOTD | Top Screenshots

The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.

Quests analysis

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

28 replies to this topic

#1ahw  Members

Posted 10 September 2000 - 07:15 AM

OK, more food for thoughts. I realise that trying to describe plot in a formal way might not be the easiest way to tackle the problem, so here is another way. How would you describe the mechanisms used so far to create quests, missions, etc. What kind of structure is used, and how could we improve on it. E.g. In darklands (quite old game), a quest is given by a someone S at a location L1. You have to go to location L2 to get object O and bring it back to L1. That''s it ... You can add different layers on top of this to make it look like different quests, but essentially, there is not much difference. One thing I''d like to see is, when S tell me that other parties might be enroute to capture O, there would actually be another party en route to get the item, and this other party might actually get there before me, grab the object, and bring it to another person, in which case my own party would have to modify plans accordingly. In the same vein, it would be very interesting to be able to bring the object O to the higest bidder, rather than the person who asked me in the first place, etc. But how would we define the initial mission, then, and the whole system around it, to accomodate such variations on the initial scenario... youpla :-P

#2Nazrix  Members

Posted 10 September 2000 - 07:37 AM

quote:
Original post by ahw
E.g. In darklands (quite old game), a quest is given by a someone S at a location L1. You have to go to location L2 to get object O and bring it back to L1. That''s it ... You can add different layers on top of this to make it look like different quests, but essentially, there is not much difference.

Yes, that''s what I was worried about when we were speaking of creating new quests w/ components.

quote:

One thing I''d like to see is, when S tell me that other parties might be enroute to capture O, there would actually be another party en route to get the item, and this other party might actually get there before me, grab the object, and bring it to another person, in which case my own party would have to modify plans accordingly. In the same vein, it would be very interesting to be able to bring the object O to the higest bidder, rather than the person who asked me in the first place, etc.
But how would we define the initial mission, then, and the whole system around it, to accomodate such variations on the initial scenario...

youpla :-P

I was thinking about this also. I are you thinking of combining these more interesting missions w/ the other concept of creating random quests/stories through the use of components, or is this a seperate idea?

"NPC's are people too!" --dwarfsoft

"Nazrix is cool.' --Nazrix" --Darkmage

#3ahw  Members

Posted 10 September 2000 - 07:54 AM

well, the road I am taking is that if we create plot that are "encoded" in a sufficiently detailed way, the random plot generation will be less needed as the players themselves would modify the plot "style" through their actions...
And the random plot generation will be more complex, but much more interesting as well, because of the ability to be modified.
Take the example of a "find the Holy Grail" quest. One guy, the Grail Keeper, *knows* the location L of the Grail, and his goal is to prevent anyone undeserving, to reach the location. People who deserve the Grail will reach the location L but have to pass a test, whatever that is.
If we have a good enough AI, we would have situations like : the Grail Keeper spread rumors that the Grail is somewhere, eventually killing people who try to reach the fake location, even going to place an actual magic object there as bait. Or you would have a network of spies that would spread rumors and feed them baclk to the Grail Keeper.
What I''d like to see is something like : when the plot says that another party is en route for the location L, there is an actual party en route, and if you are good enough, you can follow their traces by questioning villagers about a group of adventurers looking for some artifact. Or you could be the one chased. Rather than having a simple ''if you are late, th other party took the relic. else if you are there first, you get the relic, and there is a random probability that the other party attacks you on your way back''.

Mmmm, not easy at all

#4Nazrix  Members

Posted 10 September 2000 - 08:10 AM

Yeah, I would really love to see that sort of thing happen too. Some sort of scripting language would be good obviously. Something along the lines of telling the NPCs that are en route to go to Location L. As far as giving the plots many branches, the only thing I can envision is a lot of IF statements...and flags...but that seems so forced

As far as asking others about those NPCs (whether they've seen the NPCs that are en route) there could be the literal way of doing it. If the NPCs are w/in a certain distance of the NPCs you're looking for, then there would be some sort of flag that says they've seen them.

There could be a way that's perhaps cheating but effective. Every NPC could have a list of the NPCs that he/she knows. It could be assumed that they're friends and know what the other is up to. So, if you ask that NPC they'd know where their friends are, but they wouldn't have to tell you either. You may have to threaten them, bribe them, etc.

"NPC's are people too!" --dwarfsoft

"Nazrix is cool.' --Nazrix" --Darkmage

Edited by - Nazrix on September 10, 2000 3:12:31 PM

#5Null and Void  Members

Posted 10 September 2000 - 08:40 AM

Well, that does sound like a very good idea. I''m sure it has been brought up before though, in some manner.

Maybe it could be pulled off by stealing ideas from the MMORPG type of game. Have your program run as two different "entities" (threads). One of these threads would act as a client, but only for your party/group/character et cetera. The other would act as the server, and do the work for any plot mechanisms that you set up...

I''ll have to try to work out a way to do that, it sounds very promising, though kind of either CPU intensive or restrictive...

I doubt I''ll succeed, but I''d like to hear about anyone who pulls off a plot line like that without destroying the player''s machine, or their mind...

#6Nazrix  Members

Posted 10 September 2000 - 08:44 AM

Let's say that an NPC is starting at Location L1 and will kidnap someone at Location L2 and is going back to Location L1 again.

So the NPC is initialized at location L1 and is instructed to go L2 (or just goes to L2 from wherever he is at the time).
That should be pretty simple. It's just a move command.

Then, there could be something like

if npc's location is L2 then move the NPC to L1 again via the "move" command after kidnapping the other NPC.

Also, there could be a general "follow" command issued to the NPC being kidnapped to tell the NPC to follow the kidnapper. This would simulate being kidnapped. If the kidnapper gets to L1, he and the kidnapped NPC stay there or hide or whatever.

That would be the basic simulation. So, hypothetically, if the player were to hear from one of the kidnapper's friends about his plans, the player could catch the NPC before he does this or when the NPC is going back to Location L1. If the NPC makes it back to L1, then the player can rescue the NPC there. There shouldn't really be much programming involved there 'cause the NPCs would have their instructions. The player can act as though it's all happening 'cause it is.

Also, there could be variations on the situation so the situation is not so linear. Like, the kidnapped NPC may successful escape (based on some sort of random number) at some point, and then the player may find the NPC Kidnapper only to find that the kidnapped NPC has run off somewhere. To do that you just have to tell the Kidnapped NPC to go to another location.

Then the player & the Kidnapper are looking for the NPC that was kidnapped...unless the player kills the kidnapper or something...

but the point is that it seems that you could modify this fairly easily probably using some kind of scripting language.

The player could also choose to help the kidnapper, or convince the kidnapper that's what the player's doing and then kill him on the way or something. I'm thinking you'd have to use some sort of flags to indicate what options the player is choosing.

"NPC's are people too!" --dwarfsoft

"`Nazrix is cool.' --Nazrix" --Darkmage

Edited by - Nazrix on September 11, 2000 4:10:11 PM

Posted 11 September 2000 - 08:58 PM

These are all still just technical aspects - NOT the hard part.

The hard part is WHY is that NPC going to kidnap someone?
"Because we say so" doesn''t really work in a quest generator type thing.
"Because we randomly decided" could work, but it wouldn''t provide much depth.

So you need a list of goals for the agents ( the NPCs ). At its simplest, those could be food and shelter. Food and shelter as goals already make for REALLY realistic animals, if you look at some agent technology.
Then you could add some higher goals for humans - things like money and prestige. And some means to get those goals - like kidnapping someone for ransom might make you a lot of money!

Then, generating a goal for an NPC, and letting the NPC AI choose a means for achieving that goal, may provide you with plenty of good situations for a player to get involved. However, there will not be a grand story to the whole thing, but rather a living world...

People might not remember what you said, or what you did, but they will always remember how you made them feel.
~ (V)^|) |<é!t|-| ~

#8Nazrix  Members

Posted 11 September 2000 - 09:47 PM

I agree MadKeithV. We talked a lot about those sorts of priorities with NPCs.

The hardest part is the AI that allows the NPC to know that kidnapping could bring him money through ransom.

The NPC would also need to know that he could get money from working an honest job. Also, he'd need to know that kidnapping could get him in a lot of trouble if he's caught.

The NPC would have to know so many abstract concepts about the world, and if we were to carefully program the NPC to know each of these abstract concepts, then it wouldn't be all that dynamic anymore.

I guess that part of this goes back to Paul's thread about Artificial Intuition.

Edited by - Nazrix on September 12, 2000 4:51:40 AM

Posted 11 September 2000 - 09:52 PM

What I was thinking was to build a database of some of those concepts - like kidnapping, farming, etc..., and hand "knowledge" of these things to NPCs selectively. So you ( perhaps randomly )decide on a goal for the NPC, and then ( perhaps randomly )decide which kind of concept the NPC will try to use to achieve that goal.
You could do this with statistics, so that for instance, if the NPC needs to obtain food, he is more likely to take up farming, than he is to kidnap a princess, ask for a ransom, and buy food with the money he gets from that....
That way, most people (NPCs) will be doing "normal" things, but some will be doing more interesting stuff.

People might not remember what you said, or what you did, but they will always remember how you made them feel.
~ (V)^|) |<é!t|-| ~

#10Wavinator  Moderators

Posted 11 September 2000 - 10:09 PM

It''s 2:00AM here in California, and I can''t sleep... (yup, that''s a warning )

How about this: Every NPC has an ultimate goal that he/she pursues. Other NPCs (and maybe the player) are vital to fulfilling the goal. The gist is that the AI thinks of characters and objects and such as pieces that complete a puzzle. I''m thinking of this sort of like a key and lock situation, and here''s how it might work...

Let''s start out small. You''ve got Villain V who wants to be ruler of a kingdom. But King K is in the way. How to get rid of K? Well, we''ve got to think of a bunch of different ways (poison, direct attack, ambush, etc.) and attach resource costs to them. This also means, as MadKeith was pointing out, that we need resources that NPCs can choose to spend (time, money, status, their good name, their very lives... etc.)

Now, with this initial setup you probably won''t get a very interesting story. V attempts to somehow kill K, and you can be in the middle of it.

I think this get''s interesting when you concoct some sort of relationship web and let the AI find different paths through it. For instance, maybe you design an adulterous wife W, a traitorous guard G, and a loyal but conflicted paladin P. Now V is "pathfinding" through the web of connections to get to K. Given the cost of actions, maybe it''s better for V to seduce W, or to bribe G, or to mislead P (these all being actions that we weighted beforehand).

Things get really interesting (aphabet soup ) when you run this for each character. Now characters are trying to get to their goals by using other characters. I can see not only locations of characters changing, but their value in terms of usefulness and goals could change as well.

I know this is simplistic, but might it be a start in creating what we''re after?

--------------------
Just waiting for the mothership...

#11Nazrix  Members

Posted 11 September 2000 - 10:16 PM

Interesting idea...
So, each goal for each NPC could alter according to the situations. Just looking at the money situation:

We could keep track of how much money each NPC has, and how much food,water, etc he has. Then according to what kind of information the NPC has, he will perform different tasks to attain the money to buy food.

With using stats, like you said, we could determine basically what the NPC is likely to do. If farming is his main source of income, that''s what he''ll do. If he''s more of a criminal he may choose to do something more illegal. At least we''d have more control there.

Very nice start

Posted 11 September 2000 - 10:24 PM

I think those are good ideas, and definately worth looking at for the generation of interesting circumstances...
The only problem I still have is "why does the villain want to be king". This is one of the main questions always asked of Pen and Paper roleplayers - what is your motivation? "I want to be rich" is no motivation, but "I want to be rich enough to buy me that castle I always wanted." is.
"I want to be king because I want to be able to tell everyone what to do" is a good motivation too.

But should we hardcode these into the "plot blocks" or should the motivations be randomly decided, and then the action decided from that?
[ For instance, you create the "powerhungry villain", and the AI decides that the long-term goal of this villain is now to become King of the Realm. ]

People might not remember what you said, or what you did, but they will always remember how you made them feel.
~ (V)^|) |<é!t|-| ~

#13DungeonMaster  Members

Posted 11 September 2000 - 11:24 PM

I would rather have the goals created in response of others NPC Actions, for example the King have prefered to give some power to X rather than to V so V starts to plot to overthrow the king... This way the motivation are logical and dynamical.

"Between the time when the oceans drank Atlantis and the rise of the sons of Arius there was an age undreamed of..."

#14ahw  Members

Posted 11 September 2000 - 11:51 PM

MadKeith : hey I was describing omething about databases as well on another thread here ... maybe you wanna check it out ?

As well, I love this idea of network, that''s very good ! But I don''t agree with the Villain Izonogoud trying to become Khalif in place of the Khalif (sorry, french comic reference)... it''s a bit artificial, unless you actually put in the memory (or whatever keep track of the NPC memory) of the NPC why and how he came to become like that. I would rather make an NPC be a farmer and be powerhungry, and let him evolve by first becoming mayor, then sheriff, then count, and take over the king after some conspiration ?

Well, anyway, I think if we can decompose all this into basic elements, everything would kind of happen naturally ... now the question is to allow this to happen

God, I am gonna have to think a bit more on paper

Posted 12 September 2000 - 12:10 AM

quote:
Original post by DungeonMaster

For example the King have prefered to give some power to X rather than to V so V starts to plot to overthrow the king... This way the motivation are logical and dynamical.

unfortunately, you cannot do that, because the king needs motivation as well... somewhere you need to define or decide what the motivation for something is, and not all of those can be inferred from others.

People might not remember what you said, or what you did, but they will always remember how you made them feel.
~ (V)^|) |<é!t|-| ~

#16Knarkles  Members

Posted 12 September 2000 - 12:55 AM

quote:

unfortunately, you cannot do that, because the king needs motivation as well... somewhere you need to define or decide what the motivation for something is, and not all of those can be inferred from others.

Of course, the foremost motivation of a human (or any other) being is survival. You could derive all other motivations from that basic one, but that would be way overkill. Let''s think from the king''s viewpoint instead. King''s motivation to support X instead of V could be one of the following:

- The king thinks X is more loyal, or X is a friend of his.
- He thinks V is dangerous if he get too much power
- X gives the king something in return.
- X has threatened or blackmailed the king
- V is more powerful than X already, and the king wants to keep a balance between his underlings
- etc etc

I think there should be some key characters (or character classes), like the king, whose motivations have been predefined (but they can change during the game, too). Or maybe all characters have some predefined motivations, such as survival.

-Jussi

#17DungeonMaster  Members

Posted 12 September 2000 - 01:11 AM

NPCs can have some character traits like "hunger for power" or "greed", from these, I think you can then make the character react to some events to derivate new goals.
Moreover, a virtual GM could find the characters corresponding to some plot templates and "inform" them of some events to make them react...

#18ahw  Members

Posted 12 September 2000 - 02:43 AM

I think that you should take the role of human in the equation. I don''t think I''d like a game to be totally under computer control (in the case of MMORPG), and key NPC such as a king should be granted to human player, that would be part of the admin team. Basically, admins would be guardian entities (or gods, or whatever your universe accept), that could take over the AI of any character (including a PC) to do, or say stuff ... I can imagine a player starting to speak in a loud and thundering voice on the market place, and trying to explain afterwards that it wasn''t him it was God

Mmm, too much ideas, I need to code !

#19Wavinator  Moderators

Posted 12 September 2000 - 10:33 AM

quote:

Let's think from the king's viewpoint instead. King's motivation to support X instead of V could be one of the following:

- The king thinks X is more loyal, or X is a friend of his.
- He thinks V is dangerous if he get too much power
- X gives the king something in return.
- X has threatened or blackmailed the king
- V is more powerful than X already, and the king wants to keep a balance between his underlings
- etc etc

I'd favor this approach because, in terms of AI, it can be systematized. For instance, you could make loyalty a stat and have the king do a search on the most loyal character (heh, which could be the player too ). With this sort of key and lock approach, the king AI might be able to look at X in the same way a player looks at heroes in an empire game (as a modifier for armies or cities or some other important post). On a basic level, the king really seeing solutions that will fill a puzzle (which we'd hardcode as his motivation, too keep the kingdom running).

It seems you'd get interesting conflict when you juxtapose a character's skills and abilities. V wants to be powerful (a measurable stat). If his loyalty (measurable) was high enough, he would have been picked and there'd be no problem-- or story, for that matter. But the stats don't mix right.

Again, for the purposes of AI, V (and everyone else) has a "pathfinding" problem thru and around measurable obstacles. Maybe V sees that X's only support is the King (so we then need a support stat); he can choose a number of ways to attack that support stat. Now if you have all characters solving toward their goals I think you'll get the kind of conflict you see in a strategy game, but the actions the characters take will be storylike.

--------------------
Just waiting for the mothership...

Edited by - Wavinator on September 12, 2000 5:34:16 PM

#20Nazrix  Members

Posted 12 September 2000 - 10:35 AM

quote:
[ For instance, you create the "powerhungry villain", and the AI decides that the long-term goal of this villain is now to become King of the Realm. ]
~ (V)^|) |<é!t|-| ~

The only thing I keep coming to is that the only real randomness would be that a different NPC would perform the actions each time you play the game. The actions would be the same each time you play the game ''cause the story pieces and actions would be hard-coded. The most randomness we may get is that a different NPC is doing action perhaps for a different reason.

I think this would be just as transparent (perhaps more so) to the players as using somewhat pre-defined divergent pathways and doing what ahw was saying about when an NPC is supposed to be doing something, he''s actually doing it and the player can intervene in what way he/she wants would IMO give the designer more control plus it would feel just as real if not more.

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.