1. [Lets Learn WoW Emulation] The Emulator

    What is a emulator?

    An emulator is a program/software which is designed to replicate a program/software.

    For instance; TrinityCore - TrinityCore is currently and the only active development on WoW Emulation.
    Link: https://github.com/TrinityCore/TrinityCore - This is TrinityCore source code to their 3.3.5/6.x branch.

    How does the WoW emulator work?

    A WoW emulator requires a sequence of files and programs in order to get the emulator fully connecting the WoW client as follows:

    We will take Trinitycore Emulator and break down the requirements:

    - WoW dbc/maps/vmaps
    - C++
    - MySQL

    dbc/maps/vmaps/mmaps is the client information.
    DBC - DBC is a value of numbers which is read by the client, DBC includes values and information such as: Faction, Achievements, character titles, GameTips etc. Without the DBC the client won't be able to show you the tool tips from the spell, the character titles and all. It is apart of the WoW client.

    Maps/vmaps/mmaps - Holds the physical layer of Line of Sight, and mob interaction and giving the objects in the world a collision (so you can't walk through trees)

    C++
    TrinityCore uses C++ to create the infrastructure of their emulator. The reason why C++ is used is because:

    - It's fast, C++ is designed for the performance, a better performance creates a non-lag emulator.
    - Flexible coding, C++ offers alot of flexibility, the language it self can communicate with the MYSQL to hold information about the values of creatures.
    - Supported language, many gaming industry use C++ creating a more well knowledge community bring more ideas and performance into the system.

    MySQL

    MySQL is a database in simple terms. TrinityCore uses Mysql to hold information about the creatures, the name of the creates, anything which the DBC the WoW client doesn't hold information about, we will need to create a database which holds information which the dbc doesn't for us to have access too and use.

    How does the process work

    1.First of all, to create an emulator we will need to use a programming language which offers us flexibility and be able to communicate with a database, the common is C++

    2.Once we chose our language, we need to extract information from the WoW client, we use certain hacking methods to gain the files we need (DBC, vmaps, mmaps, maps) Fun fact: this is the part where it makes private servers illegal!

    3. Once we extract the dbc, vmaps, maps, mmaps; we will need to start coding our emulator, this is where we create our world! Azeroth/outland. But wait there's no NPCs or creatures or anything just a blank world.

    4. Now we need to start creating an infrastructure using C++ (object orientated programming code) we are now able to start creating the code for: player chat interaction, player movement, stats, spell mechanics, bosses and talents.

    5. Once we coded outr world, and now our characters can move/speak to each other, there's still no npcs! Unfortunately C++ cannot hold thousands of lines of data for creatures text, ID, displayID and all of that. This is where we use MySQL

    6. We create a database with MySQL which communicates to our emulator, what we put into the database is the creature information and objects! In order to do this we need to create a program called: Sniffer, a sniffer is a program which records information onnpc/objects from the Blizzard live server then the program exports a file which is filled in sql format of npcs and creatures - we use this to fill our world.

    And done, we have our working world!.
    Edited: February 11, 2016

  2. Awesome!
    I am looking forward to this topic.

  3. One thing that bothered me is the sniffer part, it doesn't "extract" nor "convert".
    Its just checking out the traffic and recording it.

  4. One thing that bothered me is the sniffer part, it doesn't "extract" nor "convert".
    Its just checking out the traffic and recording it.
    I agree. I should of read that last part before putting it up, one of the last thing I forget.

    Thanks.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •