Questie Light
Nyarantes opened this issue ยท 1 comments
I'd like a Light version of Questie without any added features. Just the quest tracker and database, really. Like how the old QuestHelper functioned back in the day.
I liked the Questie Shutup! feature that was added some time ago, but with every new feature added, the addon uses more memory, and I honestly don't even use most of the features added, and regularly have to disable the ones that are toggled on by default.
We will not be making a "Questie Lite", but there are I think two aspects of this request that are important to separate, and address individually:
1) Questie's performance has gotten worse over time
Questie has a lot of modules, but most of these are rarely called. There are really three parts of Questie that act as the biggest resource hogs: the Tracker, Map icons, and Database.
The tracker is pretty notorious, as it was amended many times over the years, as we've progressed between each expansion and needed more and more functionality, especially with achievement tracking added in Wrath. Unfortunately, this was done by different developers over time, as folks came and went from this hobbyist project. As is the nature of such efforts, bugs arose when developers didn't fully understand the impacts of what they were modifying, and this led to a situation where Questie developers themselves were just turning off the Questie tracker and using third party trackers. Thankfully, as of version 8.0.0, @drejjmit (who did much of the original tracker work) came back and practically rewrote the entire tracker from the ground floor. Quest trackers, especially ones with lots of quality of life features, are incredibly complex, but version after version we've been hunting down bugs (just look at how many versions we've released since 8.0.0) and it's in a pretty good place now.
Map icons are another major resource hog. They don't impact overall framerate too badly, but there is a noticeable hitch when switching between map zones with lots of icons, and they take awhile to fully render each time they need to be redrawn. However, it's worth noting that one potential bottleneck for icon performance is the underlying database, which constantly needs to be polled whenever rendering icons.
Which brings us to the biggest resource hog of all: QuestieDB. We ship a plaintext export of private server data for every expansion we support: Era, TBC, and Wrath. We also ship a set of code instructions manually created by Questie developers and contributors in order to fix the errors in those private server databases. Whenever Questie detects a new installation, it painstakingly goes through and loads the database, then applies all of these corrections, then saves that information into SavedVariables, the area of the game used for typically storing addon settings. This is extremely slow, but is necessary because SavedVariables are the only place we can permanently store data dynamically as the game is running, which is the only way to apply corrections, since if we applied corrections to the dumped private server database, our corrections would get overwritten if we needed to re-export the source database again in the future; for instance, if we add support for a new data type in quests, and now need to ship that data - which has happened many times.
The good news is, in the near future, we're planning on overhauling the database to be stored statically, with individual databases for Classic, TBC, and Wrath, which will be compiled as part of our release pipeline, rather than compiled by each user's game when initialized for the first time each version. This will complicate the job of developers, as we now have to apply corrections and recompile the database outside of the game itself, but it will dramatically speed up load times for users, and overall reduce Questie 'lag'.
It is also worth noting that you cannot simply have the tracker and icons without the database. The vanilla 3.3.0 quest tracker had access to data that addons do not have. There is no API to gather the vast majority of information we need; Blizzard has cracked down on that sort of thing over the years in order to prevent botting and other forms of automation. The only reason we know where you need to go for each quest is because of our database. There are quest guides out there which show you rough (hardcoded) areas for objectives, but none of them have as detailed and accurate of a database as Questie does.
I do feel the need to address one other aspect - using memory is not a bad thing. It's actually a good thing for programs to do, assuming the memory is available. Unused memory is wasted memory. The most important aspect for improving performance is reducing CPU cycles and disk seeks, which can often be achieved by moving more data into memory. This is what the upcoming DB rework aims to do.
2) Questie has a lot of features that have been added over time and may seem unnecessary for certain folks, especially those with other addons that perform similar functions
With this one, for the most part I don't think the right solution is to outright remove features to slim down the addon; I think it's just establishing a sane baseline of default settings (not enabling jarring things), and modularizing Questie's functions enough that users can very easily disable entire portions of Questie with ease. On this point, we're currently underway on a massive settings rework that will bring fine-tuned control for features, while also implementing profiles (like almost every other addon has). I will personally make sure we have large overarching toggle buttons to wholly disable certain features, like we already have for the tracker and icon system.