Navigation
From LoopBot
LoopBot implements LavishNav to record and navigate the environment. This method breaks from traditional path movement (where the bot may only travel along a set path) and permits the bot to move freely in his environment based off a predefined map of the entire area in which he moves. In this manner the bot knows all waypoints which are accessible to him, and can determine the best path he must travel to get there.
Obviously, before the bot can navigate the world, it is necessary to create the map files that contain waypoints which are known to be safe to travel. The LoopBot Mapper facilitates zone mapping and waypoint connection (see below).
LoopBot interfaces with LavishNav through LoopBot.clsNavigation.
Map data is stored in:
./LoopBot/maps/
And map files follow the navigation scheme of:
ZoneName.xml
If a zone name contains a special character, it is removed. If the zone name contains a space, it is converted to an underscore ("_").
Contents |
Internal Zone Tree Structure
Internally, each ZoneName.xml file has a structure as follows:
- Universe: Azeroth (Unique, CoordinateSystem)
- Universe: ContinentName (Unique, CoordinateSystem)
- Universe: ZoneName (Unique)
- Region.Box: Auto-generated Unique Name (Unique)
- Universe: ZoneName (Unique)
- Universe: ContinentName (Unique, CoordinateSystem)
LoopBot Mapper
If a map file does not exist, LoopBot Mapper will create an empty one.
The LoopBot Mapper allows users to define and edit their map data. Features included are:
- Toggle Auto-Add Waypoints - Add a waypoint where the character stands every 2 seconds
- As per Junior's suggestion Auto-Adding waypoints will occur based on waypoint distance (from the previous point) and change in heading, rather than every two seconds (05/04/07)
- Add Waypoint - Add a single waypoint where the character is currently standing
- Remove Selected Waypoint - Remove the selected waypoint from the map
- Move To Selected Waypoint - Move the character and path determination to the selected point
When mapping or navigating, if the character enters a new zone, the new zone map file will be opened, and connection points from the previous zone will be determined to the new zone.
Object Data Retention and Points of Interest
Every map file will have an associated "data" file, which is an LavishSetting XML document. As data is mapped, or as the character is navigating the world, certain game object data will be retained here. A Point of Interest may be as few as one point, to any number of points that define a specific area within a Zone. This data includes the following:
- NPC locations
- Talkable NPCs
- Flight Masters
- Skill Trainers
- SubZone locations (any one point in which the character enters a new SubZone)
- Grinding locations - Points at which mob grinding is permitted at a 20 yard radius from each point
Cross-Zone Navigation
- Determine distance between current closest region and destination
- Do we have a mount?
- Yes:
- What speed is it?
- What is the travel time with that mount?
- No:
- What is the travel time by foot?
- Yes:
- Determine closest flight point
- Determine flight point closest to destination
- Do those flight points connect?
- Yes:
- What is the distance between these flight points?
- What is the travel time?
- Perform Step 2 for current point to closest flight master
- Perform Step 2 for destination flight master to destination point
- No:
- Travel by foot or mount
- Yes:
- Evaluate fastest means to our destination

