AzerothCore: Self-Hosted World of Warcraft 3.3.5a Server

2024-04-1011:3916775github.com

Complete Open Source and Modular solution for MMO. Contribute to azerothcore/azerothcore-wotlk development by creating an account on GitHub.

Contributor Covenant CodeFactor StackOverflow Discord

nopch-build core-modules-build windows-build macos-build docker-build

AzerothCore is an open-source game server application and framework designed for hosting massively multiplayer online role-playing games (MMORPGs). It is based on the popular MMORPG World of Warcraft (WoW) and seeks to recreate the gameplay experience of the original game from patch 3.3.5a.

The original code is based on MaNGOS, TrinityCore, and SunwellCore and has since then had extensive development to improve stability, in-game mechanics, and modularity to the game. AC has also grown into a community-driven project with a significant number of contributors and developers. It is written in C++ and provides a solid foundation for creating private servers that mimic the mechanics and behavior of the official WoW servers.

Our main goal is to create a playable game server, offering a fully working in-game experience.

Here are the main points we focus on:

  • Stability

    • We make sure all changes pass the CIs before being merged into the master branch.
  • Blizzlike content

    • We strive to make all in-game content to be blizzlike. Therefore we have a high standard for fixes being made.
  • Customization

    • It is easy to customize your experience using modules.
  • Community driven

    • AzerothCore has an active community of developers, contributors, and users who collaborate, share knowledge, and provide support through forums, Discord channels, and other communication platforms.

AzerothCore is designed to be highly modular, allowing developers to extend and customize the game to suit their preferences or create unique gameplay experiences. This flexibility enables the addition of custom features, content, and modifications.

We have a lot of modules already made by the community, many of which can be found in the Module Catalogue.

Detailed installation instructions are available here.

AzerothCore can also serve as a learning resource for aspiring developers who want to understand how WoW servers work, how MMORPGs are structured, how game server emulators are created, or to improve their C++ and SQL knowledge.

If you want to contribute to the project, you will find a lot of resources that will guide you in our wiki.

We also recommend you read our Contributor Covenant Code of Conduct.

Feel free to join our Discord server.

Click on the "⭐ Star" button to help us gain more visibility on Github!

The project was born in 2016 based on SunwellCore. Unfortunately, SunwellCore was published without any git history, so on git there are no credits for all the contributors before 2016.

You can check the authors file for more details.

  • The new AzerothCore source components are released under the GNU AGPL v3
  • The old sources based on MaNGOS/TrinityCore are released under the GNU GPL v2

It's important to note that AzerothCore is not an official Blizzard Entertainment product, and it is not affiliated with or endorsed by World of Warcraft or Blizzard Entertainment. AzerothCore does not in any case sponsor nor support illegal public servers. If you use this project to run an illegal public server and not for testing and learning it is your own personal choice.

JetBrains is providing free open-source licenses to the AzerothCore developers.

JetBrains


Read the original article

Comments

  • By jwells89 2024-04-1218:445 reply

    While the most common uses of cores like this is to spin up “blizzlike” servers or “funservers” that use the original content but with boosted XP, loot, etc multipliers, to me what makes them interesting is when combined with client modding, the possibility of custom content — new zones, quests, loot, races, classes, and with some ingenuity even new systems.

    They’re good foundations to build on. One would be hard-pressed to find an MMO client+server that’s as polished and complete.

    The legal risks involved make it too risky for anybody within Blizzard’s reach to do anything but private tinkering with, unfortunately. It makes me wish for legislation that makes non-commercial game modding and reverse engineering strictly legal.

    • By lijok 2024-04-130:25

      The private game server scene is filled with the most motivated, ingenuous, time rich people. The best decision I had made when I was still deep in it was to focus dev efforts on API’s for accessing live server data (inventories, spawns, notifications, etc). The devs that come out of the brush with amazing ideas that they’re able to rally people around and execute on is a sight to behold.

    • By instagib 2024-04-132:27

      Asheron’s call, an older MMORPG, has quite a few private servers and the original company Turbine is okay with it and still offers the main client to be downloaded from their website.

      A few have made very custom content with new areas, higher levels, etc on top of 15-20 years of content updates from the original game.

      Supposedly 3,000 users online right now but some servers allow botting. https://treestats.net/player_counts/?servers=emulator&range=

    • By w-ll 2024-04-1221:171 reply

      I learned so much C# eary modding https://github.com/runuo/runuo an open Ultima Online server.

      • By mentos 2024-04-1223:04

        I’m pretty sure the restart server function in RunUO was from my contribution in highscool 2001 :)

        I remember it wasn’t implemented and I asked if just starting a new process and stopping the old would work? Someone said try and see, it did and I shared the code and it made it into the next build.

        Over 20 years later I owe a career in game development to RunUO.

    • By JohnMakin 2024-04-1220:12

      There are very vibrant, massive population private servers for-profit out there that have been around forever and seem to be doing just fine - see the Warmane project.

    • By xandrius 2024-04-1219:29

      I agree but I do think copyright should apply here, so it should be open but in 20+ years, since the company is still active and making quite a bit of money off it.

  • By mikedelago 2024-04-1013:303 reply

    Hey, I'm on the contributor team for AzerothCore, mainly focusing on maintaining the docker images and linux build CI! Cool to see it here.

    AzerothCore's "killer feature" is that it has a module system, where the game server can use C++ code to hook onto events. It's pretty slick and works quite nicely.

    One of the things I've been interested in working on is setting up dynamic linking for the modules so it's easier to just download the compiled module and run it with the server instead of compiling the server with the module. The biggest problem I've run into with my implementation for that is the .so for each module ends up being on the scale of hundreds of megabytes, which seems incorrect.

    • By lairv 2024-04-1221:571 reply

      I can't wrap my head on own hard it is to make such a project, what's your view from the inside, is it a massive thing ? In term of complexity, lines of codes, people involved, etc.

      • By mikedelago 2024-04-1318:291 reply

        It's definitely not small. From a lines of code perspective, there's ~525K lines of c++, ~175K of C, and ~160K of headers for either language. There's ~4 million lines of SQL, since the entire game's database (items, quests, etc) are stored in a MySQL database.

        There's a lot of people involved, and a lot of various PR's and issues in github. As with most projects, this is where it's a situation that the game is so large and there are only so many people maintaining the project and so many people testing or confirming issues.

        The project is a fork of a fork of a fork, for the most part. Much of the code comes from either SunwellCore (parent), or more likely TrinityCore (grand-parent), and over the past few years since the SC fork has been maintenance and bugfixes. I don't think any of the "current" contributors wrote the code that manages the actual game world, for example. My biggest complaint, I would say, is that at times there's a lot of "well this is how we've done it in the past" as opposition to a new feature or pull request

        I think I would consider AzerothCore to be as complex as a medium-large monolithic service, I'd say. That's basically what it is, since the client is "off-the-shelf". There's a lot going on in the source code, but it's generally not difficult to figure out where an issue is.

        I hope that helped answer your question.

        • By lairv 2024-04-140:08

          Yes very insightful and impressive!

    • By Rexxar 2024-04-1222:022 reply

      Do you know if it would be possible to create a new client and create something completely different than wow or is it fundamentally tied to wow gameplay ?

      • By _akhe 2024-04-1222:591 reply

        Why so you can change the timeline and seize the crown from Thrall when he invited you to join him in Durotar and you declined? Because you have my axe if you do - the Horde should have stuck to its wild roots!

        • By whartung 2024-04-130:052 reply

          Don’t need a new client to put Thrall on the throne in Stormwind.

          If they can do events like Battle of Undercity, or that event where you bring in Onyxias head, I bet you could script a cool assault on Stormwind and put Thrall on the throne.

          Hang some Horde banners in the walls.

          What they probably can’t do is the whole phasing thing and keep him there.

          March on Stormwind would be epic.

          • By jwells89 2024-04-133:07

            A Horde assault phase that sticks around is doable if you add client modding into the mix.

            The possibilities are really endless. It’s totally impractical but the thing I’d like to do is a “unified” Azeroth that treats all the continents as a concurrent whole, much as Kalimdor and Eastern Kingdoms were with the original game, instead of most continents being siloed expansion experiences.

          • By mikedelago 2024-04-1318:32

            Yeah, this is essentially it.

            A whole bunch of state such as this is stored in the MySQL database rather than the client/client files, so it's definitely theoretically possible to spawn an NPC of Thrall on the throne in stormwind.

      • By mikedelago 2024-04-1318:31

        nice name

        yeah, it's possible to create a new client. It'd be a lot of work, though.

        Some people make their own patches for the standard client if they have something they want to integrate. I don't really know much about that, though

    • By Sakos 2024-04-1015:131 reply

      Man, this project looks great. https://www.azerothcore.org/catalogue.html#/details/64692616... This especially sounds amazing and I know what I'll be doing this weekend.

      How difficult is it to start contributing to AC?

      • By mikedelago 2024-04-1021:28

        It can depend - some things, like content related issues may require triaging which can take some time to do.

        Testing PR's and confirming that the behavior is correct is actually one of the best things people can do to help - that's something we're always short on.

        For most of the code, as long as you can justify the change, it makes sense, and it's in line with the style standard, it'll probably not be an issue

  • By Gyrmrch 2024-04-1223:101 reply

    Wow, the nostalgia I just got... Idk how it is now, but back in the day, you could easily get 15 players by hosting one these repacks and posting on reddit and ac-web. Ran a shitty level 60 twink server one summer of one these repacks, made a donation item similar to hearthstone packs, where you would get 5 random items. I surprisingly got a few donations... I had to shut it down due to school starting, but man, that was such a fun summer.

    Its an incredibly fun learning experience to be honest. This really sparked my interest in programming. The freedom to create I felt! To think all i wanted to do was recreate swifty PVP videos... Private WoW Servers Hold an incredibly special place in my heart.

    • By metadat 2024-04-131:041 reply

      What is meant by "twink server"?

      I looked up the definition of twink..

      *> (among gay men) a gay or bisexual young man with a slim build and youthful appearance.

      It's not clear to me how this translates to wow speak..

      • By zja 2024-04-131:09

        It’s jargon in World of Warcraft for characters that level up to a certain point below the max level, and then acquire all the best gear available at that level. Typically twinks are a lot more powerful than other characters at the same level.

HackerNews