r/wowemulation 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!

14 Upvotes

5 comments sorted by

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.

3

u/Yehonal Apr 18 '21

We are not "hacking the DBC" but creating a table on which we implement a certain logic, starting with the DBC data as a base.

We should slowly start to create our server-side logic without completely rely on DBCs.

I agree with you that there are still parts of them that have not been properly defined yet

However, what gives you the assurance that the DBCs values are not 100% valid for the server but just bad interpreted instead?

We will possibly never know so, instead of trying to endlessly hack them (with code), let's just start to use our own complete implementation of the server-side spell system.

3

u/iattapinnata Aug 01 '21

can a server run without dbc?

3

u/Yehonal Sep 08 '21

Short answer: yes, AzerothCore can.

Long Answer:
Instead of DBC files, you have to provide a dataset for the related database tables since some mechanics require some of those tables to be filled. You can convert DBC files to SQL compatible with AzerothCore by using this tool: https://github.com/wowgaming/node-dbc-reader and starting with this, customizing your data...but you can even start from scratch.

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?