Settings

Theme

AzerothCore: Self-Hosted World of Warcraft 3.3.5a Server

github.com

167 points by hugodutka 2 years ago · 75 comments

Reader

jwells89 2 years ago

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.

  • lijok 2 years ago

    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.

  • instagib 2 years ago

    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=

  • w-ll 2 years ago

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

    • mentos 2 years ago

      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.

  • JohnMakin 2 years ago

    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.

  • xandrius 2 years ago

    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.

mikedelago 2 years ago

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.

  • lairv 2 years ago

    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.

    • mikedelago 2 years ago

      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.

  • Rexxar 2 years ago

    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 ?

    • _akhe 2 years ago

      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!

      • whartung 2 years ago

        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.

        • jwells89 2 years ago

          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.

        • mikedelago 2 years ago

          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.

    • mikedelago 2 years ago

      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

  • Sakos 2 years ago

    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?

    • mikedelago 2 years ago

      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

Gyrmrch 2 years ago

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.

  • metadat 2 years ago

    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..

    • zja 2 years ago

      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.

ramesh31 2 years ago

I remember those glory days of Nostalrius before Classic was released so fondly. It was the first time I'd gotten that community feeling in a game again since the early 2000s. The state of multiplayer gaming in general is so toxic and horrid today that I don't bother. But they really had something right in that Vanilla WoW/Everquest/FFXI era. No dungeon finders, no flying mounts, no instanced PVP. Just people figuring things out together and being forced to cooperate.

  • jwells89 2 years ago

    I think that an underrated element in the success of early WoW is how it’s not all that complicated or technical and generally didn’t take itself that seriously (if even if some players did).

    Modern MMOs are almost the exact opposite, especially in raids where insanely complex encounter design has become the norm. That’s great for the handful of people who enjoy that but not so great for the wider playerbase. Old WoW worked because it was playable for an absurdly wide audience — back in TBC I regularly ran into everybody from teenagers to age 70+ retirees and other demographics that sit solidly outside the usual gamer crowd.

    • netbioserror 2 years ago

      The tradeoff has been in time investment. It takes very little time to get the gear and materials needed to start working on Mythic Dragonflight raids, while Heroic and Normal can get started even faster and are actually quite easy by comparison. Meanwhile in Classic, the skill ceiling is low but the time investment is through the roof. My first time in Classic was SoD and just leveling to 25 was damned exhausting. I can't imagine going to 60, and I can't imagine the materials and money I'd need to seriously consider raiding.

      • jwells89 2 years ago

        The thing about Classic is that it doesn’t work well if one is trying to race to cap and raid readiness. Leveling and gearing up is as much “the real game” as endgame raiding is. As such, it works a lot better when played at a relaxed pace with less of a focus on the destination, as the majority of players did back in 2004-2010.

        • BlueTemplar 2 years ago

          Huh, this surprises me, as I tried it around 2010-2012, and I found the first 20 levels or so so dull that I only managed to get two characters up to lvl 20 or so and then dropped it forever.

          I guess my mistake might've been in trying to approach it as a typical RPG, while I should have instead tried to find some players to befriend in the game ??

          • jwells89 2 years ago

            Timeframe makes a big difference. 2010-2012 was the tail end of WotLK through Cataclysm, and by then leveling content had been trivialized (especially after Cata’s release in late 2010).

            Not that it was ever particularly difficult relative to other games, but in the original game and TBC, levelers often found themselves in dicey situations that kept things from getting too dull. In WotLK and Cata, baseline player power saw a steep increase and the world was largely defanged, making it so levelers rarely faced significant danger.

          • ramesh31 2 years ago

            > I guess my mistake might've been in trying to approach it as a typical RPG, while I should have instead tried to find some players to befriend in the game?

            It's moreso that you were forced to find friends back in the day. Vanilla WoW was still pretty similar to that, but the older games like FFXI and Everquest required that you team up in a party to level at all. It led to a completely different experience, where a server was a community of people who you knew and played with for years. There were repuations, drama, politics, player run events, infamous trolls; everything that no longer exists in MMOs that actually made them great and not just multiplayer games with a big lobby.

        • bombcar 2 years ago

          That’s the biggest difference - I played classic and there were entire guilds (including mine) who never even bothered thinking of trying to do an actual raid. We had a few raiders but they were independently contracting with bigger guilds as subs.

          And we were totally fine with it.

sshagent 2 years ago

I've hosted this software server (with and without mods) for friends and family a few times. Its pretty solid and the mods help bring additional fun or to fill in the gaps of low population. If you love WotLK, i'd recommend it.

  • skerit 2 years ago

    It looks very interesting. What's the default content like? Looking at the SQL in the repository, doesn't seem like there's that much quests provided?

    • mikedelago 2 years ago

      The repo represents a "BlizzLike" server in its' entirety. The 640MB of SQL actually does contain all of the quests for WoW 3.3.5a.

      A sibling commenter quipped about which quests are bugged and which aren't, but the reality of it is that the vast majority of quests work perfectly fine, including the quests that are heavily scripted (such as the Battle for the Undercity)

      • time0ut 2 years ago

        That is impressive considering Battle for the Undercity was bugged for months in official WotLK classic.

    • nik736 2 years ago

      I am not sure about AzerothCore, but back then with Antrix and Ascent the Database was always provided separately, while the emulator only offered the schema.

    • sshagent 2 years ago

      Its blizz like. Last time i played was only some of the weird raid quests that we're a little iffy. But you could easily load this up and not notice it wasn't blizzard hosted (except on one about!)

    • sebstefan 2 years ago

      Normally everything is there, the game's quests have been datamined a long time ago

      The question is more what's bugged and what's not

      • mikedelago 2 years ago

        For what it's worth, most of the quests work fine. There's a _few_ that have issues, but the vast majority work just like they did in 2010.

        The largest issue I can think of that actually impacts overall gameplay is the thread system [0]. It definitely works, but currently threat at times isn't given or reduced in the correct amounts. The most common way this manifests is Growl from Hunter pets not properly taking aggression away

        [0] - https://github.com/azerothcore/azerothcore-wotlk/issues/5985

Cloudef 2 years ago

LandSandBoat (ex. topaz, ex. darkstar) is another server-emulator for similar era MMO "Final Fantasy XI" https://github.com/LandSandBoat/server

Seems it still has commits from when it was called darkstar made by me :)

- https://github.com/LandSandBoat/server/commit/0de00388eacf01...

- https://github.com/LandSandBoat/server/commit/47b3a5f9a3845d...

Not sure why the code called the compression zlib, but now looking at this code 10 years from now, it's certainly simply a dictionary based compression.

nerevarthelame 2 years ago

I can't wrap my head the enormity of reverse engineering a WoW (or any MMORPG) server. It just seems like there are so many possible types of inputs to the actual server, with so much of the logic happening in Blizzard's black box, that it wouldn't be possible to come up with a decent server emulator. Impressive work.

  • Zetaphor 2 years ago

    As someone who has reverse engineered an online games protocol (Anyland, admittedly much less complex in scope), I can provide a little insight. I started from a known point that would be easy to replicate and observe, and then just built out from there. Once you've got a foothold you can start to build up an understanding of how the various components interact, and with each new discovery you increase gain new insight into other as yet unmapped systems.

    This is still incredible work on their part that would require an incredibly deep understanding of the game mechanics in order to reproduce their artifacts by observation

  • bombcar 2 years ago

    Surprisingly large amounts were offloaded to clients especially early on - iirc early pvp was a madhouse because “accurate correct line of sight” and other things you should never trust the client on were only done server side in instances.

SuperNinKenDo 2 years ago

Takes me back to playing blizzlike private servers back in the day. I miss those times, as much as I felt that was time I could have spent better. I didn't have the dread of wasted time then, I could simply be present in a way that feels closed off to me now.

  • jwells89 2 years ago

    I relate to this. So many hours burned on WoW in my teens and twenties…

    After hitting 25 or so it progressively more difficult to play with a clean conscience. Despite having a good job and secure finances there was an ever-present voice in the back of my mind prodding me to do something productive any time I played for more than a few minutes.

    Recently I’ve been able to spend time playing again guilt-free, which I’ve done by accepting that there’s only so much productivity I can squeeze out in a day without risking burnout. When I sit down to play it’s after I’ve hit my “quota” of productive activities, and so I don’t get the impulse as much.

    I still don’t play nearly as much as I did back in the day, so I’m not raiding or anything like that, but it’s enough time to mess around with alts and such.

_chimmy_chonga_ 2 years ago

I've played around with ACore a good bit, mostly using their docker container builds. Which are amazing and I wish a lot of the other emulators would follow suite.

One issue I did run into was with calling the WoW admin apis, which are soap. The documentation seems to suggest they just "work" after changing your server's configuration but I, for all my effort, could never get it too while using the container version

wkat4242 2 years ago

Nice! So this is WotLK? I'll try it out. I left WoW around Cata/Pandaria. Especially the panda thing I found stupid. It was so childish Kung Fu Panda style.

Would be nice to go back and visit some of the forbidden areas like gamemaster island and the hidden area under ironforge

  • bombcar 2 years ago

    I didn’t mind the pandas as much as the continued … wotlking of the world.

    It was all better when there wasn’t as much of an overarching story that they really felt they had to force you into.

    And dailies. Fuck dailies. I already have a job.

    • polski-g 2 years ago

      We call them wizard chores.

      • bombcar 2 years ago

        I understand every single step in the progression to them, and I still hate it. Literally drove me away from the game, barely ever to return.

dylanzhangdev 2 years ago

I have downloaded and played with this on my computer many times and am very grateful to the great open source community for such a great product. There will be a period of time every year or two that I really want to play, and then I will get bored after playing for a while (the most likely reason is the lack of interaction with friends in the single-player mode). This is my reason. They support writing some scripts in Lua, which is interesting.

Valkryst 2 years ago

I'm glad to see that the community is still going strong. I spent a lot of time working on private servers in the past, primarily on TrinityCore with a few modifications to add support for Lua and misc. features.

Hopefully this project continues and adds support/tools for easier content creation and better documentation/customization than we've seen in the past.

prerok 2 years ago

Sorry if this is a stupid question but I cannot really understand how it works. I get that this is a server and you can connect to it with a client... but what client can connect to it and speaks the same protocol?

You still need to have the WoW client installed, right?

mise_en_place 2 years ago

I wonder if you can use the WoTLK Classic client to connect to this. IIRC there was a project to proxy WoW Classic client connections to server emulators like these.

  • jwells89 2 years ago

    It might prove more challenging than one might expect, because the Classic clients are actually modern WoW clients patched to behave like the originals. Blizzard apparently evaluated using the original clients, but found that differences in server architecture and lack of security patches made that impractical.

sebstefan 2 years ago

How does it compare to CMangos?

https://github.com/cmangos/mangos-wotlk

  • mikedelago 2 years ago

    I'm not too familiar with CMaNGOS, but my understanding is that the original MaNGOS is the ancestor of AzerothCore (as well as most other C++ WoW emulators).

    The primary differences that come to mind between CMaNGOS and AC are AC's larger and more active community, AC's module system, and CMaNGOS has a relatively good bot (as in, non-human players) system [0].

    As an aside, AC does have a playerbots module [1], but my understanding is that it doesn't have the same polish as CMaNGOS's. It's also distributed as a patch to the upstream AC repo instead of a standard AC module, so that can be a pain for some as well.

    [0] - https://github.com/celguar/mangosbot-bots [1] - https://github.com/liyunfan1223/mod-playerbots

forrestthewoods 2 years ago

I've never fully understood how custom servers work. These efforts impress the heck out of me. It seems like soooo much logic exists only on the server side, right?

Where is all the logic for enemy spawning, their AI, complex raid encounters, etc? I poked around the repo a bit but couldn't find it. Where's all the gameplay code and logic?

w1nk 2 years ago

These projects are awesome to see, there are similar efforts for everquest. Is anyone aware of anyone trying to create different clients/renderers for these MMOs? A VR client for any of these worlds would instantly be amazing.

vsnf 2 years ago

> MaNGOS

I feel like MaNGOS never really got good enough, and instead all the solutions in use branched off it. At least, MaNGOS certainly had a reputation for being janky and inaccurate 15 years ago

doctorpangloss 2 years ago

The light path is authoring AzerothCore.

The dark path is fundraising from that audience of male 30-45 year olds with massive disposable incomes to make your own game.

spxneo 2 years ago

is there something of AzerothCore calibre but not C based languages? something like Python or Javascript that can perform like it.

  • TylerE 2 years ago

    That's literally impossible as they (especially python) is a fundamentally much less performant language. It's like expecting a clapped out rental car to beat an F1 car in a race.

    This is a multithreaded server supporting dozens to hundreds of players simultaneously. All the game logic runs server side (else the players cheat).

    • spxneo 2 years ago

      I see theres no way to avoid it then.

      is there some sort of performance benchmark showing number of online players per server compared to other similar solutions (paid and unpaid)

    • whartung 2 years ago

      But why is this so performance bound, particularly for just a couple of users?

      I mean, sure, if you're hosting 1000 of your closest friends, I can see the potential issues. But for you, and a small party, it shouldn't be that awful.

      Large groups, close together, are the largest load factor on a server like this because of the explosion of interrelated event broadcasting. "Oops, Lulzmage just cast Blizzard on a pack of 10 toons in the midst of a two 40 man raids attacking Orgrimmar." WoW has never handled them well, and it's fundamentally why they rarely do "world events" anymore, even with the modern sharding tech.

      But a hundred folks across Kalimdor killing boars one on one, eh, not that big a deal.

      • jwells89 2 years ago

        All this is true, but naturally the projects that can scale are going to be getting the majority of dev attention since those can be used for large scale private server projects like Nostralius. There’s not nearly as strong of a “market” for servers intended for small friend groups.

      • TylerE 2 years ago

        Even on a tiny instance, that efficiency could be the difference between needing a $5/month server and a $50/month server. (or being able to run it on something like a Rasp Pi vs a server-grade computer)

Brainspackle 2 years ago

so who wants to join the wow server I setup this weekend? ;)

gotbeans 2 years ago

Dmca in 3... 2...

_akhe 2 years ago

NFT people: Now's your chance to prove your concepts.

SpaceManNabs 2 years ago

I thought this was illegal? I tried using a private server Summer 2012 and it was shutdown by the end of the summer.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection