7 ms·
I would really like to know the software architecture of a WoW realm. (Beyond the basics of... one blade for each continent). OS, tools, programming languages,
by mahouse 12y ago
I would really like to know the software architecture of a WoW realm. (Beyond the basics of... one blade for each continent).
OS, tools, programming languages, how did the different parts of the software (such as, again, continents) communicate between themselves... For example, I was told once dungeons and raids were/are scripted in Lua.
- deleted 12y ago[deleted]
- valarauca1 12y ago>Beyond the basics of... one blade for each continent). On launch there was 2 continents, but 4 server blades per server. Scripted events take place in Lua. But most raids until I believe Cataclysm weren't scripted so much as it was just mob abilities + cool downs. Note: Not a wow server architect just played way to much WoW
- mahouse 12y agoThese things I know. WoW server reimplementations are pretty monolithic and that causes a lot of problems on heavy loads. I know of a private server that's working on having some "load balancing" to avoid that. What I mean by this is that currently the only way to have lots of players playing at once in the same realm is to buy very expensive hardware. That plus the amount of DoS attacks you receive if you are popular means that having a private WoW server online is anything but cheap.
- Shivetya 12y agoTo get an idea how they grouped zones a bit, this picture was taken showing the expansion zones for Burning Crusade, apparently you could move between them with a few tricks. https://i.imgur.com/768UM.jpg https://i.imgur.com/768UM.jpg I was always more impressed with Asheron's Call management of areas, as they initially had one zone friend world, it would load land blocks as players accessed them.
- mahouse 12y agoWhoa. I'm pretty sure that screenshot was taken with around 1 fps. :)
- scrollaway 12y ago3.7 FPS (top left). I've done a lot of reverse engineering of World of Warcraft as I worked on its internals for years. If this is an interesting subject I might write about it. Anything specific people would want to know?
- mahouse 12y agoYou don't know how much happy you would make me if you do this. Write about anything you want, you could even make a series of articles. Thank you in advance.
- deleted 12y ago[deleted]
- scrollaway 12y agoMahouse, your comment is dead for some reason. I've mostly learned about the internals of the WoW client itself and how it interacts with the server. I suppose I will eventually write about it when inspiration strikes me, but I'll be happy to answer any more specific questions you have. It's a very broad subject.
- mahouse 12y agoIt's dead because a moderator removed it, it was too personal I guess. Any mail address I can use to reach you. Thanks.
- scrollaway 12y agoOf course. On my profile.
- Daneel_ 12y agoMore than likely it would sit on top of an Enterprise Service Bus (ESB) architecture, using XML to pass information between the servers. The general term for this is 'message passing'. A software example is IBM's Websphere MQ, or the free RabbitMQ. There's a lot of detail to go into in this field, suffice to say that you can easily make a career out of knowing how to design efficient ESBs. Obligatory Wikipedia link for more info: http://en.m.wikipedia.org/wiki/Enterprise_service_bus http://en.m.wikipedia.org/wiki/Enterprise_service_bus
- Someone1234 12y agoThis seems inconsistent with the person above who said they worked for NetApp and on the WoW realms in particular. They said it was more SAN + a centralised Oracle DB. Which is a pretty common approach. The Oracle DB keeps the different blades in sync but also allows trivial data transportation. XML seems unlikely unless they were storing XML within Oracle but that seems odd/insane for their use case. It might make sense if they were sending data geographically but as far as I know WoW realms are in one location only.
- chiph 12y agoI've observed some messaging behavior in the game -- selling at a vendor can take variable amounts of time, implying that the buy/sell transactions are via a service and not local to the gameplay server. I expect they use a hybrid approach - some monolithic, some message-bus.
- Daneel_ 12y agoThese are actually two separate things. The data would definitely be stored in a database on a SAN, and a NetApp SAN plus oracle DB would be just fine for that. This represents the database/storage layer of the operations. The part I'm talking about is the behind-the-scenes communications layer for the application itself - how you pass information between servers in real time with low latency. Think of things as a stack. You have the top layer which is the application. It runs on an individual server as a process, or set of processes. You then have middleware, which is software that handles communication between applications, whether it's on the same box, or between servers. Middleware is also responsible for handling communication with the database (oracle in this case possibly). This is the database or information storage layer. Ie: application layer --> middleware --> database. This middleware is the portion I'm postulating could be using XML, based on my general enterprise experience. It's not stored anywhere, it's simply a transport mechanism for data between applications when you don't need to store it. More than likely it would contain information such as 'this user is entering the battlegrounds, please create a slot for them with these details', or 'this player just caught the boat to another continent, I'm handing them from me to you and here is all their information'. XML is great for this kind of 'live' data transportation, although I probably prefer json these days..
- slm_HN 12y ago>I would really like to know the software architecture of a WoW realm. >OS, tools, programming languages, how did the different parts of the software communicate between themselves... I don't know the details of the WoW software architecture but I know there were a lot of weird side-effect bugs in the game. My favorite weird bug was the one where you couldn't craft a stack of items (like bandages for example) when you were wearing 5 pieces of your class specific items set. So rather than crafting a stack of 20 bandages, you'd have to craft them one bandage at a time if you were wearing 5 pieces of your class set. If you took off one piece of gear you could craft stacks. I spent a bit of time wondering what type of design would cause that sort of bug....