|
wilh Wanderer
Joined: 08 Feb 2001 Posts: 89 Location: USA
|
Posted: Mon Jul 01, 2002 12:11 am
Ambitious Project -- Task Automation |
Now I'm sure that many people have developed scripts to automate tasks before, but my goal here is to provide a framework for nearly any such automation. Ideally, I would like to provide a framework for providing goals for the character in a mud, decisions to determine which goals are more important at a given time, and so forth.
A simple example would be to wander around parts of the mud (probably preexplored and mapped so that the "program" would know where it was) and simply gain experience. Whether that be by slaying big bad monsters or simply practicing skills would be dependent on the situation and mud. But while automating that task, certain other things may pop up and provide other goals temporarily. For example if you run out of water, you need to go find a water source and refill your supply. The same for food.
Now that you have an idea for what I want to accomplish, let me describe a little how I hope to implement it. If any of you see any ideas for improvement, I welcome them. I am still very very early in my stages of brainstorming and development for this.
At the heart of this program would be a basic loop. The loop would analyze the situation, determine the most important goal and execute the next step to accomplish that goal. This is the first part that I'm having trouble "seeing" in my plan.
Suppose we have a list of goals with a list of actions or subgoals that are necessary to achieve that end. What is a good way to determine how far along in the processing of that goal we have already gone? For an extrememely small number of goals, we could just use state variables, but the number of variables required and code managability would be astronomical after only a short number of changes and incrase in the number of goals.
My second idea was to use something akin to a call stack used by standard languages and compilers. Maintain a separate call stack for each goal and simply load the call stack each time it is determined that a particular goal is going to be worked on. This leads to two main problems: complexity and state changes. This would obviously involve a whole heck of a lot of work that I may not need if I find a more eloquent method of letting zMud scripting handle it; and second, if the goal goes "out of scope" for a period of time, determining whether the current call stack is applicable would be a pain in the butt and another level of complexity.
So, I'll leave it at that for now, and hope to receive some input from you guru's out there that may have attempted similar things in other languages or whatnot. Feel free to contact me directly as well if you would like to collaborate on this project.
Thanks in advance for any advice.
Wil
Wil Hunt |
|
|
|
Kharok Beginner
Joined: 28 Jun 2002 Posts: 13
|
Posted: Mon Jul 01, 2002 12:45 am |
What you are trying to make is an AI Planner, and a lot of research has been done in this field. They are pretty complicated (or there wouldn't be so much research in the field ;) I studied these in my AI class in college, but that was two years ago and I've forgotten most of it. I'll look around and see what I can find for you, but a decent first start is http://www.csc.ncsu.edu/faculty/stamant/planning-resources.html
|
|
|
|
Rainchild Wizard
Joined: 10 Oct 2000 Posts: 1551 Location: Australia
|
Posted: Mon Jul 01, 2002 12:56 am |
Personally, I'd write a plugin for zmud using c++/delphi and do all the hard processing in a language designed specifically for the complex states that you're likely to need in this situation.
You can capture all MUD input and output using the plugins (perhaps sign up for access to the developers forum for some examples/specific plugin help) and give it a shot :)
You could use zmud to script the finer details of tasks, for example it might be easier for user's to set up a trigger for their mud which reports on a mob being killed, and passes back a simple mob_killed event to your plugin which decides what to do next.
-- Rainchild |
|
|
|
seamer Magician
Joined: 26 Feb 2001 Posts: 358 Location: Australia
|
Posted: Mon Jul 01, 2002 1:17 am |
Go the plugin route! I've looked for plugins for zmud, and only come across traywindows, text->speech and the status window thing (all available from the download page here).
More plugins!
Why oh WHY did I have pass door on... |
|
|
|
wilh Wanderer
Joined: 08 Feb 2001 Posts: 89 Location: USA
|
Posted: Mon Jul 01, 2002 8:07 am |
Thanks for the link, it looks very promising.
With regard to the plugin idea, it is something that I have also considered. My main concern however is providing a framework for this "AI" and not the actual logic/implementation. I want the user to be able to fully customize this. That is why I had originally intended to make it a script as I had assumed that the framework itself would not be very computationally intensive.
If it turns out, however, that we're dealing with a language deficiency, then I'm willing to look into the idea of a plugin. Now if only I'd worked with C++ in the past five years, I might remember a bit of it. :)
Well thanks again for the links, I'll try to continue to keep any that are interested up-to-date.
Wil
Wil Hunt |
|
|
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|