Advertisement

Looking for commentary on AI design

Started by May 28, 2002 02:36 PM
14 comments, last by Sean99 22 years, 5 months ago
My apoligies if I'm still not getting things straight here... lots on my mind at the moment and not too much time to dedicate to thinking about your query...

So let me see if I have understood your query correctly...

You're asking for a 'novel' or 'interesting' way of returning a 'means' by which a particular resource can be achieved, given some specific traits of a charater, which is seeking the resource. Is this correct?

Is the list of 'means' associated with each resource finite and if so, how is this list created?

Timkin

[edited by - Timkin on May 30, 2002 9:12:17 PM]
quote: You''re asking for a ''novel'' or ''interesting'' way of returning a ''means'' by which a particular resource can be achieved, given some specific traits of a charater, which is seeking the resource. Is this correct?
Yes, I think that sounds right. I guess the question can be broken down to two parts:
1) (My main query) Pretend that you are a character in the game and you desire one of the listed resources. What other resources do you see in the list that you think you should be able to use to gain that resource? Say then that the second resource is unavailable to you. What now do you see on the list that you think you should be able to use to obtain this required intermediate resource. Continue this recursion until you find something which you are capable of obtaining. If this process tells you that you possess nothing which allows you to take immediate action on this desire, then your desperation for this desire increases. On your next update, you repeat the process. The difference is that this time you are looking at the list with the eyes of a more desperate man, so your choice of tools will reflect that.

Most chains end with returning money, charisma, violence, or NULL. That''s fine, but I would like to decrease the circumstances in which any given resource returns one of those four items, because I think that they are the least creative and most predictable. I know what *I* would expect to be able to use, but my question to you is: What would you expect to be able to use to obtain any of the resources listed which I might not have considered? Can you imagine any circumstances under which a type of resource could return another type of resource as its gain means which it would not normally return. I know this sounds like a stupid question if you don''t know what I already have done, but if you imagine a resource being able to return something other than charisma, money, or violence, and it''s not an exact copy of my original example, then chances are 99% that I haven''t thought of it yet. And I know my "under any circumstances" request is nonsense if you don''t know what circumstances are possible within my game, but I''m asking you to forget that this is for a game. I''m creating a dynamic, busy world, and if the circumstances are intersting enough (create more possibilties for my NPCs) I will try to find a way to incorporate them. A note on the desperation factor: it''s OK for a character to get really desperate and choose an inappropriate tool that might work one chance in a thousand. I am allowing that, and I think it adds some characterisition to the NPCs when the desperation is tempered with the character''s wisdom (a wise but desperate peasant still won''t attack a government bigwig, but a hot-head peasant might)

2) Are there other resources which I haven''t thought of which would fit into the scheme and would make interesting tools or main desire objects?

Sean


"we need common-sense judges who understand that our rights were derived from God. And those are the kind of judges I intend to put on the bench." - GW Bush"no religious Test shall ever be required as a Qualification to any Office or public Trust under the United States." - Article VI of the US Constitution.
Advertisement
Well, there is one thing that I can add to your AI that might make it better. You should think of the society of the NPCs. Obviously, people who live in the same community and have cultural similarities will for the most part be similar in what their needs/wants are and how they react to situations, and they will make similar decisions based on what they feel is acceptable to meet those needs. You might want to make templates for similar groups of NPCs. Then you can randomly generate NPCs individual templates based on the general one, but make it less probable that a drastic change would be found.

Another thing you could do is to group NPCs with similar goals together. If two NPCs have a goal and come across eachother in their quest for that goal, then there is a possibility that they may team up to help eachother out. They would possibly share things they have most of to balance out the things that each of them needs. Also, their personalities might change to become more balanced between them. This teaming up can also effect a NPC''s prestige with another NPC. Maybe his pal has this other pal who has a friend that is fairly influencial. Sure, the amount of prestige wouldn''t be the same if you were direct the person''s friend, but even having a small connection could be beneficial in a small way. This could be the same for negative reactions too.

Hmm.. I think I might be getting a bit too complex, but Im sure there is an easy way to implement all of this stuff.
quote: Original post by Sean99
1) (My main query) Pretend that you are a character in the game and you desire one of the listed resources. What other resources do you see in the list that you think you should be able to use to gain that resource?


This is a heirarchical planning problem. Essentially you have a heirarchy of resources and means by which to attain them. The heirarchy is created since the means to acquire a resource may depend on acquiring a different resource, which has it''s means.

Provided that you define all possible resources and all possible means of attaining them, then a planning algorithm can always find a path through this plan space (if it exists). Furthermore, a Partial Order Planner can do this with relaxed time (ordering) constraints. Your agents are not then restricted to performing tasks in a linear fashion in your needs chain. The benefit of this is that as the world changes (because it takes time to complete tasks) then the ability to obtain a resource may change over time, requiring replanning and hence very interesting agents.

Your question though seemed to be more about ''means'' other than charisma, money or violence. This is really a question about what actions are open to an agent. You could add research , which would permit agents to obtain more knolwedge. A nice side effect of this is that they could use research to gain more knowledge about how to obtain resources! For instance, an agent wants to get rich. They cannot, for some reason, use charisma or violence to get the moeny they don''t have, so they do some research. This returns information about a lost treasure in a cave. They then figure that they can go to the cave and investigate... presuming that the use of violence over any cave dwellers will get them there coin!

Also, you might consider adding training . An agent wanting to lead a militia might consider joining that militia and train to be a leader!

So, is this what you were after when you were asking for ''novel'' and ''interesting'' ways of obtaining ''means''? I suspect it is since it is definitely a design issue.

Cheers,

Timkin


quote: If two NPCs have a goal and come across eachother in their quest for that goal, then there is a possibility that they may team up to help eachother out. They would possibly share things they have most of to balance out the things that each of them needs.
The cooperative pooling of resources for a common goal is an interesting idea. I think this would be have to be limited to situations where the end goal is a sharable resource. An addition to your example, I can envision multiple characters pooling their sword arm resources to gain another character's head. I'm seeing a pattern to this: the pooling of innate-type resources to gain a body-part-type resource. (In your example with the pooling of prestige, the characters would be using their combined pull to get somebody to listen to them, which is the ear resource.) This is something I'll definitely think about. Thanks.
quote: Furthermore, a Partial Order Planner can do this with relaxed time (ordering) constraints. Your agents are not then restricted to performing tasks in a linear fashion in your needs chain. The benefit of this is that as the world changes (because it takes time to complete tasks) then the ability to obtain a resource may change over time, requiring replanning and hence very interesting agents.
This is why I feel a bit silly in the AI forum. I feel like I went and re-invented the wheel when it would have made much more sense to talk to the pro wheel-makers first. Partial Order Planning sounds like it could useful to me. I'll look into it. I do make allowances for characters being able to change their plans as they learn new information (the info could be "old" information that one or more other characters have known for a while but has only just recently come to the attention of this character, or it could be some new world development this character is aware of). When a character receives new information, he checks to see if it is relevant to any possible plans of any of his desires. If it is, he completely re-evaluates his goals in case the information allows him to do something he couldn't previously. If I understand your brief description of the purpose of Partial Order Planning, I think this is a crude simulation of it. I probably would have saved myself some time if I had researched what others had accomplished with BDI and POP, but that's spilled milk now.
quote: Your question though seemed to be more about 'means' other than charisma, money or violence. This is really a question about what actions are open to an agent. You could add research , which would permit agents to obtain more knolwedge. A nice side effect of this is that they could use research to gain more knowledge about how to obtain resources! For instance, an agent wants to get rich. They cannot, for some reason, use charisma or violence to get the moeny they don't have, so they do some research. This returns information about a lost treasure in a cave. They then figure that they can go to the cave and investigate... presuming that the use of violence over any cave dwellers will get them there coin!
Cool, this is the the kind of response I was looking for. When I first read this suggestion, my first thought was that allowing "research" to be used as a possible means of gaining another resource wasn't any different from allowing information to be used as a tool (which, as I mentioned in a previous post, while information is necessary, it's never considered as a tool and not actively sought after). Your example implies ways around that. A desire for non-unique types of objects (like gold, mercenaries) really can only be satisfied taking local conditions into account (whereas deciding on how to acquire a unique resource only takes into account what the character knows about the state of that particular resource). The first step in acquiring a non-unique resource must first be to find a local supply of the resource with the desired value. This requires that the character actively seeks out relevant information, while at the same time you are guaranteed that "knowledge" is the *only* required resource at this step in the needs chain (which, if you'll recall, is why I don't generally allow knowledge to be considered as a tool; it might require a branching of the chain).

In case you're wondering "How was this guy handling desires for money and such before now?", the answer is that I wasn't. While money was easy enough to implement money as an intermediate link in a needs chains (either the character had enough or he didn't), I never allowed it to be an end goal.

Your example made me think of another way I could allow characters to actively seek knowledge. When a character evaluates an individual desire, the end result is that he is told that either it is currently unobtainable or he is given a target resource to chase after (whether it be the object of his desire or some intermediate goal), and told which resource he possesses to use as the tool to obtain the target. When a desire is unobtainable, it is for one of two reasons. Either the character simply doesn't possess any type of resource which could lead to the fulfillment of his desire, or he doesn't have enough information to gather the reqired tools. For example, a character has a desire for resource A. The planning routine, taking into account the character's personality and desperation, says that resource B is required to abtain A. Even if the character is in possession of B, if he has no idea where A is located, he takes no action on this desire because he doesn't know where to go. All the planning routine tells the character is that A is unobtainable, it doesn't tell him why. I could easily have the planning routine return more information, so that the character knows that the only thing he is lacking is more information on whatever resource(s), but once he has that information, he knows he has the tools to carry out his plan. This way, the character knows that he needs certain information, and I have avoided a branching of the needs chain. It seems a bit obvious now.

Forgive my rambling on this. I'm just happy that this thread has become more fruitful than it promised to be.

Thanks,

Sean



[edited by - Sean99 on June 2, 2002 2:30:39 PM]
"we need common-sense judges who understand that our rights were derived from God. And those are the kind of judges I intend to put on the bench." - GW Bush"no religious Test shall ever be required as a Qualification to any Office or public Trust under the United States." - Article VI of the US Constitution.
quote: Original post by Sean99
This way, the character knows that he needs certain information, and I have avoided a branching of the needs chain. It seems a bit obvious now.


This is where you would be served by implementing a planning algorithm, which can (by definition) handle branching of your chain.

If you want to investigate planning, I suggestion you look at two concepts: Heirarchical planning and Partial Order Planning. You might also want to consider the STRIPS language for representing elements of plans. While STRIPS has many limitations, I think it would appropriate for the sort of constrained problem you are describing.

Good luck,

Timkin

This topic is closed to new replies.

Advertisement