Replies: 6 comments 14 replies
|
My main comment on this would be being able to provide a version range on some of them, as they change over time. :3 |
|
A few special cases that I think we should try to support in the format include
Long Descriptions
I think this is a good idea, but we'll have to decide how we want to format the short and long strings together. One of the big use cases for having these files is for tools like DB2 viewers where being able to read more about what an enum value does would be very helpful. There is also the question of just how detailed/long we want to let these be. As an example for spell effect types, we could have a brief descriptions to give a simple idea of what something does or long descriptions that fully explain what the effect does and how the spell data is used. The former is short enough to show in most text diffs but isn't very useful in this case, while the latter is long enough that it wouldn't display very well in some cases but provides most of the useful details someone reading about a spell may want to know. Types? While we're at it, I think it could be helpful to also use the mapping file to map fields to generic types that show up a lot where we would want our tools to handle all of them in the same way. The biggest example that comes to mind here is the integer fields that represent colors used in many DB2s, but we could also use this for Unix timestamps and anything else sensible that shows up. |
|
Joining in to give some further examples which underline the usefulness of adding version specific flags as I was asked to name some clear examples for it here: SpellEffects.dbc/db2 is the most apparent candidate which would benefit from version specific enums as the earlier expansions (WoD and onwards) started to deprecate old effects and re-use them for new effects. Classic was confirming this further by re-introducing some of the deprecated spell effects under new enum values which of course do not line up with older versions. One example would be SPELL_EFFECT_ACTIVATE_RUNE. That effect was introduced with original Cataclysm (4.0.1) and later deprecated and replaced for SPELL_EFFECT_RESTORE_GARRISON_TROOP_VITALITY (enum Id 146) So the question:
Is a very yes from my side. There are enums which have changed. The versioning is a tough question though because no matter how you twist it, it's a balance between either doing entire version-specific files (which is verbose as hell) or doing unreadable inline modifications. |
|
Given there's been no movement on this I'm going to bite the bullet and get it going. Still not a clue how to handle version-specific definitions in a way that isn't ugly or verbose, but whatever. |
|
For versioning, even though I'm not happy with this at all, went with this for now to keep it similar to DBDs (partial SpellEffect::Effect enum): We may also want to adopt EXPANSION (or even BRANCH as Dorovon mentioned) filters to make the lines less long. These would be internally set and replaced with an applicable build range/set of build ranges, which would then work the same as existing build ranges, e.g.
This should only be used to note exceptions. The default mapping for the value, which should be the most recent one, as such has no build notation or anything like that. You'll note that e.g. (Non-Classic) Vanilla/TBC aren't noted there because it didn't have runes, so it wouldn't have this enum value regardless. Implementation wise this means a preferred build or "build hint" has to be given to the parser for DBDE/DBDF files. If no build is given, it will ignore any build-specific values, if a build is specified it will prefer lines with build-specific values that include this build, but uses the default value otherwise. I didn't want to do full duplicate lists like DBD does as that would be too annoying to maintain I think, but more feedback on this is still welcome and we can still change it while adoption is non-existent/very small. |
|
The initial pass at converting ~500 enums and flags to the new format is pretty much done, largely sourced from WTL and wago that have in turn sourced them largely from TC/the wiki/enumeratedstring.db2. I'm sure many things still need updating, so we're probably ready to start accepting any PRs and issues around the enum/flag contents now. Implementation wise, DBDefsLib integration is done outside of more tweaks/testing that need doing and DBCD support still needs some work (see the open PR). The upcoming version of wow.tools.local will be using these (but the enum-conversion bits of DBCD may remain disabled for WTL). The floor is still open to suggestions for tweaks to the format and such, but I'd like to have this first stab at the format and implementations finalized in the next week. Format and implementation changes will still be possible afterwards as going off the amount of activity here, the amount of affected users will be pretty small. Still not the happiest with the format, but happy to finally have these in the repo. Thanks for everyone's contributions so far. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
We've been talking about enums/flags support in WoWDBDefs for years now and haven't actually gone forward with it and it's probably time to change that.
Shipping it as part of a 'V2' of the DBD format might be a bit much to take on or wait for, so a different strategy was discussed in the datamining Discord that I want to bring over here because having important discussions like that on Discord sucks.
Stuff that was previously discussed in the V2 thread on here as well as more recently on Discord:
File structure
extrafolder.Format
Versioning
Would love to get some discussion going and maybe even work towards an actual implementation. As we're doing it separately from the fabled 'V2' format this can be done without disturbing the current definitions.
All reactions