Building a WoW (World of Warcraft) Server in Elixir
pikdum.dev
pikdum.dev
The fun part is, I was 14 years old and had zero programming knowledge at the time—just a feeling that this process could be automated and access to Google. The bot was reading the game state by capturing specific parts of the screen and comparing MD5 checksums of where the buttons were supposed to appear. I used xdotool for mouse and keyboard input, along with in-game settings like Lua command execution inside the game console to target specific NPCs or mailboxes and click to move. It probably pushed me toward pursuing a career in this industry.
This is not an area I'm familiar with and I always assumed this kind of work would involve concepts that are foreign to me, but upon reading it seems it was not that magical.
Looking at the game when others play it makes me think that I would be so happy if I could experience it with a group of friends.
Maybe if I retire and by some miracle know enough people, we can get together and form an awesome guild, and explore the world for the first time?
The problem I see with games in general is that so many of them are now designed to dominate your time the way wow does. I somewhat recently used to play Warzone once a week (or once every other week) with a group of friends, and that’s a game that you should be able to pick up, play for a couple of hours, and come back whenever you want and play for a few more hours. But it’s not. New content comes out all the time, and a whole new game comes out once a year. If you don’t stay on top of it, you just don’t get the proper experience of the game. So once my casual level of interest drops below the level of time the game demands from you, I just give up playing it.
This trend of a constant demand for grinding and micro transactions has creeped into way too many products imo, and the conclusion I’ve come to is that most of these games are just not made for people like me any more.
But the experience of Classic WoW now is nothing like its early months (now 20 years ago!). It's a 'solved' game now, everything is known, documented, data mined, and optimized.
Players rush to max level using optimized routes to then join guilds of like-minded players to speed-run the raids. Little tolerance for 'noobs'. The sense of adventure and exploration is long-gone.
Sure, there are always a few days to weeks while the min/maxers are figuring things out, but that's generally not enough time for someone that's not a streamer to experience the content before a "solution" is provided.
I had the same experience with CoD Warzone. It took off during Covid and I could play with a bunch of mates and people could run different loadouts and strategies. By the time Warzone 2 came out, everything is, like you said, optimized and little room for error.
I honestly think streamers have ruined games with progression. There's too much drive to be at the top and too little focus on just enjoying the game.
I’m the exact opposite from you, always rushing to the end game content and competing on the leaderboards. I dislike nothing more than updates that dismiss serious end game players because the noobs (99% of the player base in all honesty) dictate the difficulty and rewards of the content.
Destiny is like this now. There is a cottage industry of Destiny scientists who make YouTube videos that fill in the knowledge gap intentionally created by Bungie's vague descriptions of class abilities and traits. For instance, Bungie might write a description for a class trait like "while you have an elemental buff, your class ability regenerates more quickly". Then the scientists conduct experiments in the game to answer questions like how quickly? Is there a cap on the maximum amount of ability regen? how long does the buff last? does it stack with other class regen buffs, etc. Then the build theory crafting happens based on these findings and the community settles on a few meta builds.
Of course, Bungie will nerf or buff things at will. And so with every new patch, comes a new round of experiments, theorycrafting, and meta builds. The community has little tolerance for those not using meta builds and you'll sometimes be kicked out of LFG if your gear is non meta. Have a build that is fun to play but slightly less efficient at damage output? Too bad, you're kicked.
And because of the super vague descriptions, you can't just reason about builds with only in game knowledge. It requires you to spend a bunch of time on YouTube, reddit, discord, etc and to keep up to date with patches. It's like a part time job.
For example, I knew people who played WoW who joined a guild and then had to keep their weekend evenings open so they could raid with the guild. Nowadays, these games come with matchmaking so you can find a group of players to complete a dungeon with (the only exception is the hardest content, where you are unlikely to find 7 other random players who are prepared enough to play them). It turns out playing an MMO is a lot more manageable now.
WoW has better core gameplay (more fun to click buttons and kill simple mobs), more responsive, much more active open world, better quality of life. Final Fantasy has better boss fights, much more immersive and coherent storyline, no need for alts to try different classes.
But I feel like I'd need some real world friends to be interested, and it's been a significant chunk of time.
But it really is addictive once you give in to it. I was playing 10+ hours per day, every day, for months.
As a young teen it truly felt like magic, but now it just feels like manipulating a database with extra steps.
Well, realistically that is most of software development at this point. Sometimes I get depressed about that, but other times it fades away when an app brings delight to its users or solves a problem - it's a bit more humanizing and inspiring
No more gold farming for me, thanks.
User "marenkay" author of "MaNGOS" saying that they regretted open-sourcing it, although not because of any actions by Activision-Blizzard.
I was interested in contributing to one of these projects but when I realized they were all just keeping everything to themselves, I gave up on that idea.
Once you target >million concurrent every duplicated byte, syscall, matters! Thankfully Blizz doesn't have such concerns/CCU post-Activison..!
I loved Habbo Hotel as a teen, and the fact there are still folk developing a "retro hotels", self hosted, really sparks a little bit of joy.
I just don't have the fanbase, time nor power of influence to get folk to join but I check around now and then.
Recently the turtle wow (a private server) team announced that they are working on a completely new Unreal Engine 5 client which sounds quit exiting. https://turtle-wow.org/turtle-wow-2
You could decompile the game client if you wanted to, but that's probably more trouble than it's worth in most cases. Most of the business logic is in the server anyway, the client is just to initiate actions and render the world state.
(And similarly servers did not have the code, just assets + wire format between client and server, and they reversed engineered things from there, pretty successfully.)
I think Blizzard hasn't bothered going against the open source servers because even if there's just a 1% risk that a court would rule agains them, it would open the flood gates to much more professional teams to come in and do it because "it's legal".
They do go against server operators sometimes, though they don't seem very determined there, and some servers have resisted successfully (hosting in Russia and identity hiding I think). I think they mostly use "you're using copyrighted assets" as a line of attack, precisely to avoid the risk that losing that would put them at risk. But IANAL.
Also note that in both cases the projects need the assets from a real client and don't ship with them, expecting you to provide them.
AFAIK the graphical assets are all in the client. The status data is for the most part available through (web)api and even more is available through client side interfaces.
Character and bank inventory including battle pets, achievements including dates, character stats, transformation unlocks such as different druid forms. Basically everything that would be required to 100% restore all the characters in a persons account exactly as they were on the commercial servers. A Full Backup of everything in ones account in a format the server can import so to speak.
The other is here: https://github.com/wowserhq/wowser, runs in the browser with WebGL, as you can see, it hasn't seen meaningful progress in almost a decade, but it is already impressive.
EDIT: Found the first one, PseuWoW: https://github.com/shlainn/pseuwow
More leads here: https://community.trinitycore.org/topic/12710-we-need-to-cre...