Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::Bots

Development::Bots Forum for bots.

Reply
 
Thread Tools Display Modes
  #1  
Old 02-21-2017, 08:59 PM
ZombieSoul's Avatar
ZombieSoul
Sarnak
 
Join Date: Jan 2017
Posts: 31
Default 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.
Reply With Quote
  #2  
Old 02-21-2017, 09:58 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

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.
__________________
Uleat of Bertoxxulous

Compilin' Dirty
Reply With Quote
  #3  
Old 02-21-2017, 11:16 PM
GRUMPY
Discordant
 
Join Date: Oct 2016
Posts: 445
Default

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 ?
Reply With Quote
  #4  
Old 02-21-2017, 11:45 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

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?
__________________
Uleat of Bertoxxulous

Compilin' Dirty
Reply With Quote
  #5  
Old 02-21-2017, 11:59 PM
ZombieSoul's Avatar
ZombieSoul
Sarnak
 
Join Date: Jan 2017
Posts: 31
Default

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
Reply With Quote
  #6  
Old 02-22-2017, 01:21 AM
ZombieSoul's Avatar
ZombieSoul
Sarnak
 
Join Date: Jan 2017
Posts: 31
Default

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.
Reply With Quote
  #7  
Old 02-22-2017, 04:27 PM
GRUMPY
Discordant
 
Join Date: Oct 2016
Posts: 445
Default

Quote:
Originally Posted by Uleat View Post
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 ?
Reply With Quote
  #8  
Old 02-22-2017, 04:42 PM
ZombieSoul's Avatar
ZombieSoul
Sarnak
 
Join Date: Jan 2017
Posts: 31
Default

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.
Reply With Quote
  #9  
Old 02-22-2017, 05:41 PM
Burningsoul
Banned
 
Join Date: Oct 2009
Posts: 312
Default

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.
Reply With Quote
  #10  
Old 02-22-2017, 06:28 PM
GRUMPY
Discordant
 
Join Date: Oct 2016
Posts: 445
Default

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.
Reply With Quote
  #11  
Old 02-22-2017, 08:51 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

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 )


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.
__________________
Uleat of Bertoxxulous

Compilin' Dirty
Reply With Quote
  #12  
Old 02-22-2017, 09:53 PM
ZombieSoul's Avatar
ZombieSoul
Sarnak
 
Join Date: Jan 2017
Posts: 31
Default

Quote:
Originally Posted by Uleat View Post
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.
Reply With Quote
  #13  
Old 02-22-2017, 10:49 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

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
__________________
Uleat of Bertoxxulous

Compilin' Dirty
Reply With Quote
  #14  
Old 02-22-2017, 11:20 PM
ZombieSoul's Avatar
ZombieSoul
Sarnak
 
Join Date: Jan 2017
Posts: 31
Default

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.
Reply With Quote
  #15  
Old 02-24-2017, 09:10 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

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

Let me know if it isn't working or is causing other issues.
__________________
Uleat of Bertoxxulous

Compilin' Dirty
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 10:37 PM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3