feature request: allow us to store auras in profiles per-character instead of account-wide
R-Adrian opened this issue ยท 12 comments
Is your feature request related to a problem? Please describe.
problem: WeakAuras uses a lot of memory for people playing on multiple alts.
All the defined auras are loaded at the same time in memory, even if they are not active.
Describe the solution you'd like
Please allow us to optionally split auras storage to per-character instead of storing them per-account, all in a single file.
Currently, all auras are loaded in memory at the same time, even if they are not activated.
To avoid losing track of which character has what auras you could maintain in the global profile just a short list of metadata about existing auras (and aura versions) and which character they are assigned to.
Describe alternatives you've considered
considered to buy a new PC with crazy CPU and 64GB+ of RAM ... but it's quite an expensive move. :(
Additional context
screenshot of memory usage with auras loaded for only 6 alts:
40MB is not a lot of memory considerung that wowe usually uses several gigabytes of memory.
unfortunately if i add auras for 30...40+ alts it all slows to a crawl...
i had to really trim it down to just a few to be able to play reasonably well.
the equivalent of what you are saying with "40MB is not a lot of memory" is basically the same as "we think 6 alts is enough, you must ignore/delete your other alts".
That has nothing to do with memory, nor with the fact that they are all shown on all chars.
See #171 for some previous discussion on why (even when discounting memory management) we don't wish to add per-character auras.
i see, but this is a bit different... load conditions and management is about aura metadata management, these are ok in the global profile, it's just the bulky aura data storage itself that's the awkward bit.
imho if you also start to use internally in WA2 a mechanism for aura inventory tracking then the auras themselves can still be managed globally with load conditions, even if they are stored per-character.
And for deletion and purging of old auras when logged in on a different character, if the global profile (aura metadata index) has no mention of a character-specific aura being assigned, when a character-bound aura is deleted from the global profile index (or marked as outdated/obsolete) it can simply be disabled (or fully deleted) at the next logon of that character, with or without a warning message.
When i play a Paladin i don't need or care at all what my Hunter auras are. They should be disabled and not usable. (first sentence = data, second sentence = metadata)
This also will allow for global auras, that are common across characters, in addition to character-specific ones, just store the aura data as is currently done, together with the metadata in the global profile.
And what would be the benefit? The options interface already distinguishes between auras that are loaded and auras that are not loaded.
in this case the word "loaded" is a misnomer. Currently all auras are loaded at all times.
A better term would be "active".
Well, that doesn't answer the question at all. What is the supposed benefit of storing auras per character?
From the point of view of load conditions logic, when parsing metadata for an aura that's designed for another character/class the load conditions should always return 'false', since it will never apply to the current character, so it makes more sense to also offload its bulk data storage to that particular character's storage as well.
Also, having some auras stored per character allows better memory management and allows for experimentation with different auras on different characters of the same class.
If an aura needs to be available for all characters it could be stored globally as it currently is, or it could be offloaded as well, depending on design.
(e.g. aura interface layout frameworks from a developer, that are common for multiple auras)
Setting auras to load only for a specific character seems to not have that much of a benefit. After all that's currently already possible and except for showing all auras on all characters I can't see how that would make a difference.
Which leaves the better memory mangement. What would the benefit of that be?
Another potential issue with pushing data to CharacterSavedVariables is that it's not necessarily true that an aura will always only be useful for only a single character in its entire lifetime. It would be annoying to have to log out and in multiple times just to manage your auras, so I would expect that this feature would not be used very much if we made it. And thus, not worth the complexity.
I feel like #581 would cover the organizational aspect sufficiently.