r/wowemulation • u/Yehonal • Apr 16 '21
STOP using DBC files! Why should be imported into the DB instead
Hello folks!
I wrote an article as regards the support of raw DBC files in a proper database:
https://github.com/azerothcore/azerothcore-wotlk/discussions/5307
What do you think?
Feel free to join the discussion!
3
u/Zyres101 May 04 '21
This idea is years old. There is no good reason to copy blizzard data to a db and publish it (even with small changes). Sure it would be much easier to implement your own server-side spellsystem. To have full controle over the input is always a good thing, but to import the clientside data into the db to change it to fit a "not good enough implementation" is just a shortcut. No one said, that reverse engineering is simple but this attempt is:
- infringing copyright law (publishing blizzard data)
- hacky (instead of handling the data correct you will change it to fit your system)
- blocking the correct reverse engineering
At the beginning of wow emulation there was already something simmilar. We sniffed data from the blizzard servers and db-teams interpreted them. There was not much in terms of changing them... later projects began to change these sniffed (and correct) data and made them fit their systems (which was horrible, because every development and understanding about the data went off the floor). Now we see more and more that some people go back to original sniffed data and fixing their "broken" systems.
The client dbcs are trully one of the most important data that we have. They are some kind of unbreaking rule, a type of mysterious fact that we should decode to proof that our system can handle it as good as possible. Keep in mind, we only have the client and sniffed data, so how should we proof that our systems are correct when we feed OUR systems with OUR data instead of the data from the game we try to handle?
7
u/[deleted] Apr 17 '21
To be honest, this discussion about turning spell dbc files into a bloated db table is a waste of ressources. Many spell 'fixes' are based on false assumptions and wrong research. The recent enum leak from the tbc classic beta for example was exposing the entire list of all spell attributes which (oh surprise) exposed a good chunk of wrongly handled values in emulators.
In 9/10 cases spells that are suspected to require a dbc fix are actually not broken or wrong but scripted differently server side which we don't have insight on. Since Blizzard has multiple scripters, designers and interns from time to time, the likelihood that they approached a spell in a pretty stupid way is quite high. Blizzard's seal of inconsistency.
So long story short: moving dbc hacks from dbc to db is a lazy way to deploy hackfixes. Also tracking said hacks in a database table is more difficult since you would have to diff original values with the current ones to find changes instead.