A bit of a proposition...
This is my first post here, though I've been browsing through in the past few months. I decided to start this thread after being inspired by the thread involving Graphics progress as opposed to AI progress.
The majority of the complaints seemed stem from either design issues or hardware limitations.
My current situation is that I am working on an MMORPG, and have been assigned the AI and its development. Our goal is basically to have a world that is up 24/7/365 (as though any server ever actually accomplishes this ;> ), and that continues to function without influence of players. This requires a highly detailed AI system, with agents who actually live out their lives and fight and sell and conflict and do all the wonderful things that players do.
Our theory is that by having a world that has enough liveliness within it, we can immerse players more fully. Not really a new conecpt, but we are willing to do whatever it takes to achieve it.
Here are the implications of the above:
1. All NPC's will have totally dedicated server (perhaps cluster), so processing power and storage is not an issue.
2. There are no arbitrary limits upon how "good" we let the NPC's be. There is no "Hey, too smart, turn it down a notch" to take into consideration.
3. They need to be able to interact with the world and each other, even if only at a somewhat abstracted level (no need to give them rasterizers, inputs, etc.).
4. They need to behave like normal beings. Our world design frees us from having to create perfect AI's for combat, at the expense of all else. We are trying to develop truly general-purpose AI for dealing with a 'real' game world, with problems that crop up as 'real' as we can get. This means we need AI that is just as good at running and gunning as it is at finding and maintaining a job from another NPC.
***
I understand how crazy that all sounds, but we are trying to finally break free of as many of the constrictive conventions as we can. We are even discussing making the AI and NPC shard of our server cluster open for development from the overall community of AI programmers, that we might have a chance at getting enough people who know what they are doing to try to create as realistic as possible set of AI.
Think of it as a sandbox, without any real constraints. Just a requirement that the AI be as good and general-purpose and 1337 (sorry for that) as possible, and additionally as optomized as possible (towards the whole perfection end... bloat code, even if amazingly smart, is still bloat code).
Drop me a line, with thoughts on how this might shape up, or more importantly on what might be accomplished with such a system.
ok. First, what does your npc need?
1. Needs and desires.
2. A schedualer (so it knows where it needs to be)
3. Information and fuzzy rules (so it can make decisions)
4. Communication (so it can spread information)
5. Reactions (something goes boom == Run)
6. Simple emotions (part of the rules. If something explodes, the thing gets more afraid. as fear increases, the probability of it running away increases.)
From,
Nice coder
1. Needs and desires.
2. A schedualer (so it knows where it needs to be)
3. Information and fuzzy rules (so it can make decisions)
4. Communication (so it can spread information)
5. Reactions (something goes boom == Run)
6. Simple emotions (part of the rules. If something explodes, the thing gets more afraid. as fear increases, the probability of it running away increases.)
From,
Nice coder
Click here to patch the mozilla IDN exploit, or click Here then type in Network.enableidn and set its value to false. Restart the browser for the patches to work.
Quoting from Nice Coder:
"1. Needs and desires.
2. A schedualer (so it knows where it needs to be)
3. Information and fuzzy rules (so it can make decisions)
4. Communication (so it can spread information)
5. Reactions (something goes boom == Run)
6. Simple emotions (part of the rules. If something explodes, the thing gets more afraid. as fear increases, the probability of it running away increases.)"
Good list. For 2, we were thinking of a deque of goals, such that one could pop off a high-level goal and push on the sub-goals to complete it.
For 4, we were going to use a black-boarding system for squads and otherwise an extension of our messaging system. The difficulty for this is that the NPCs need to be able to communicate with players as well, and for this we need the ability to parse textual data (har har har... fun...) and then create a token-based system to interchange the information. The token-based business is not that hard, but the first bit is (has been for decades).
For 3 we were looking at a high-performance set of Prolog knowlegebases. The question is, does such a thing as high-performance Prolog exist? Does anyone have any information on the performance of the SWI-Prolog implementation?
1, 5, and 6 are along similar lines to what we were considering. We were going to implement kind of a lower-level thought process that handles those things, higher in priority than the higher-level thinking (2,5) and which 'filters' the thoughts and behaviors.
Does this sound like a good way of oing about it?
[Edited by - Poor Communist on April 10, 2005 12:22:02 PM]
"1. Needs and desires.
2. A schedualer (so it knows where it needs to be)
3. Information and fuzzy rules (so it can make decisions)
4. Communication (so it can spread information)
5. Reactions (something goes boom == Run)
6. Simple emotions (part of the rules. If something explodes, the thing gets more afraid. as fear increases, the probability of it running away increases.)"
Good list. For 2, we were thinking of a deque of goals, such that one could pop off a high-level goal and push on the sub-goals to complete it.
For 4, we were going to use a black-boarding system for squads and otherwise an extension of our messaging system. The difficulty for this is that the NPCs need to be able to communicate with players as well, and for this we need the ability to parse textual data (har har har... fun...) and then create a token-based system to interchange the information. The token-based business is not that hard, but the first bit is (has been for decades).
For 3 we were looking at a high-performance set of Prolog knowlegebases. The question is, does such a thing as high-performance Prolog exist? Does anyone have any information on the performance of the SWI-Prolog implementation?
1, 5, and 6 are along similar lines to what we were considering. We were going to implement kind of a lower-level thought process that handles those things, higher in priority than the higher-level thinking (2,5) and which 'filters' the thoughts and behaviors.
Does this sound like a good way of oing about it?
[Edited by - Poor Communist on April 10, 2005 12:22:02 PM]
April 10, 2005 08:18 PM
Similar to what Ive been researching and working on as a project.
Ideas:
Hierarchical task planning (and hierarchical solution sets to be inherited by NPCs as 'skills') with frequent situational reevaluation to allow opportunity
situations.
Preference mechanisms to assist selecting appropriate solutions (for tasks).
Acceprable 'preferences' change depending on priority/desperation (escalation).
Deformable scenery and natural laws/physics to make world intuitive to players.
NPC 'roles' which include social position/interrelations between NPC/NPC NPC/player based on contracts/negotiations/traditions (NPCS have their 'place' and will adjust their environment to facilitate their existance, their place is based on what they provide to others and what they consume).
Adaption to environment to facilitate creation of the 'world' -- drop the npc in place in a 'setup' mode and when activated all placed NPCs try to find their place and negotiate for their position in the community and adapt their role to what is available and reach stability. (Idea is to get rid of the hand crafted
game situations which become unstable as soon as a player does something 'not planned for'). Theme constraints for the desired community would be used to
guide development.
Most important is proper tools to allow players to create content. Players have
an endless supply of imagination and tapping into that effectively will be the future of computer games. The tools would have to be at 3 levels:
Programmer level: (ie- low level code, behavior primitives, define physical properties/interreactions, etc..)
Modder level: (ie- define behavior blocks, high level building blocks, scripter, asset creater - animations,meshes,texture options)
World builder level: (ie- placing/combining precanned building blocks -- making minor adjustments via 'slider'/'checkbox' type optional parameters -- creating storyline/ambiance)
Publishing/review/distribution mechanism to facilitate player created game components.
So much bother.
Move to a third world country and set up as large of an office as needed (building to suit for 3k workers; £20), fill with PCs and connect everyone on one 56k satelite modem. Hire your slaves for tupence a week, giving them a manual of how they should act and an english dictionary. Pay David Hasslehuf (sp) more money then the combined yearly wages of all your drones to sponsor your game.
What could go wrong!?
Move to a third world country and set up as large of an office as needed (building to suit for 3k workers; £20), fill with PCs and connect everyone on one 56k satelite modem. Hire your slaves for tupence a week, giving them a manual of how they should act and an english dictionary. Pay David Hasslehuf (sp) more money then the combined yearly wages of all your drones to sponsor your game.
What could go wrong!?
Roger that, lets run like hell!
Lol....foreign cheap labor...cool solution.
However, I think out Poor Communist friend here is looking to build the perfect scalable artificial world.
I'm a proponent of the Building block Hypothesis, so I kind of like the slow approach where not even the creators know what the outcome will be. Lay out the fundamentals of the world and let things just evolve. Lay down the basic rules and let NPCs interact with them and build their own assumptions and behaviors in the world.
The cool thing about fully functioning artificial worlds is their unpredictability. Sometimes your rules will create funky behaviors as NPCs start exploiting loopholes, and sometimes they work perfectly. You'll have to be prepared to reset the world multiple times though, since the end results may sometimes be completely unexpected. True evolution will be slow and time consuming, so this will be a pretty darn long project.
Its hard to comment or give concrete advise on such wide sweeping projects, but I can give some pointers and things to watch out for, which you may already know. Personally, I would go with genetic programming and have NPCs evolve their own behavior code. Or use evolving FAMs. The hard thing, of course, is coming up with the proper performance measure. One way is to look into re-enforced learning where you teach 1 NPC something and have him mutate copies of himself to create others. Also, remember that control and freedom is a very delicate balance. Put too much control on the NPCs and they won't evolve into anything more than what you've told them to be, less freedom. Have less control over the NPCs and they may evolve out of control into something drastically different than what you may have pictured. Heck, give them some of the wrong rules and they may decide to give up collecting or farming food and become cannibals and eat each other. Its just something that has to be kept in mind.
The randomness and freedom is what makes a dynamic world. Its also that same factor that makes them hard to create because you really don't know what you'll get. And when you do know what you'll get, your world may end up not being interesting at all. Both AI and evolution is kind of like that. Be prepared to go back to the drawing board with questions and bugs that you have no clue as to the answer to quite a few times.
Its true in physics and in most cases....the simplest answer is usually the right one.
However, I think out Poor Communist friend here is looking to build the perfect scalable artificial world.
I'm a proponent of the Building block Hypothesis, so I kind of like the slow approach where not even the creators know what the outcome will be. Lay out the fundamentals of the world and let things just evolve. Lay down the basic rules and let NPCs interact with them and build their own assumptions and behaviors in the world.
The cool thing about fully functioning artificial worlds is their unpredictability. Sometimes your rules will create funky behaviors as NPCs start exploiting loopholes, and sometimes they work perfectly. You'll have to be prepared to reset the world multiple times though, since the end results may sometimes be completely unexpected. True evolution will be slow and time consuming, so this will be a pretty darn long project.
Its hard to comment or give concrete advise on such wide sweeping projects, but I can give some pointers and things to watch out for, which you may already know. Personally, I would go with genetic programming and have NPCs evolve their own behavior code. Or use evolving FAMs. The hard thing, of course, is coming up with the proper performance measure. One way is to look into re-enforced learning where you teach 1 NPC something and have him mutate copies of himself to create others. Also, remember that control and freedom is a very delicate balance. Put too much control on the NPCs and they won't evolve into anything more than what you've told them to be, less freedom. Have less control over the NPCs and they may evolve out of control into something drastically different than what you may have pictured. Heck, give them some of the wrong rules and they may decide to give up collecting or farming food and become cannibals and eat each other. Its just something that has to be kept in mind.
The randomness and freedom is what makes a dynamic world. Its also that same factor that makes them hard to create because you really don't know what you'll get. And when you do know what you'll get, your world may end up not being interesting at all. Both AI and evolution is kind of like that. Be prepared to go back to the drawing board with questions and bugs that you have no clue as to the answer to quite a few times.
Its true in physics and in most cases....the simplest answer is usually the right one.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement