I am going to try to keep this relatively short because this could easily be written into a book if everything was covered. I wanted to talk about some things that are going on in the community as a whole, that some of us here might not know about or understand. WoW emulation has always been a slow and chaotic thing to be a part of, with changes rolled out over periods of years and projects splitting after years of being a single project. When a project splits, it usually does so violently and quickly. I am going to talk very briefly about some subjects & styles of thinking within the community just so people are aware of what they are getting into, and what they will come in contact with. This is largely a work of MY OPINION. While much of this has verifiable facts throughout it, there is a lot that is what I feel I have seen and read by diving deeper into different parts of the WoW emulation community.
Intellectual property vs. supply & demand
Official legacy servers vs. private servers
Open-source vs. closed-source
Developers (project) vs. developers (project)
Missing knowledge (about how the game worked)
Core vs. scripts
Blizzlike vs. non-Blizzlike
Project members (non-developers) vs. project members (non-developers)
Desire vs. action
Developers vs. players
Players vs. players
Paid services vs. free of cost
Now, I have arranged this list in the order I will write about the different topics, but also by a very loose order or progression through our time as a community. I will also be adding two quotes from a developer at Cmangos that they put into a discussion on the Reddit LegacyRealms page. Here we go:
1. Intellectual Property vs. supply and demand
This is a topic nobody wants to talk about on any side of where they stand. Blizzard undeniably owns the legal rights to World of Warcraft, and all of the material and content officially released under that name from the company. Running private servers is a violation of intellectual property, and punishment can be enforced by law in severe cases. However, the most common legal action is to simply have a server shut down with a "cease and desist" letter, known as a C&D letter or CDL. Private servers came about as a desire to understand how an MMO works, but also as a means to start fan servers, which has been a practice gamers have done for games even before WoW (Dark Age of Camelot, Quake). Emulators avoid legal trouble by not including material owned by Blizzard in the files they distribute. This has not stopped groups from taking the open source tools provided by projects and opening small to large scale server projects. This is because Blizzard does not, has not, and likely never will have official legacy servers but these have long been wanted by the community, which takes us to point 2.
2. Official legacy servers vs. private servers
This is a fairly short point to discuss because there is simply little point or need. A person new to the community might wonder why there is little point or need, surely there is hope! Not really. Blizzard has a business model of always moving forward, so you can already see where legacy servers would be a problem. Blizzard does likely still have the source code for World of Warcraft, but much of the official data regarding how the game truly worked is lost or being hidden. To further the problem, the code for classic World of Warcraft is frankly sloppy compared to the modern standards applied by Blizz or even serious indie developers. Bringing an entire 5GB game and server architecture up to modern standards would simply be a huge task (and here we are in the WoW emu scene doing just that). Things were further complicated when the Nostalrius private server team managed to get an audience with Blizz, only to ruin the already shaky reputation of the emulation scene. Private servers fill the gap where there is a strong desire to play legacy versions of the game but no official channel.
3. Open-source vs. closed-source
Open-source is where the copyright holder allows the distribution and modification of their software for any purpose or person/group, usually in this case under the General Public License (GPL). Closed-source, or proprietary software is the exact opposite of this, where software may be shared or modified only within the terms of the Terms of Service that are provided by the copyright holder. While World of Warcraft is a closed-source game software, the emulation software projects are open-source software allowing them to be shared and changed at will. Since the great drama of the past where Mangos/Mangoszero split into the Mangos and CMangos projects, we have also seen the birth of other projects, and most notably of those others, Trinity Core. All of these projects are open-source and allow for downloading, sharing and modification. When a group or developer uses one of these projects, however, they might make some changes to the software and then claim that their version is now closed-source. This created a number of issues within the community as any meaningful fixes made by this now closed-source group are not shared back to the server software they used to make the server in the first place (Mangos, CMangos, Trinity Core). These types of server software have come to be known as "cores". The new trend in projects such as Felmyst and Crestfall is to create hybrid cores that no longer fall into the categories of Mangos, CMangos, or Trinity Core. These new cores are of course closed-source. In the modern day emulation community there is a general sense that Mangos, CMangos, and Trinity Core are not high enough quality on their own. Any server that is run using stock open-source cores is looked down upon as being unprofessional and under-developed.
4. Developers (project) vs. developers (project)
It has been fairly common within the community for developers to attack other developers and projects through words and distributed denial of service attacks (DDoS). This is also done by fans of projects and non-developer members, but will be addressed later. Many of these old rivalries still hold back the advanced development of emulation technology today. Disagreements are bound to happen, but there is no central meeting point for developers to discuss their projects, or at the very least to share bug lists. This is because if one server were to have more bugs than another, developers could easily attack that less developed server as being inferior, harming the chances of survival. This happeed regularly on public the public Reddit page "wowservers" before only slightly tighter rules were brought into place. In the past, these fights were over IRC, or public forums. Little has changed in this regard.
5. Missing knowledge (about how the game worked)
People new to WoW emulation and private servers often ask questions such as "Why can't we get _____ working?". When we first started to build the knowledge of server and game emulation we used a method known as "sniffing". Sniffing refers to the act of "packet sniffing" where a person would use software to watch and log the technical details of their own network activity in an effort to capture valuable technical details of how the game sent data, when, where, and why. This also was used to see what the server was sending back in relation to player actions. Unfortunately for us, the quality of these sniffs were not very good back in classic and TBC and even worse, most of them were not shared outside small groups. Much of the core infrastructure we have today came from low quality packet sniffing and estimated guesswork. There is still to this day quite a lot about how the game works that we don't understand in the form of flags and fields within the database. These could greatly increase the ease and access of implementing fixes to cores, but we simply do not understand them. Worse yet, as with the lack of sniffs, there is a large lack of classic data that is truly valuable or available as even web archives slowly push content out of their servers. Many players attempt to rely on their memory for how things worked, but even experienced players will find there is much they don't remember as well as they thought.
6. Core vs. scripts
A lot of people confuse a core and scripts as being the same thing and will say something along the lines of "Server X is no good because they use stock Mangos/CMangos/Trinity Core cores." This is misleading because the core is actually overall less important to the player-game interaction than the scripts are. Scripting makes up a huge portion of what a player will see in regards to how a server operates. Few will ever see the gears turning behind the game. From a developer standpoint, both of these should be equal, but a developer will often prioritise the core and features is has, but a player will largely focus on scripting and especially the quality of that scripting. Here is where there is a large disconnect within the community. Most players will not understand that the core directly influences how diverse and complex scripting can be, but is not the same thing. This is changing quickly within the community as information is shared between developers and players. CMangos does a very good job in this regard as Killerwife is often seen explaining how things work from a developer standpoint.
7. Blizzlike vs. non-Blizzlike
The great debate. What Blizzlike means seems to fall into several categories for different people. Firstly there is the idea that Blizzlike should mean "The game works as Blizzard intended it should from a technical standpoint." Second is the idea that "The the game experience should match way the retail version provided by Blizzard was." These don't always go hand in hand and different projects and developers prioritise these ways of thinking differently. This is almost 100% personal preference. Identifying the correct way something worked is a difficult task, so projects seeking a larger player base will often prioritise making the experience of gameplay more Blizzlike than the actual game functions.
8. Project members (non-developers) vs. project members (non-developers)
This is not a new problem, but it has become much worse than what once existed. members of the Mangos, CMangos, Trinity Core, or individual server projects such as Kronos, Elysium, Crestfall, Felmyst or Warmane communities regularly attack each other and mock each other for fun and "memes" but also out of actual spite that some members hold towards the other groups. The bandwagon mentality is very strong in the current community and should be accounted for in all situations. This group is sometimes responsible for DDoS attacks on servers and project websites.
9. Desire vs. action
A lot of people want to help in terms of developing a server or core, be it directly or as a member of the community by bug hunting and making guides or through other methods. What people want or say they want and what they do is often not the same thing. The general sentiment that is found within the emulation community is "I just want to play the game." Few people actually want to install a core software and seriously work on it or even bug hunt for it. Many become discouraged when a bug is reported, only to be told it isn't a bug or the time it takes to get a reply is too long, let alone a fix. I don't really think there is much that can be done to alleviate this problem, but maybe with people becoming more interested and aware of the way things work we will see people get more involved.
10. Developers vs. players
This was touched on a bit earlier, and doesn't need a lot of explanation, thankfully. Mostly this is a disconnect between what a developer sees as what they should be doing, and what a player sees as what the developer needs to do. This also can take the form of actual verbal fights in rare cases such as when the Elysium admin Shenna snapped on the wowservers Reddit page, reply to criticism with absolute anger and expletive-laden lashing out. This type of conflict isn't too common within the community and usually comes in the form of a misunderstanding.
11. Players vs. players
Much like the non-developer members of projects, the actual players themselves take this into the games and forums very often and is nearly identical to item number 8. I simply wanted to distinguish explicitly between the player and the non-player, non-developer interested person that sometimes hangs around within the community. Just as number 8, this group is sometimes responsible for DDoS attacks on servers and project websites.
12. Paid services vs. free of cost
Finally we arrive at a bit of a newer way of thinking within the emulation community. In the past, most servers would only be successful if they mentioned that they were free and did not provide any paid services. This was also a way to prevent Blizzard from serving a CDL to a server. Now many players are largely becoming tolerant to the idea of paid in-game services. I say tolerant because many also don't seem to like it, but as long as no unfair advantage is given in return for payment, or where play is restricted by a lack of payment, most seem willing to ignore it. This usually takes the form of in-game vanity items such as World of Warcraft Trading Card Game pets, mounts, or other limited promotional items that would be otherwise impossible to get. Other popular paid services include name changes, server transfers, race changes, faction changes and similar functions (despite these usually taking less than 1 minute for a GM to do). Kronos takes this a bit further providing cosmetic and vanity services, as well as character auction where players may trade or sell characters for Kronos-specific currency on the character auction run by the project. Some players dislike this, and others say it prevents scamming that would otherwise happen anyway. Open donations also are considered acceptable by a growing number of players as long as those donations only go to the running costs of a server project. Other projects get targeted as a money racket for debatable practices, such as paying $10 U.S. to skip queues for server entry (Warmane). Many new projects very much see themselves as a business and as professionals. Development is often faster and of a higher quality on these projects, but we again see developers fixing the same bugs that have been fixed hundreds of times now.
Finally I would like to just end this post by quoting Killerwife of CMangos with a post that was made on the LegacyRealms Reddit page where they answered questions regarding WoW-emu development. Seen here with this link: https://www.reddit.com/r/LegacyRealms/comments/6h7axd/would_anyone_want_me_to_answer_random_questions/
"1 - The reason is simply long years of development. Some data used in vanilla/tbc was reverse engineered from cataclysm client. Blizzard had what, 20 devs at least during TBC? And thats full time, voa has currently 5 enthusiasts developing several times a week, and the reality is the same with most servers.
The reason i think is that Open Source provides a floor for server quality essentially, and as time goes on, it progresses further and further, so that anyone who is capable of cherry-picking will have a half decent server on their hands in no time.
There weren't any major turning points, there were on the other hand major setbacks (trinitycore split with mangos, cmangos and mangoszero split). Today its seriously easy to set up a server, MYSQL, C++ and GIT (mangos started with SVN) are more accessible than ever and its super easy for people to start contributing anywhere.
Also we have several projects' efforts culminating their skills, experience and progress, which is once again attributed to time spent on the subject (10 years in TBC)
2 - Maybe big servers seem to have it all figured out, but its a big NO. I am sure that if I were to hop on any server, including mine, I would be able to name a plethora of issues. There is a shitton of flags, fields and whatnot, which to this day we have no idea what they do, mainly because some were discovered by some small team and it was never shared.
A good example is Zeppelins making horn sound when approaching their stop, this exists from TBC and to this day I haven't seen anyone have it, until I noticed it and implemented it on voa. Same goes with music tracks, for example in Black Temple a unique music packet is sent so that it plays during one encounter, and that encounter only.
In terms of biggers thing, for example GameObject casting is a big thing noone has implemented yet, as of what I know. (and believe me, this is a mechanic of global scale) Or I also have not seen several spell attributes named (some of which more than 5000 spells have) which are somewhat generic rules for spells. Or castflags in spell packet, or proper Heartbeat resist, or proper immunities or unapply of Parry talent for shaman, and the list goes on, and on, and on.
The reason why we are not done, is because due to egos, there is a shitton of teams who are not cooperating in this effort. This is one of the reasons why I share information, so that noone in my vicinity is working on the same thing my team is working on.
To illustrate in terms of content, L4G and Wargate still shoot Prince Malchezaar Infernal out of his hand afaik, VoA doesnt have whole T5 released, Gummy afaik is missing questend emotes from my reports (this is extra funny since its 9 year old tech), Warmane has shoddy WOTLK regressions, and thats just the TBC scene. Also noone has ever properly scripted 40 man Naxx because there is close to no available data on it.
I could ramble on, but I hope you saw the points I was trying to make." - Killerwife