Jump to content

Questions


DaemonCantor

Recommended Posts

Let me just say first, this is not to question design principles or styling or to start arguments but instead I am asking why things are built this way. In the past I asked this question and got answers of that's the way it is, because they don't have everything in the Data Base or the epic- Your an Idiot this does not belong here!

So here's the question: why does Blizzard with constant updates the internal Client Data Base but their own servers serves up a muti-part Core that separates the Logon Server from the World Server and the world Server is just a Core that manages Events, Timings and Distributions but all Events including World Actions are handled in LUA(for easier Tweeking) and all Database interactions are handled in the Client. So why do we have a complicated single core that can support only about 1/8th what a single World core that blizzard runs?

Next Question is: What exactly in in the Link Stream between the Client and the Core considering over half the variables are marked as Unknown?

Final Question is: Why is there a Full DB in the client that we have to extract before we can start the Server if we have a Full DB in MySQL?

As you can see these questions can get very complicated fast so I don't expect a full answer in an instant but please consider what I'm asking because at one point I was thinking of writing a core in Assembly and I couldn't understand why all of the tools I had available only scratched the surface with no explanations for anything. The reasons for my thought was 1 a smaller Program that executes faster and can be able to handle more with less. More is Less and Less is More!

Link to comment
Share on other sites

Let me just say first, this is not to question design principles or styling or to start arguments but instead I am asking why things are built this way. In the past I asked this question and got answers of that's the way it is, because they don't have everything in the Data Base or the epic- Your an Idiot this does not belong here!

The people who in the past would have called you an idiot are long gone ;) - I will try and answer your questions as best I can.

So here's the question: why does Blizzard with constant updates the internal Client Data Base but their own servers serves up a muti-part Core that separates the Logon Server from the World Server and the world Server is just a Core that manages Events, Timings and Distributions but all Events including World Actions are handled in LUA(for easier Tweeking) and all Database interactions are handled in the Client. So why do we have a complicated single core that can support only about 1/8th what a single World core that blizzard runs?

In a simple answer, MaNGOS was built by a small team in their spare time, whereas Blizz employed whole teams of developers full time. Sadly some of the early decisions were made to save typing and duplication between the parts, rather than aiming for flexibility.

Next Question is: What exactly in in the Link Stream between the Client and the Core considering over half the variables are marked as Unknown?

The exact meanings to the opcodes are only really known to blizz, the developers over time has 'guessed' a majority of these. But since each new patch/release changes these, they have not always been documented.

Final Question is: Why is there a Full DB in the client that we have to extract before we can start the Server if we have a Full DB in MySQL?

The DBC files contain a lot of vital information that is not kept in any of the databases since it's present in the dbc files.

- As a side note, I am currently looking at modifying the core to read these values from the database, rather than dbc files.

As you can see these questions can get very complicated fast so I don't expect a full answer in an instant but please consider what I'm asking because at one point I was thinking of writing a core in Assembly and I couldn't understand why all of the tools I had available only scratched the surface with no explanations for anything. The reasons for my thought was 1 a smaller Program that executes faster and can be able to handle more with less. More is Less and Less is More!

One of my biggest gripes is that so much was done, but never documented. I have spent the last 5 months pushing a documentation drive to get the gaps filled in.

Again, another side project of mine which is related to my comments above is the reverse engineering of our extraction tools to try and document exactly how they do what they do.

Hope this helps, and please feel free to ask any further questions.

Link to comment
Share on other sites

Thank you Antz, it does answer the top few questions I have had for a long time now. I remember the first couple cores made and they didn't have a outside DB server but instead relied on the Client to handle those things, I dunno maybe that original setup has changed over the years and the DB's in the Client are no longer relevant but for the fact that keeps bothering me was the fact that a Blizz developer told me that the client has all of the info needed to run the game and the server is needed to run the various scripts and control login's as well as tracking and logging the players but from my perspective they have to be running some kinda back end DB because if you dump your Player DB in the Client, then the Client has to get a new copy of that from somewhere.

I wish I had paid more attention back in 97/98 when I was one of the contractors brought in to install their servers but I was too busy making money and getting home to my family. I might have learned something back then that might have helped.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use