Yes, aas_routingcache_s::traveltimes[] stores the path lengths for all areas of the cluster towards the goal area, and aas_routingcache_s::reachabilities[] stores the first links of each of those paths. Using this, you can generate the complete path from an arbitrary area towards the goal area, as long as both are in the same cluster. So, even though the path query is typically about two areas (start and goal), the cache contains a lot more information. I'm glad I could help, some of the routing code is indeed mind bending.
On 24.12.2011 08:33, Yasir I. Al-Dosary - zgzg2020™ wrote: > Sorry for the double messaging, > > But, is this the answer to my question? > areacache->traveltimes[clusterareanum] > That the traveltimeS is an array? Each cell in it belongs to the > source area, and the value in it is the traveltime for THAT source > towards the goalarea of the cache?? > > > ------------------------------------------------------------------------ > *From:* Yasir I. Al-Dosary - zgzg2020™ <yasiraldos...@yahoo.com> > *To:* Primary ioquake3 Discussion/Development list > <ioquake3@lists.ioquake.org> > *Sent:* Saturday, December 24, 2011 4:07 PM > *Subject:* Re: [ioquake3] AAS is twisting my brain >< > > Thank you so much for that explanation! It helped a lot! > > I have some questions that I would like to ask. > After reading your explanation, I was able to finally understand what > the documentation was saying about the routing cache! > However, I still have some things that I wish someone may be able to > clear up for me. > > The documentation says that the routing cache expresses > " > Per goal area that is in the cluster, the area cache > stores the travel time of each area in the cluster > towards the goal area. This goal area can only be > an area within the same cluster, including the > cluster portals that touch the cluster. > " > So, the data inside the cache should express a relationship between > TWO areas, area where the bot currently resides AND the goal area the > bot wants to go to, right? > If that is true: "the area cache stores the travel time of each area > in the cluster towards the goal area." > * Why does the cache carry only ONE areanum, the goal's, and not two, > goal's and source's? > > > ------------------------------------------------------------------------ > *From:* uwe koch <spiro...@gmx.net> > *To:* ioquake3@lists.ioquake.org > *Sent:* Thursday, December 22, 2011 5:32 PM > *Subject:* Re: [ioquake3] AAS is twisting my brain >< > > On 22.12.2011 08:33, Yasir I. Al-Dosary - zgzg2020™ wrote: > > > > Here is the part that really doesn't make any sense to me: > > The AAS_GetAreaRoutingCache() function is used to find the route to a > > certain goal. > > Inside that function we have the loop that iterates through the > > "routing cache". > > It does a check: > > if (cache->travelflags == travelflags) break; > > As I understand, the travelflags express what type of area "this" is, > > right? > > Then, based on whether the travelflags ALONE are the same as the we > > need or not, the "cache" node is chosen. > > What exactly IS the relationship between the goal and that chosen > > cache node??? > > > > The cache node stores routing information: for every area of the > goalarea cluster, it stores the reachability (in graph search this is > usually called link or edge) that leads to the shortest path towards > goalarea. Assuming that the entire map is one cluster, the cache node > for area x and travelflags y tells you for every area of the map, which > way to go for the shortest path towards x that uses only the movement > types covered by y. > Travelflags indicate, which kinds of reachability the bot can use. Every > reachability is of a certain type, like walk, swim or rocketjump. If the > shortest path contains rocketjumps, but the querying bot has no > rocketlaucher, the cache is useless for him. In this case, a new cache > will be generated that uses only the travelflags of the querying bot. > The actual "pathfinding" is done in AAS_UpdateAreaRoutingCache, it's > basically inverse breath-first-search. > Here's some documentation, the relevant chapters are 6.4 and 6.5: > http://dev.johnstevenson.co.uk/bots/20585341-The-Quake-III-Arena-Bot.pdf > _______________________________________________ > ioquake3 mailing list > ioquake3@lists.ioquake.org <mailto:ioquake3@lists.ioquake.org> > http://lists.ioquake.org/listinfo.cgi/ioquake3-ioquake.org > By sending this message I agree to love ioquake3 and libsdl. > > > > > > > _______________________________________________ > ioquake3 mailing list > ioquake3@lists.ioquake.org > http://lists.ioquake.org/listinfo.cgi/ioquake3-ioquake.org > By sending this message I agree to love ioquake3 and libsdl. _______________________________________________ ioquake3 mailing list ioquake3@lists.ioquake.org http://lists.ioquake.org/listinfo.cgi/ioquake3-ioquake.org By sending this message I agree to love ioquake3 and libsdl.