EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Development::Bots (https://www.eqemulator.org/forums/forumdisplay.php?f=676)
-   -   Bot observations (https://www.eqemulator.org/forums/showthread.php?t=41165)

ZombieSoul 02-21-2017 08:59 PM

Bot observations
 
I switched over to bots from mercs a while ago, overall pretty nice, but the things that really bother me about them and I'm poking around the code trying to figure out are:

If you get engaged(in combat) and the bot doesn't have line of sight. they just stop and twiddle their thumbs. I have them currently moving to their owner so you don't have to ^summon every corner in a tight dungeon seems to work but I need to figure out the proper way to move them, right now they just slide to me and if I am in los of the target they will pick up and fight as normal.

The other things are pretty much the same as I've seen mentioned here.

Group disbanding/ bots depop or get broken(stand there and stuck in group until group is disbanded) on zoning: this seems to only happen since a friend of mine started grouping with me. so over 1 client in a group makes the groups bug out with bots.

and the last thing is the terrible rubber banding while they are moving, I can watch them run to a target, and it seems like they do it over and over again until the server says they are there. like the client thinks they are moving faster than the server says they are. The same thing happens when they are following. or really just moving at all. but my pet seems to have very little of that. the mercs didn't seem to do that either.

These are the things i'm looking to improve, any ideas or pointers are welcome. I still am trying to wrap my head around the code.

Thanks for reading.

Uleat 02-21-2017 09:58 PM

I just pushed updates for Bot Bards (songs and song twisting) and Wizards (familiar casting.)

The line of sight issue is next in my sights and the rubber banding issue is near too.

Grouping is a whole other beast..but, it is on the list.

GRUMPY 02-21-2017 11:16 PM

When it comes to the grouping/following glitches with the bots, I was always curious of the comparison between mercs and bots. (as far as the coding goes).
I don't know anything about that end of the headaches, but is the coding similiar with each other ?

Uleat 02-21-2017 11:45 PM

When mercs were first introduced, they were pretty much a cut-and-paste of bots.

They (mercs,) of course, we standardized a little more since they are a part of the live gaming experience.

Bots tend to be bastardized since they are exclusive to the server code..and then bastardized even more since they are not part of the standard server.


When I work on bots, I focus exclusively on them because:

1) There are no dedicated devs working on bots..

2) I don't know how mercs work on live and have no reference to make changes to them with.


I haven't played with mercs to see how their grouping works...

Do they have similar issues with grouping as well?

ZombieSoul 02-21-2017 11:59 PM

I'm glad to hear those are on your radar, looking through the code, i'm a bit confused, it seems like there should be simple solid npc movment for npcs, mercs, pets and bots etc to move/path through and they all should work about the same as far as movement goes unless something fancy is needed. but I my vision is clouded as I drown in the code. haha.
I can't help myself but to unravel it piece by piece, its like a jigsaw puzzle to me.
If I can figure it out, i want to make playing solo more like bards tale or might and magic. where you pick up your group from the local inn and go work to level the group up and equip them as you do. If players want to join you, you can just have a bot sit out.

Thanks again, for all the work

ZombieSoul 02-22-2017 01:21 AM

I just saw you replied at some time before I made my post, as for the Merc grouping, I can test that, I moved to bots before a friend was interested in joining the server. that is when the bots started to really have problems with groups. after work tomorrow I'll do some zoning with more than 1 client, it happens every time on zone with more than one actual player in the group for bots.

GRUMPY 02-22-2017 04:27 PM

Quote:

Originally Posted by Uleat (Post 253064)
When mercs were first introduced, they were pretty much a cut-and-paste of bots.

Do they have similar issues with grouping as well?

No, I don't find any issues with mercs at all when grouping, zoning, following. That is the reason why I am wondering
what the overall difference is between the behavior. (in the coding) For example, why the mercs follow so faithfully
and the bots don't. I can run all over, zoning and the merc, for the most part, keeps up. But the bot will take the
scenic route. Haha I just figured "some" of the mechanics in the source code would be the same for both ?

ZombieSoul 02-22-2017 04:42 PM

I was looking over this today while at work on my breaks, the grouping issue seems to start with this:
Code:

// Handles all client zone change event
void Bot::ProcessClientZoneChange(Client* botOwner) {
        if(botOwner) {
                std::list<Bot*> BotList = entity_list.GetBotsByBotOwnerCharacterID(botOwner->CharacterID());

                for(std::list<Bot*>::iterator itr = BotList.begin(); itr != BotList.end(); ++itr) {
                        Bot* tempBot = *itr;

                        if(tempBot) {
                                if(tempBot->HasGroup()) {
                                        Group* g = tempBot->GetGroup();
                                        if(g && g->GetLeader()) {
                                                Mob* tempGroupLeader = tempBot->GetGroup()->GetLeader();
                                                if(tempGroupLeader && tempGroupLeader->IsClient()) {
                                                        if(tempBot->GetBotOwnerCharacterID() == tempGroupLeader->CastToClient()->CharacterID())
                                                                tempBot->Zone();
                                                        else
                                                                tempBot->Camp();
                                                }
                                        }
                                        else
                                                tempBot->Camp();
                                }
                                else
                                        tempBot->Camp();
                        }
                }
        }
}

Which camps out bots on zone if they don't belong to the group leader.
I'm going to try just looking for clients that are in the group instead of just group leader and see where that leads

Edit: forgot to mention, mercs handle this way differently. So unlikely to have similar issues.

Burningsoul 02-22-2017 05:41 PM

Coming from a 2014 build where bots use the # command, I just can't get behind new bots. They're clumsy, too verbose, and ADORE standing around drooling. Like 5 steps forward in the amount of commands available (and stability I'm sure), but they feel and operate radically different and I'm not that big a fan. Not declaring war on Uleat, you do amazing work man. This just isn't my cup of tea is all.

GRUMPY 02-22-2017 06:28 PM

I have always had a preference for boxing, which is a great alternative when you can't find a group, but I see the bot system as a
work in progress and don't take them too serious yet, (more like a beta version still) but they could be interesting down the road when
they get a little more smoothed out, if that's Uleat's intentions on the bucket list.

Uleat 02-22-2017 08:51 PM

Quote:

Originally Posted by Burningsoul
They're clumsy, too verbose, and ADORE standing around drooling.

I think I started playing sometime around March of 2012.

I do know that a former dev made some changes to bot behavior between then and the time that I started working on them more mainstream.

The only real changes, previous to the recent ones, that I've made were the new command system and heal rotations.

I know the command system seems a bit unintuitive, especially coming from the old system. But, it is completely separated from the main system
now and allows much more flexibility without all of the duplication that the original system had. (Not trying to sell it :D)


Quote:

Originally Posted by Burningsoul
Not declaring war on Uleat, you do amazing work man.

Thanks and thanks! ;)


This is what causes bots to stand around and drool: https://github.com/EQEmu/Server/blob.../bot.cpp#L2217

Casters stop much further out if they are moving (following) when the target is engaged. This led to the problems listed in the remarks above that line.

That is my next project..figuring out what to do in those cases.


Bard song twisting got fubar'd for a number of reasons..one being my timer hack for instant recast songs.

The reason that was done was to fix an issue where only one song within a certain level range was being cast repeatedly.

That particular issue has been resolved with the bot using proper recast time.

ZombieSoul 02-22-2017 09:53 PM

Quote:

Originally Posted by Uleat (Post 253076)
This is what causes bots to stand around and drool: https://github.com/EQEmu/Server/blob.../bot.cpp#L2217

Casters stop much further out if they are moving (following) when the target is engaged. This led to the problems listed in the remarks above that line.

That is my next project..figuring out what to do in those cases.

What makes sense for me is if the fight starts, and the bot can't see, move to towards whoever they normally follow until they can see what to attack.

Uleat 02-22-2017 10:49 PM

Yes, that does make sense :)

That's just not how they are coded atm..


EDIT: It's hard to switch projects in the middle of them when they contain db changes..it will come :D

ZombieSoul 02-22-2017 11:20 PM

Rock on man, I am just enjoying the discussion on how the bots are moving forward, please at no point take anything I am saying as trying to coax you to work on anything but what you have planned, I tinker and tweak in the mean time figuring out how it all works.

Uleat 02-24-2017 09:10 PM

Ok, I pushed a fix for line-of-sight combat issues.

Let me know if it isn't working or is causing other issues.


All times are GMT -4. The time now is 02:53 AM.

Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.