Mini Project: Companions/Bots

05/27/2010 23:27 dragon89928#31
Oh wow. I was just thinking about something like this this morning! I was gonna code something up like this for my server too (too bad I'm using 5165 x.x). Great job.
05/27/2010 23:41 Sion~#32
Quote:
Originally Posted by dragon89928 View Post
Oh wow. I was just thinking about something like this this morning! I was gonna code something up like this for my server too (too bad I'm using 5165 x.x). Great job.
The server version doesn't matter. Otherwise to the Thread Starter: great progress. I wish you the best of luck with the project.
05/28/2010 00:00 dragon89928#33
Quote:
Originally Posted by Sion~ View Post
The server version doesn't matter. Otherwise to the Thread Starter: great progress. I wish you the best of luck with the project.
Actually I think it would. Its like saying we're working on the same project except you're American and I'm Russian. Something like that :p
05/28/2010 00:26 pro4never#34
Quote:
Originally Posted by dragon89928 View Post
Actually I think it would. Its like saying we're working on the same project except you're American and I'm Russian. Something like that :p
Actually aslong as it's written in cD and you are familiar with the source you are using you can easily transfer stuff between them.

Especially with the new version. You just gotta redirect variables to how your source stoores themm and basically good to go.


Just done a bit more work on surroundings.

Bot calcs done for getting both number of mobs/players in screen (seperate values to compair) and to return the closest of each. Will be useful for the logic server to figure out course of action.

Also redid some distance calculations while i was at it. I'll finish the conversion next time i'm motivated then back to logic server i suppose.
05/28/2010 08:30 Santa#35
Quote:
Originally Posted by pro4never View Post
Actually aslong as it's written in cD and you are familiar with the source you are using you can easily transfer stuff between them.

Especially with the new version. You just gotta redirect variables to how your source stoores themm and basically good to go.


Just done a bit more work on surroundings.

Bot calcs done for getting both number of mobs/players in screen (seperate values to compair) and to return the closest of each. Will be useful for the logic server to figure out course of action.

Also redid some distance calculations while i was at it. I'll finish the conversion next time i'm motivated then back to logic server i suppose.
Great job with this. This has the potential to be amazing.
06/07/2010 17:24 StreetArts#36
on level 3 it looks just like an aimbooter hiting from mid air whit his back :))
06/11/2010 02:23 pro4never#37
Quote:
Originally Posted by StreetArts View Post
on level 3 it looks just like an aimbooter hiting from mid air whit his back :))
Mostly cause in the test version the bot has no synch between it's own jumps and attacks and doesn;t pay attention to the client's last jump time at all.

That being said, hitting someone early/mid section of their jump isn't that hard... doing it in chains can be though lol.

So i'm probably gonna start working on this again soon... been distracted by other coding bits and pieces and have been putting off the logic server as much as i can lol.
10/26/2010 09:17 pro4never#38
So I'm going to be continuing this project eventually for use with Hellmouth...

I'm starting to plan out some of the structure for the AI system I wanna use. Here's the rather generalized overview of how I'm thinking of doing things..

A: Move from a top down approach eliminating options as you go.
Eg: focus on most generic/broad conditions which, if not met, will reduce number of choices possible. If there is no items in range why bother even calculating if it's something I want to loot? etc

B: Internal conditions broken into 1 sections

1: Long term memory: Contains directives and history of bot or bots in general.
-If I hit a monster I gain exp (generalized knowledge)
-I want to gain exp (directives)
-I've discovered that hitting mobs 10 levels lower than me doesn't give me much exp (past experience)

2: Short term memory: Contains recent decisions and their outcomes and serves to modify weight of decision making processes
-Last time I went to this area of the map I got pk'd!
-Last time I attacked this monster I took a lot of damage!

**What short term memory consists of**
-What have I done recently?
-How have my actions influenced my surroundings?
-How have my actions influenced myself?

Note: Short term memory needs a way to turn into directives or schemas (take specific knowledge and turn it into abstract rules... EG: this player hits me with less frequency if I attack from his left side). This is a difficult thing to do and may be better served by the bot producing detailed log files which can then be coded into the decision making process by hand. For conquer there is no real reason to need quite that dynamic AI.


C: Produce an action
-If I go with an AI server system then it would simply return a decision and the game server would take care of the rest.
-Cause the logic server to go into 'listen mode'? How are we translating from action to result?

D: Process outcomes.
-Difficult to avoid conflation... A choice I make may not fully have it's outcome realized for seconds... minutes.. etc. How do you link up WHAT caused the result when in most situations there are choices being made multiple times per second?
-Back propagation to modify the weight of decision making connections/nodes


So as a more specific breakdown of the decision making process.. you have 5 main factors...

-External Conditions (mobs/players/items around me)
-Internal state (Current statistics)
-Memory (broken down into long term schemas and short term results from past actions)
-Action (returned to game server or wherever)
-Result (processed versus past actions and used to modify the decision making process. Eg: how much weight to lend various factors such as health, desires and surroundings)


So yah... not much 'progress' in the post, just figured I'd necro the topic with some of my current thoughts.

HOPEFULLY I'll have time next couple weeks to write up at least the start to something like this. If anyone has suggestions for how to code various parts of the system, I'm all ears.

Any comments/suggestions on how I would break things down? Am I on the right track or totally missing the mark?


I was thinking earlier... it would be a really entertaining thing to attempt to try to write something which would rival the 'intelligent behavior' of players for very specific instances. EG: pvp.

If you strip out chatting and set your focus on something very specific, it wouldn't be THAT hard to write a pvp drone which would be virtually indistinguishable from a real player (granted it may not be a GOOD player... but when faced with a random player or bot the difference should be rather minor)

If something like that can be accomplished then it lends MASSIVE credit to the server... So you want to practice pvp? Well why not enter an instanced TDM of 20 Vs 20 intelligent players that actually show some signs of real game play vs boring bots which basically aimbot.