What's new
  • Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • Visit Resources
  • Visit Downloads
  • Visit Portal

[Discussion] Gatherbuddy2 Profile Optimization

Smarter

Member
Joined
Jan 15, 2010
Messages
763
Reaction score
9
I have been continually pondering a functional method to optimize Gatherbuddy2 Profiles after creation. My current method is very manual and crude, using GatherMate Data and Routes addons I create the route in WoW, then using the Routes plugin, create the profile. However this isn't a optimized profile, merely a optimized route. I have been considering creating a plugin that records all successful harvests in a SQLite Database and their location and count (if it so happens that two occur in the same location). This would give me pretty much the data on WoWHead but more unique to my Profile. Sadly, that is about where I stare at the screen .... once I've collected this data, I cannot come up with a automated method of sorting it or modifying my profile. I've considered plotting all of my Profile Hotspots and then checking the distance between each and my found nodes and then sorting them by the amount within a certain range .... but when I begin to write I just get a block ... lol

Anyways, the point of my ramble is to hear if anyone has any better ideas, or methods, or anything really?
 
Perhaps try to google the "travelling salesman" Problem.
There are algorhythms / theories for finding the shortest route in a List of Points.
 
Listing all the nodes themselves as hotspots isnt going to be the most efficient way, you never need to go directly to where the node is and doing so would look more bottish and you would consume a lot of time travelling to the locations of nodes that are not spawned. Really you only need to get within 20yds (possibly further if you have a fast connection and nodes show up earlier) so that GB2 detects the node and takes over to go gather it

The way i picture doing it most efficiently from a raw pathing PoV would be to imagine a 20yd sphere around every node, then have the path be calculated as the one that is the shortest distance to touch the sphere of the next 3 nodes ahead, which would give you the hotspot to pass via for the next 1 node. That hotspot would then become the start point to do the same calculation from again. Since doing this would effectively generate a path that is at or occasionally below ground level you would probably want to add a +20-30yd height offset to every point on the path to avoid ground collision

I cant think how you would do this in code however with just a set of coordinates, my math skills really arent that good anymore and there are issues still, if you have a low node, then a high up node, then a low node again and your calculating the points in 3D space then the point to reach to be within 20yds of the high node would likely be calculated to inside whatever hill or high thing the node was ontop of.

If you found a way to calculate an initial raw path in a standalone app, my next suggestion would be to create a plugin that does the same calculation but rather than precalculating the entire route it goes node by node and confirms if each point can be pathed to (and doesnt cause stuck behaviour to kick in) as it goes. Ofc if you reached that stage you wouldnt need a preset list of nodes, you could have a monitor mode that just records the node locations as the player does an initial manual farm of the zone then kicks off its calculation process to work out a path on the fly and then spit out the hotspots as it goes until it reconises that its duplicated a hotspot and gone full circle

edit: I think my ramble might have complicated the issue a little more, but perhaps will give you a starting point for your own ideas
edit2: Also this doesnt really give any ideas on how to order the nodes only the way to calculate the best path between them, i can only think the best way would be show the user the list of nodes and allow them to reorder it, apocs profile editor has a fairly good way of showing points on a map and lines between them so you can visualise the route
 
Last edited:
A simplified solution I have been considering is writing a new BotBase that works off such a database. My thought is to use a pre-defined route as I do now, touching on all known nodes. Then while collecting on this route recording the location of successful harvests. Then the bot could optimize it's route on the fly by setting it's Hotspots as nodes with the most successful harvests and with the most nodes within a set harvesting range, blacklisting an area for dynamic amount of time (Let's say a random number of the average respawn rate or lower). The database would be continually added to and updated ... the only flaw I can possibly see is in the blacklisting. As in, if an area has alot of nodes and is close to another largely populated area, without proper temporary blacklisting there could be issues with gathering all the different node types, the bot could simply "bob" back and fourth between two areas only harvesting one type of node.....
 
Last edited:
Back
Top