JackJack

JackJack

792 Downloads

Impossible Directions From SW to Zul'Aman

RaynnMJ opened this issue ยท 7 comments

commented

Directions Given:
1 Take the portal from Hall of Mysteries to Hellfire Peninsula
2 Take the portal from the Stair of Destiny to Stormwind
3 Exit the Wizard's Sanctum
4 Wizard's Sanctum, Portal to Shattrath [DNT TEMP]
5 Take the portal from Terrace of Light to Isle of Quel'Danas
6 Fly/walk to arrive at Zul'Aman

Correct me if I'm wrong, as far as I know you can't actually walk from the Isle of Quel'Danas without going thru the exhaustion area. You should take the Shattered Sun Staging Area FP in the north of the portal arrival point.

commented

Yeah looks like walking from Isle to Zul'Aman would cross a fatigue zone. It tells you to do this because internally, WoW puts them in the same instance/continent.

Maybe I should allow the directions feature to include flight paths (TaxiPath) in the directions. I originally didn't do it because it's extra work and I tend not to take flight paths since anyway, but it's probably good for new players anyway. Maybe a checkbox somewhere on the JackJack window that would make it include flight points or not.

commented

Probably the best way to approach the implementation is:

  • Split TaxiNode into its own Lua table and remove JackJackLocations.lua entirely, then dynamically build the locations table from the new TaxiNode.lua and AreaPOI.lua.
  • Load TaxiNode and TaxiPath as nodes in the Dijkstra graph, but with a lower distance/weight than walking regularly so the algo will prefer the taxipath instead of walking
commented

Coroutines still run on the main thread, so it does not solve the game-hanging problem.

commented

Good news: Adding TaxiNodes/TaxiPath to the Dijkstra graph and setting the distance to half the actual fight path distance will make it suggest taking the flight point from Shattered Sun Staging Area to Zul'Aman.

Bad news: There are >6000 TaxiPaths that Dijkstra has to consider in the worst case, slowing the pathfinding algorithm to a crawl. It will cause the entire game to hang for a few seconds while it calculates the best path.

Not sure what to do about this. A coroutine will not make it run faster, but it will at least prevent it from hanging the entire game (I think).

commented

Brainwave: instead of encoding each individual flight path segment as an edge Dijkstra has to look at, we instead think of each network as a list of edges between "get on at FLIGHT NODE x" and "get off at FLIGHT NODE y," ignoring everything in between. You could precompute and store each edge's distance as a further optimization.

Something to think about if I pick up JackJack again

commented

Discussion on adding flight points (which will fix this issue) are being moved to #34

commented

Ok so I added flight points in JackJack 2.0. This does slow down the directions feature by several seconds (in many cases), but Stormwind to Zul'Aman will no longer be impossible, since the algorithm prefers flight points over manually flying.

Turning off flight points will be added as an option in the next release, if you're really attached to the speed of the old directions feature.