Jump to content

AI Playerbot


Unkle Nuke

Recommended Posts

  • 6 months later...
  • 4 months later...
  • 2 months later...

AI Playerbot was originally developed for MaNGOS Two (3.3.5a WoTLK), but ike decided to work on it for other projects like R2 and Cmangos.

There are branches in his repo for MaNGOS Zero, One, and Two. However, ike never went past 3.3.5a.

We would love to see some of you in our community take up this project and develop versions for MaNGOS Three and Four, plus keep the code for Zero, One, and Two updated.

So who is up for the challenge? :D

Link to comment
Share on other sites

  • 6 months later...

I have successfully merged ike3's original Playerbot-AI code for MaNGOSZero with the most recent release of the core code (Rel 19, as of now), and the result is a functionally playable product. There are still fairly major glitches, some because of changes to the way the source code was written (e.g. bots can loot corpses, but not gameobjects), and some simply because it needs polishing (e.g. bots often have trouble turning to face an opponent that is attacking them, and therefore cannot attack in return). I will be working on ironing out these bugs as my (limited) time permits, but I am more than happy to open the floor to anyone who wants to help. I will get around to setting up an "Issues" page on Github, but for the moment, please don't contact me simply to report a bug. Chances are I know about it already, and will try to get around to it when I have time. At the same time, I am happy to accept help and suggestions.

Get the code at https://github.com/PsiDraconis/MaNGOSZero-AI, and find instructions to compile elsewhere on this forum (it's exactly the same method as MaNGOSZero Rel19).

For the basics on actually using Playerbot once compiled, see ike3's very helpful page at MaNGOS-Bot

Here's to bug-squishing!

PsiDraconis

Link to comment
Share on other sites

I have successfully merged ike3's original Playerbot-AI code for MaNGOSZero with the most recent release of the core code (Rel 19, as of now), and the result is a functionally playable product. There are still fairly major glitches, some because of changes to the way the source code was written (e.g. bots can loot corpses, but not gameobjects), and some simply because it needs polishing (e.g. bots often have trouble turning to face an opponent that is attacking them, and therefore cannot attack in return). I will be working on ironing out these bugs as my (limited) time permits, but I am more than happy to open the floor to anyone who wants to help. I will get around to setting up an "Issues" page on Github, but for the moment, please don't contact me simply to report a bug. Chances are I know about it already, and will try to get around to it when I have time. At the same time, I am happy to accept help and suggestions.

Get the code at https://github.com/PsiDraconis/MaNGOSZero-AI, and find instructions to compile elsewhere on this forum (it's exactly the same method as MaNGOSZero Rel19).

For the basics on actually using Playerbot once compiled, see ike3's very helpful page at MaNGOS-Bot

Here's to bug-squishing!

PsiDraconis

Nice, ty :)

Link to comment
Share on other sites

  • 4 weeks later...

PsiDraconis - you rock! This is exactly what I was looking for. I built the release a few hours ago in VS 2010 and it's working great (although I did have to copy in the Playerbot folder, in the release configuration it was not there). The bots seem to work very well. A few minor bugs, but I'll dig through the code and see if I can help fix some of them.

Thanks again!

Link to comment
Share on other sites

  • 2 weeks later...
  • 1 month later...

After discussing this, we're pretty interested in implementing this as a submodule, however it would be nice to have the original developer (in this case Ike) on board with it as well! Not sure whether Ike checks this forum or not? Doesn't seem like he has been actively developing the bots on his github for a while..

Link to comment
Share on other sites

  • 1 month later...

Last I checked, ike3 abandoned Cmangos and now supports only Trinity and Mangos R2 with his new mangosbot project which seems to be a continuation of Playerbot-AI, but he hasn't made any commits to it in roughly 3 months.

Regardless, the entire reason I started this sub-forum was to drum up interest in creating a MaNGOS-compatible fork.

Still waiting. :(

Link to comment
Share on other sites

  • 11 months later...

The current build in R21 is decent for basic questing and I am becoming interested in the project and furthering the AI. I have been looking over the code for a few days and am stumped as to where the commands are. The code could use some serious commenting. I believe if I can pick it up I can expand what this does and am actually excited to do just that. I'll keep looking at it and testing.

Link to comment
Share on other sites

The current main issue with the playerbots is the spell and gear availability as well as zones etc. The playerbots in zero are based off of 3.3.5a and the play style in said expansion. This causes some of the logic to fail, increasing the resource use and stability for bots as a whole (An example is Mage bots, they constantly attempt to cast conjure food, lagging the server out). This can easily be fixed by someone revising the logic and AI for each class, however it's not something I ever got around to do.

On that note, I am completely against separating the player bots specifically from the core. The way the daemons communicate is through tcp/ip, which would cause a massive increase in network bandwidth usage, especially between the world and playerbot daemon. It's not feasible to stress the world daemon more than necessary, especially when the bots are literally utilizing the packet handler and player functions directly.

AH bot on the other hand doesn't need access to the core what so ever and could easily be separated. The only thing the AH bot would need to do is monitor the AH tables in the database, nothing else is really needed.

Link to comment
Share on other sites

I agree with Reaper, moving the playerbots to a daemon would really increase network latency and, on virtualized (read; modern) setups that would increase CPU usage on the virtualized hardware. Keep the bots in the core. I will start looking at the AI. My big beef is the commands not confirming success. For example "~co +fire,-frost" results in my mage doing the correct thing, but he does not tell me his style changed. I also cannot list what the existing orders are. I plan on fixing that, but the chat parser and commands are strung out all over the place and they're not commented.

As for the AI however, I know right where those files are and can look into understanding them and updating them. I will begin that this weekend. I really like the bots and have been going in just to mess around with them a lot lately, and would love to improve them. If you have any advice, feel free to post it. Otherwise I'll be doing this starting Saturday night.

Link to comment
Share on other sites

What I would personally do before starting to work on the AI, is note down ALL the spells for the specific class you are going to work on, strip everything out and start fresh.Not only would this give you a proper understanding of how the AI is set up currently, but you'd also instantly root out all the issues with the current AI, be it wrong spells or bad logic compared to 3.3.5a.

If you look at this original commit, it shows you all the files edited for the player bots. Implement Playerbots · mangoszero/server@ee33683 · GitHub

Notice the changes to Chat and ChatHandler specifically, where all the commands are parsed (Exactly like all the other core commands). This is where you'd add your confirmation/debug messages.

Link to comment
Share on other sites

Alright, I may do that. It would indeed make it easier to start fresh on the AI, and if I focus on one class at a time, I could probably get something passable in a short amount of time. I guess the only thing left to ask is what everybody agrees on for how each AI should react. For example, I remember playing my mage solo plenty back in the day. I'd run into a group of mobs, root with frost nova, blink, and cast something (cannot remember the name) which did AoE damage. This would not be good in a group, obviously. In group play I normally stayed back and hurled fire and ice at things.

If there are suggestions for how a class AI should work grouped, post them here. I am digging into the code now, but will be leaving in an hour or two for about four hours.

Link to comment
Share on other sites

  • 1 year later...
On 1/30/2016 at 6:53 AM, Xenithar said:

Alright, I may do that. It would indeed make it easier to start fresh on the AI, and if I focus on one class at a time, I could probably get something passable in a short amount of time. I guess the only thing left to ask is what everybody agrees on for how each AI should react. For example, I remember playing my mage solo plenty back in the day. I'd run into a group of mobs, root with frost nova, blink, and cast something (cannot remember the name) which did AoE damage. This would not be good in a group, obviously. In group play I normally stayed back and hurled fire and ice at things.

If there are suggestions for how a class AI should work grouped, post them here. I am digging into the code now, but will be leaving in an hour or two for about four hours.

I was thinking about playing around with this as well, did you manage to make any progress?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use