New Videos

How World of Warcraft works!



It’s DevOps bringing WoW to us so we can rename NPCs in our name so we can feel good about ourselves.

Discord: https://discord.gg/yTYH6rNePs
Upload Academy Community: https://community.upload.academy/

Miro board: https://miro.com/app/board/uXjVNe_oRCQ=/?share_link_id=869478264198
World of Solocraft: https://github.com/mrcrilly/WorldOfSolocraft

Related Articles

47 Comments

  1. So we have an Auth Server separately, to which we send our username/password.
    In case of success, the Auth server returns a list of World Servers.
    But how does the World Server know, what account connects? (I guess auth server also returns an auth token, that is later checked by the world server?)

    This means authentication happens 2 times (on the world server, checking auth token + on the auth server, checking username/pass), right?
    Then, back to the Auth Server, why do we have it in the first place if World Servers do authentication anyways?

  2. Haven't touched AzerothCore or TrinityCore in a bit, but I remember how excited I was the first time I copied and converted the alliance zeppelin in Icecrown (The Skybreaker?) from a transport object to a static one and populated it with custom NPCs above the south island in Tanaris as a server hub. Always wanted to make my own transport system though, but never got around to figuring out the waypoint system you have to pair with it.

    Anywho, this series will probably reel me back in, and just as well get way more people involved in the server emulator codebases 🙂

  3. Damn this is so smart. I will never touch the mass disenchant button again, but dust some if I really need something. Also, some simple and bad cards will never get nerfed and should be safe, never to get surplus dust from.

  4. I can see this video being interesting to someone new to hosting servers so great work!

    But as a senior backend web dev I somehow expected more out of this title and thumbnail. The mental picture you drew infrastructure wise is almost identical to how a private server functioned in 2006, which is disappointing. Expected something more modern and about a more interesting problem like scaling.

    It also does not help that I have set up a private server for another MMO 17 years ago and edited some data in the db to give myself stats and items.

    Maybe the upcoming videos I will find more interesting.

  5. For people who can't make their experiment accessible to Internet regardless the correct configuration, sometimes ISP providers block any tcp port request on their level so your router (modem) doesn't event receive the request. It is better to consult your ISP to have open port subscription or change if they dont offer it.
    Alternative to this is to create a VPN but for performance reasons I wouldn't recommend it. Last resort is to host your experiment on rental servers where you don't have to deal with network setup but yeah it costs some.

  6. Interesting stuff. I'm from the North East UK, and your accent sounds somewhere near – but then you say "DaDa-base" and not the British pronunciation. Did you work in NA too long? 😀

  7. Is there only one world server for a realm? Or is it multiple? I imagine there's at least 2, considering the loading screen that is needed between Kalimdor and the Eastern Kingdoms? I've always been fascinated by how efficiently WoW was engineered.

  8. i never thought to ask, how does wow work, like in detail what makes all that happen, i knew the simple answer would be it's full of code, but what does that mean and how does all the coding work and blend together to give us all that, thanks for the awesome video

  9. This series rules. This series rules. This series rules.

    I dived into AzerothCore a couple years back when I realized I really needed a better handle on backend development. It was enormously helpful, and learning about the data structure of the game was also super enlightening. The composability of it all is baffling, in the neatest way.

  10. Wow. This was unbelievable. Sub'd after about 4 mins. I've always wanted to know how these games work, and I now have an Eagle-eye outline of it, and it makes sense. Channels like this are the best part of utoob to me.

  11. As a DevOps engineer and former WoW player and enthusiast I found this content and your SoloCraft project super exciting and can't wait to try it out myself. It's so cool to see the architecture in such a great details after all these years of playing both retail and private servers.

  12. DBC Files are there for Pre-Load the Database Information to the Client. It also stores the sounds and references to styles of armore etc.

    Map Files are the Map at it selfe.

    MMaps (Meta Map) Files are for the Meta informations of the terain like tree positions etc.

    VMaps (Visiual Map) Files are the Map Information for the visual Information of the terain like tree styles etc.

    Maps, MMaps and VMaps are needed so NPCs, Players and Object don't feel through the ground. It also says if a Player/NPC can walk through a wall or not.

    This is the simplified explanation of the files.

    Correction here:
    Auth Server is a server that runs apart from the world server. This requires an SQL Database or an SQL Database-Tablle too. In Mangos, Trinity and ArcEmu Cores (AzerothCore is based on Trinity), It's a simple authetification, where the passwords are stored as MD5 string. It only checks if username is existing and if the password ist matching to the username.

  13. OMG, It's like I'm 14 again 😀 When I started my own wow server with MangoDB and was creating my own weapons and quests and fixing bugs that private servers had. What a time.

  14. Does the current iteration of WoW still use SQL DBs or have they migrated to NoSQL?
    It's mind-blowing that it ran off SQL DBs (of course, NoSQL wasn't really an option at the time).
    The level of hardware they would need. It also explains the maintenance required every Tuesday.

  15. Thanks for making this video! I created and hosted a Burning Crusade private WoW server many years ago when I was 13. I would charge people for armor sets and weapons with overpowered stats, add spells from other classes, etc. Made over $5,000.

    My parents made me shut it down when we received a cease and desist letter from Blizzard. Lovely memories

  16. For those files;

    dbc files are clientside databases that contain info about e.g. achievements / models / animations / spells / items / the environment / the world / NPC's / etc. Their structure basically just looks like a giant map data structure. These dbc files actually live inside of the .mpq files (Mo'PaQ, Mike O'Brien Pack, the file format that replaced WAR files from Warcraft / Warcraft II). SimulationCraft has a great writeup on extracting game client data from these .mpq files.

    iirc in Vanilla terrain info is represented by WDT files that contain a bunch of info for a 64×64 tileset, and a world model object reference. There's even more info in tile files (ADT) which contain other things like terrain heightmaps, terrain holemaps, liquid height and types, and references to various things that are placed on the terrain.

    These ADT files reference M2 and WMO files. Things like trees and brushes and whatnot exist in M2 files, and big buildings like Goldshire exist in WMO files.

    maps files are a 2D view of the terrain and they store a few things;
    – height map – z-index of the terrain at each location. This is how your character moves vertically.
    – area data – for example when you move from one zone to another and you receive some experience for exploration
    – liquid height & type – dictates if you're swimming or not, as well as things like fatigue / damage
    – some other stuff i can't remember – hole maps possibly to indicate stuff like mines underground / large empty spaces?

    vmaps (vertex maps) are a 3d view of the terrain – they store terrain / model bounding boxes for collision detection and are used to calculate LoS using BIH / Ray-tracing.
    – vmtree files contain BIH calcs for a WDT level
    – vmtile files contain BIH calcs for model info (like placement) for an ADT level
    – vmo files contain BIH calcs and geometry of a single model

    mmaps (movement maps) are a 3d view of the terrain used for path finding / navigation

  17. This video was amazing! as a software engineer and architect, and Wow player, I really enjoyed it! I hope you see more videos around the same topic 😀

  18. I feel like this video should be shown in game development courses at college/university. Great introduction to the intricacies of the network structure, server setup, DBs, etc. Well done!

  19. This is great! I messed around with some of the other wow solo projects (lights hope etc) a few years ago and thought it was a great learning tool for SQL. I've worked in IT for nearly 20 years but had minimal database exposure. I managed to tweak things like the AQ quest line to complete the war effort quests – breaking things and learning a lot along the way. That was a while ago now so looking forward to following this along.

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button