WoW Emulation Basics!
By MultiRealms... known as Jerry8099 in other forums
***Based on Personal Use; Use of these emulators varies
***
-----------------------------------------------------------------------
Introduction...
The following thread is to inform you on how WoW Emulation works and what emulation software is recommended for the beginner.
First lets talk about what Emulation is...
Emulation = In computing terms it is the development of hardware/software that copies a service. Trying to copy its use.
In this introduction towards World of Warcraft Emulation, we will be taking a look in how the game is emulated, the importance of knowing its code, choosing an appropriate emulator, and its legal information.
So lets begin!
-----------------------------------------------------------------------
How It Works!
I basically broke this up into two section.. Section One tells you how a WoW Emulator uses different coding methods to make a world ...
while Section Two takes a step further and thoroughly explains the process! (LONG)
Option One: How an WoW Emulator works
An WoW Emulator:
- Optimizes DBC/Map files to create world
- Uses C++ to create multi-functional gameplay
- Uses MySQL to store ingame data such as accounts/items/etc.
- Creates an Network which allows for multiplayer use. (using C++)
Option Two: A Deeper Look into WoW Emulation Development
Now... let me start by saying that WoW Emulation Development is a VERY complex process.
But for the sake of simplicity, this is HOW IT WORKS IN A NUT SHELL.. 
Before an emulation project successfully works, coders decide which code they will program this in, now in WoW Emulation the most common is C++.
Then coders extract map/dbc files from the WoW client, using tools to extract them. (hack)
Once they start coding the project, they make the code use the dbc/map files. This generates the game world, Azeroth/Outlands <3.
This just creates a blank world, this world is useless!
So then coders start filling out data - that start shaping up the game we know and love.
Using C++ (an object orientated programming code), developers are able to start creating Player movement, interface, stats, attack mechanics, spell use, talents, & other game mechanics.
Also in this process developers add the MultiPlayer (networking) functionality and also add the requirement* for the .dbc/.maps be used to create the world, etc.
*read legal information for the reason behind this...
This is cool cause it allows for game functionality but...
It's still a BORING world!
There needs to be NPCs, Quests, Dungeons, and more goodies..!
Sadly C++ cannot store this data without it consuming A LOT of memory...this is where MySQL comes to the rescue!!
So coders tell C++ to communicate with MySQL databases... in these databases are tables which tell the emulators how much NPC's health they have, what loot they drop etc.
This is also where character/account data is also stored...
NOTE: These databases aren't magically made out of the blue, they are filled in by Database teams. This is HUGE because you have to remember that WoW has thousands of content in-game!
**Fun Fact: Reason why database tables have weird field names is because they correspond to Blizzard's maps/dbc fields inside the files! **
So now the world is populated with your normal NPC's that attack... but their is no working battlegrounds, arenas, boss encounters, etc.
So this is where C++ developers step in and start adding scripts which add into the basic core, this is where boss encounters/gossip creatures/bg's/arena's are BORN! 
This basically sums up WoW Emulation Development, possibly the BEST reverse engineering example on the interwebz. <3 <3 <3
----------------------------------------------------------------------------------------------------------------------------------------------------
WHY LEARNING CODE IS ESSENTIAL!
Now if you read either section/option you might have figured out that learning the programming is vital to understanding all this... so the question is...
Why learn these code language(s)?
Here are the reasons:
C++
It's the universal language of these two emulators, and MOST of the gaming/emulating industry's standard in coding.!
Therefore C++ is useful because:
- Its Fast! - C++ was designed for performance! Therefore more responsive emulators!
- It's Flexible! - There are so many possibilities due to the language's diverse "styles" of structure
- Well-Supported !- It is used by many different languages therefore more variety of programming! (if you want to be a programmer!)
- It's AWESOME for Emulators - Due to its speed it can really load events/creature fights very fast and effective!
SQL
It's a language which stores data (as queries) which can be read by many other languages such as C++, C#, Python, PHP, etc.
SQL is useful beacuse:
- Learning it allows for Website interactive features! *site connects to db, via PHP, to modify guilds/characters/etc.
- Understand the Database and it's content!
- Create custom content [ITEMS,NPCS,QUESTS,ETC.]
LUA
It's a language which is affects many released game's Interface!
Mainly coded for WoW Addons it is also used in some Emulators.
LUA is useful beacuse:
- Allows for an alternative & sometimes easier way of creating smart objects/creatures/events
- Learn to make Addons!
- Create Systems that interact with C++
- ----------------------------------------------------------------------------------------------------------------------------------------------------
Choosing An Emulator
TrinityCore / MaNGoS
PROS
- Very Stable
- Active Updates (Trinity Core actually updates more often)
- Scripting is based on C++
- Cleaner Code [Trinity in particular/No Burlex coding]
CONS
- Seems to be aiming development towards 4.x [Good yet bad for some]
- Community Unofficially support Modding/Custom
- Only limited towards SQL/C++
ArcEmu
PROS
- Very Stable *Depending on release

- Active Updates
- Scripting is based on C++/LUA
(LUA=a Simple Scripting Language) - Community Officially Supports Modification/Customization of Code
CONS
- Seems to be developing towards 3.3.5 still [due to being a bit behind compared to other emu's]
- Slightly more bugs than Trinity
- LUA loads slower than C++
- ----------------------------------------------------------------------------------------------------------------------------------------------------
Legal Information:
Emulators, such as TrinityCore, are LEGAL!
Why?
Because in their Terms of Agreements they are stating they are sharing an open source project
in which they use files to create a virtual server in which people can connect and play,
but to be used for educational purposes. *CODING TESTING etc.*
Private servers are NOT legal because the files in which Emulators use (Maps/DBC) are copyrighted&ToA of Blizzard Entertainment.
Therefore this can lead to a potential trial against Blizzard.
*This explains why Emulators don't provide DBC/Map files. just extractors! *
FORTUNATELY - Blizzard has always been kind and shuts down servers without much legal punishment!
----------------------------------------------------------------------------------------------------------------------------------------------------
As you can tell emulation is very interesting! 
I've been doing it for almost 5 years now! Anyways...
Thanks for reading! Good luck!
- Jerry
P.S. Please discuss any issues etc.! I'd be happy to help!