In Case You Missed It This Is Still Actual In 2022

From Fun's Silo
Jump to: navigation, search

Why are there still so many bugs in WoW private servers, although they have been around for so many years?



I’ve been fascinated by WoW emulation since I was 14. I remember that the first time I joined one of these “special realms”, there were a lot of bugs, but you could play for free at least. You know, I didn’t have a red cent at that time, so I had no alternative.



At 15 I began wondering how private servers actually worked and could exist, especially from a technical perspective. Did someone steal the code from Blizzard maybe? I had no idea - I was so young and inexperienced at that time! Despite that, I started messing around and, with the help of an old friend of mine (Fabio), I finally managed to install a WoW server on my own PC.



Back then I couldn’t even imagine the amount of satisfaction I would have got and how many things I would have learned thanks to this magical world.



It may sound weird, but this world still fascinates me now, as an adult, to the point that I dedicated an entire Master’s Degree thesis in Computer Science to this topic.



But still: I hate most of the private servers and I really want to explain why.



In order to make you understand my point of view, I need to dwell on a small technical parenthesis about WoW working processes, which I will try to put in simple words.



At the software level, there are two programs that could be considered as the main actors of this game:



the CLIENT APPLICATION - which is the actual "World of Warcraft" program installed by every player on their computer in order to access the game;



the SERVER APPLICATION - which is the program that runs on the server machines.



The process is very simple: all Clients (players) connect to a Server in order to interact with each other. The client knows the server address, as it is stored in the famous "realmlist.wtf" file (that's why you have to modify this file in order to switch to another server).



When playing on private servers, the principle is exactly the same. The difference lies in the software you use.



CLIENT. Everyone has access to the original World of Warcraft client. You can easily get it by buying it or downloading it online. This program is exactly the one that you would use to play on the official server. Obviously different private servers have different client versions, but they always refer to the original client. You just need to make a small change to the "realmlist.wtf" file, replacing the address of the retail server address with the one of a private server. That's it.



SERVER. This is completely different. Nobody outside Blizzard has access to the original software that runs the official World of Warcraft servers. So these applications are completely different from the original one.



Every software that runs private servers has been created through the "reverse engineering" technique, which, in simple words, means "I try to write a program that imitates the behaviour of another program, without looking at the original code".



The question now is: who implemented this software and when did it happen?



The entire copyrighted material (images, sounds, 3D models, logos, etc ...) is located inside the client application. The server application contains only numbers and texts. Therefore, it is absolutely legal if you use it for educational purposes.



Who creates the software applications that run WoW's private servers (commonly called "emulators")? And how did they do it?



You don't need to be an expert to understand that writing a server application for an MMORPG with such a big scope like World of Warcraft is certainly not child's play.



Blizzard is a big company with thousands of employees. Writing a program that "imitates" the operation of their server application is certainly not trivial or feasible for a single individual (or a small group of programmers).



And it's not just a matter of complexity. Let's think of very trivial but repetitive tasks, like adding every single NPC into the world, including every single item of their loot with its own percentage of chance, etc.. . A terrific job basically. Not to mention all the very complex tasks that require hours of study and testing, such as spell mechanics, boss mechanics, etc.



In short .... not even the best programmer in the world could be able to do all this work on her/his own.



Yet there are private servers and the software that makes them run. And some private servers are now able to offer a game quality that is not far from the original one (here I refer mainly to the old expansions).



How is that possible?



If you have an apple and I have an apple and we exchange these apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. (George Bernard Shaw)



Just to make it simple: an open source program is a program whose code is public.



In the context of private servers, the open source plays a fundamental role.



Some veteran gamers may remember that once the game quality on private servers was really bad. Almost nothing worked. For example, if you were a rogue in stealth you could be targeted by anyone who wrote /target Yourname. Guess which class I chose for my first character ... GRN ONLINE



The real revolution was MaNGOS, an open source project created in 2005, whose purpose was to provide a server application for World of Warcraft. The great news of MaNGOS, as well as its strength, was the fact that as an open source application, its code was completely public, and any user from all over the world could study it and offer their own contribution (both in terms of adding or fixing game mechanics, but also in terms of reporting bugs).



Only in this way, thanks to the contribution of many volunteers of different nationalities, it was possible to develop a server application capable of emulating World of Warcraft with a higher game quality.



In 2009 another important project was born TrinityCore, based on MaNGOS.



To date, the overwhelming majority of private servers run on MaNGOS/TrinityCore-based applications.



Over the years, different projects were born, and they were based on the MaNGOS/TrinityCore code, which mainly varies according to the supported WoW version. For example AzerothCore for 3.3.5, OregonCore for 2.4.3, SkyFire for 5.4.8, CMaNGOS for Classic/TBC/WOTLK, and many others ... All of them based on MaNGOS and/or TrinityCore.



So the private servers have reached such quality only thanks to the many contributors who have implemented more and more game features over the years (from 2005 to today).



Today any experienced PC user can easily install a WoW server, without even being a programmer.



Suppose that Alice and Bob have a private server each, and let's assume they are on the same version of the game. Both Alice and Bob want to release a new content to their players, which has been closed so far because the bosses A,B, C andD are quite buggy.



Alice is a very good developer and can fix both bosses A andB



Bob is still a beginner and only fixes the boss C



Alice and Bob work together and exchange their fixes. As a result, both of their servers will have perfectly fixed bosses A,B and C. In addition, Alice and Bob will join forces in order to work on D as well.



As a result, the players on both servers are very happy because they play a completely fixed content.



Alice and Bob are rivals and so they wage war against each other. In Alice's server, only bosses A andB work. While in Bob's server only C works. Some players move from Bob's server to Alice's one. Bob's server closes after a while. Some of Alice's server players stop playing because they get tired of always doing only A andB because C andD don't work.



As a result, the players on both servers are less happy than in the previous scenario. Alice made more money through player donations than Bob did.



Actually, the MaNGOS/TrinityCore code (and their derivated projects) is released under the GNU GPL license.



In simple words, this license says the following: use the code to do whatever you want, without paying anything, as long as any modification to the original code is also released under the same license. Basically, the license of these projects requires those who use them to publish any changes to the public.



Of course, most private servers use this license as toilet paper. Otherwise, there should be no private server that is "better fixed" than others.



Here is a list of lies that the administrators of many WoW private servers keep telling to their players:



Fake news. It doesn't matter how many changes "you" made. However, you started with a MaNGOS-based project.



Maybe you've made some improvements, but most of the code is still MaNGOS/TrinityCore's.



Maybe you are really good and you have rewritten most of the code over the years. Still, you started from MaNGOS. Without it, on day 1 you wouldn't even have got the login feature working.



In the vast majority of cases, none of them has really fixed anything. They have just downloaded the fixes coming from the open-source community and applied them to their core. Still, they take all credits.



Some private servers really fix stuff on their own. They often have dedicated development teams that are paid with the money coming from players' donations.



Most of them do not share these fixes with the development community.



Well, the community that gave (for free) the software you are using to run your server is asking you to share them, but you still keep it private. So I hate you anyway.



Alright champ. Try to think about this: if ALL the developers did like you, neither you nor your private server would exist.



Why? Simply because neither MaNGOS (nor TrinityCore, AzerothCore, etc ...) would exist. These projects exist thanks to developers who, unlike you, shared their code.



If all devs kept their code private, we would have no decent WoW emulator and you just couldn't open your private server, because there wouldn't be any software available.



There is nothing to "steal". They can't "steal" that code because it doesn't "belong" to you. No, not even if you really wrote it.



The open source philosophy is clear: you can use that code for free, provided that any modification of it MUST be made public.



Oh don't you agree? Alright. Then don't use any open source code and write your own WoW emulator from scratch.



I totally understand that this whole story about ethics and licenses matters very little to the average World of Warcraft player. Players just want to play on a stable and well-fixed server, they don't care much whether this server collaborates with open source or not.



But... try for a moment to see it from another perspective.



Developers of the open source projects (MaNGOS, TrinityCore, AzerothCore, etc ...) basically don't care much about what private servers do. Of course, as a developer it pisses you off to see some random server administrator taking credits for your work, but in the end it doesn't change your life. Many open source developers just do it for fun and educational purposes.



Actually, if ALL private servers collaborated with open source, the players’ lives would change completely! You know, in that case, every server would provide a much better game experience for any expansion. The example of Alice and Bob mentioned before can be applied to this case as well.



However, the reality is just that: there are many private servers around the world, each of them always works on the same things, racing to do them sooner and better. If they collaborated with each other instead, they would avoid doing unnecessary work and would have more time and workforce. So they would surely be able to achieve much more.



Note: the quality (and competition between) private servers should not be (only) about of fixing, but also about other factors such as its administrators’ skills in managing it. The quality of the community also plays a fundamental role, just as it happens in Blizzard servers (which are all equal from a technical perspective).



If a private server closes, and its developers have not shared their work, that work will be lost forever.



The most interesting thing is that all the MaNGOS-based projects are completely public, so it is possible to accurately verify who contributed to them.



As a result, all the contributors list of these projects are absolutely public and ANYONE can verify who actually fixed what.



For example:



Official list of MaNGOS contributors: https://github.com/cmangos/mangos-wotlk/blob/master/AUTHORS.md



Official list of TrinityCore contributors https://github.com/TrinityCore/TrinityCore/blob/3.3.5/AUTHORS



Official list of AzerothCore contributors https://github.com/AzerothCore/azerothcore-wotlk/graphs/contributors



PS: you can find the author of this article in all these lists



Any open source project (generally hosted on GitHub) has the list of commits realised by the different developers. For each commit, both the author and the date are there.



It is very easy to verify this information, just open the official repository of any emulator. Google for example "TrinityCore github" or "AzerothCore github" and just have a look.



You will see who-does-really-what. You will see all the lines of code, their authors, other devs’ comments, etc. You will see everything. No more lies!



My advice is you play/support private servers that collaborate with open source, in spite of the type of expansion and emulator they use.



Or, at least, avoid those servers that peddle other people's work on their own, removing the credits from the original authors.



If you are interested, I run the ChromieCraft server, which is fully open-source, non-profit and no-p2w.



https://www.gnu.org/software/software.en.html



https://www.fsf.org/about/what-is-free-software



🇮🇹 ITALIAN



🇫🇷 FRENCH



🇪🇸 SPANISH



🇵🇹 PORTUGUESE



🇷🇺 RUSSIAN



🇭🇺 HUNGARIAN



🇩🇪 GERMAN



🇲🇸 MALAY



🇵🇱 POLISH



🇷🇴 ROMANIAN



🇨🇳 CHINESE



- In this article, I criticise MOST of the private servers, not ALL private servers. Of course, there have been people who did contribute to the open-source and we have what we have today thanks to that.



- This article is not about what is LEGAL or NOT LEGAL. This video is about the open-source PHILOSOPHY behind WoW emulator-projects and how MOST of the people (not ALL people) just leeched them.



- This article does NOT represent an accurate history of WoW emulation. Nor it explains in detail the technical differences between different licenses (e.g. GPL vs AGPL), how repacks break them, how actual private servers MIGHT TECHNICALLY NOT BREAK THEM (even going against the open-source philosophy) etc... I've tried to keep it simple and intentionally avoided to get into too many technical details. Feel free to read about the GNU GPL licenses in all their forms.



- This article is NOT against private servers who decided to release their contents at a later moment. That's still a way of contributing, even if some people might not agree with it. This article is against private servers that NEVER contributed back.



- This article is entirely based on MY personal opinion. Even though I'm sure many other developers will agree with it, there might be people who don't. And I want to underline that I'm and I've always been grateful to all people who actually contributed in some ways to the WoW open-source emulation projects. If you are a contributor and somehow felt attacked by what I said, please don't be. It is absolutely not my intention to attack other contributors. Quite the contrary.



- I used language that suggested servers not disclosing source to TC and MaNGOS breached their licenses, which is not (always) technically true (even though it goes against the open-source philosophy).



- I'm aware of GPL not being exactly like AGPL and I'm aware of the ASP loophole issue.



- I know that MaNGOS comes from WoWDaemon and I know that "MaNGOS" wasn't the only piece, but to be fair, I should mention other projects of the MaNGOS ecosystem such as ScritpDev2, UDB, et cetera.



- I'm also aware that MaNGOS wasn't the only WoW emulator back in the days (sorry Antrix/Ascent/Arcemu guys, it is absolutely not my intention to belittle your work!).



HOWEVER... I just didn't want to make my story more technical than it already is, in order to make random WoW players understand my point.



This is NOT supposed to be an accurate story of WoW emulation. This is just supposed to make non-technical people aware of what is going on behind private servers, as nowadays most of them are running on MaNGOS-based cores.



This article is available on GitHub and everyone can contribute to it. I'm not a native English speaker so I guess some parts could be expressed in a better way. Feel free to send your feedback and improve it by submitting a PR.