🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

Quests analysis

Started by
27 comments, last by ahw 23 years, 9 months ago
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
-----------------------------Sancte Isidore ora pro nobis !
Advertisement
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
Need help? Well, go FAQ yourself. "Just don't look at the hole." -- Unspoken_Magi
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
-----------------------------Sancte Isidore ora pro nobis !
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
Need help? Well, go FAQ yourself. "Just don't look at the hole." -- Unspoken_Magi
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...
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
Need help? Well, go FAQ yourself. "Just don't look at the hole." -- Unspoken_Magi
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|-| ~
It's only funny 'till someone gets hurt.And then it's just hilarious.Unless it's you.
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
Need help? Well, go FAQ yourself. "Just don't look at the hole." -- Unspoken_Magi
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|-| ~
It's only funny 'till someone gets hurt.And then it's just hilarious.Unless it's you.
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...
--------------------Just waiting for the mothership...

This topic is closed to new replies.

Advertisement