Repository navigation
v1.18.2
QuickRoute v1.18.2
A movement fix and a combat one. Both are about work the addon was doing that nobody asked for.
Moving no longer stutters
QuickRoute picks the teleport for each tracked quest out of a computed route, and caches that per quest. The cache was emptied on every event the module listens to — QUEST_LOG_UPDATE among them, which the client fires about once a second while you move. Every one of those firings therefore routed every tracked quest again from scratch, each route a search over the whole travel graph. The position bucket in the cache key was a thousandth of the map besides, a few yards, so what survived the wipe was invalidated by walking anyway.
Routes are now kept until something that can change them does: a real change of position, a new zone, a change to which quests you track, or a teleport coming off cooldown — @CybotTM in #67.
Measured with the repository's own scripts/benchmark_movement.lua — 25 tracked quests, window closed, ten simulated seconds. Moving: 226 route calculations and 228 ms of Lua before, 50 and 54 ms after, worst frame down from 3.70 ms to 1.66 ms. Standing still with one quest event per second: 249 calculations and 200 ms before, none and 0.74 ms after.
This is also why the cost grew with the number of addons installed: the expensive path hung off events any addon can provoke by asking the client about quests, spells or bags. Reported by @Playnot in #66, with a video that made the pattern legible — stationary quiet, stuttering while walking.
Nothing happens during a fight
Routes, inventory scans and zone survey records were all computed mid-fight. They are now postponed and run once the fight ends: a super-track change cost 40 ms and a graph rebuild during combat, a bag or spell event walked every bag slot, and a zone crossing was written to disk. The quest route cache also survived a fight rather than being emptied by it, which used to move a full recompute of every tracked quest to the moment the fight ended.
One exception is dropped rather than postponed: a zone crossing recorded after the fight would describe wherever you ended up, not the border you crossed.
Installation
- Download
QuickRoute-1.18.2.zip - Extract to
World of Warcraft/_retail_/Interface/AddOns/ - Restart WoW or
/reload