Imagine it's the night before patch day. You've parked your level-70 character, decked out in epic gear, outside what will soon be the forest ruins of Zul'Aman. Right now, it's just rocky pavilion with huge, wooden gates you can't open. But tomorrow, it will become the entrance to a dungeon full of trolls. You and nine of your friends hope to be the first players on your server to go inside.
It's a risky proposition -- and not just because Zul'Aman is full of enemies that are far more powerful than you are. Zul'Aman is an addition to the massively multiplayer online role-playing game (MMORPG) "World of Warcraft," or WoW. As anyone who plays the game can tell you, making additions or changes to such an immense, dynamic world can cause some problems. On patch day, players often experience everything from server instability to problems with their user interface (UI) and addons. Players did get into Zul'Aman the day its patch went live, but only after the servers were down for hours of extended maintenance. And that didn't quite rival hours of downtime spread across two days just before the launch of the most recent "World of Warcraft" expansion, "Wrath of the Lich King."
Patch-day technical difficulties and the joy of exploring a new dungeon both come from the same basic source -- the enormous collision of people and data. The game worlds of Azeroth and Outland include 60 regions spread out across four continents. Each region has its own landscape and inhabitants -- both friendly and unfriendly -- and sometimes its own weather. Then there are representations of players' characters and everything they wear, carry and use. You can boil all of this down to ones and zeros stored on computer hard drives.
Players interact with all this data using their computers and an Internet connection. The players' computers store some of the data, and a remote server provides the rest. As one player interacts with the world, the world changes for other players -- the movement of data back and forth between the computer and the server allows this to happen.
Multiply this information by the thousands of players who can log on to a particular server at the same time, and the amount of traveling data becomes staggering. All the people playing the game also have the potential to make unpredictable decisions, making the exact interactions between players and the game hard to predict. When you think about the game in terms of so much traveling data, it's not surprising that patches and updates can have far-reaching effects.
In this article, we'll look at what it takes for data to become an interactive, persistent game world. We'll also explore the game's architecture and the people it takes to keep the game running. We'll begin with the human factor -- the people who play "World of Warcraft" and why they play it.
As of July 2007, "World of Warcraft" had more than 9 million active subscribers worldwide [source: Blizzard, press release]. While there's no publicly-available, comprehensive census of exactly who plays the game, there are several researchers who have studied WoW players extensively.
Researcher Nick Yee has used online surveys to poll "World of Warcraft" players about themselves and their characters. These responses come from a self-selected group, or people who have decided for themselves to visit Yee's Web site and fill out the survey. This means that the results may not represent the world's demographics as accurately as a random sample would. Instead, it may reflect a particular subset of players -- those who are serious enough about the game to research it online and to feel motivated to spend time answering questions about it.
According to one of Yee's 2005 studies, 84 percent of "World of Warcraft" players are male, and 16 percent are female. The average player's age is 28, and female players tend to be a few years older than male players. Regardless of their gender, players spend an average of 21 to 22 hours a week playing the game [source: Yee, WoW Demographics]. Of course, these statistics may have shifted since Yee collected his data. You can learn more about Yee's research at The Daedalus Project.
The amount of time people spend in the game world depends in part on their characters' levels. According to research conducted at the Palo Alto Research Center in 2005, players tend to put in an extra burst of playing time when a character is about to reach a milestone level. At the time of the study, players gained access to a mount, such as a horse, tiger or kodo, at level 40. The study showed a spike in play time leading up to level 40 that was even greater than the spike leading to level 60, which was the highest possible level when the study was conducted. However, once people reach the highest levels, they generally spend more time playing than they did at lower levels [source: PARC, Playing Time]. Now, players gain mounts at level 30 and top out at level 80 with "Wrath of the Lich King" installed.
These numbers relate to one of the reasons people play "World of Warcraft" and similar games -- for the feeling of accomplishment that comes from in-game achievement. But there are also other reasons for participation in the online world, including:
- Socializing with real-life or in-game friends
- Exploring the virtual world
- Competing against real or virtual opponents
Researcher Richard Bartle placed these four types into four categories, described as achievers, socializers, explorers and killers. This has become a commonly-used model for describing how and why people participate in role-playing games.
You can also describe "World of Warcraft" players in terms of which activities they participate in while playing. Hardcore raiders spend most of their time in high-level dungeons. Other players spend most of their time in player-versus-player (PvP) environments. Some PvP enthusiasts are twinks, or players who advance to a particular level and then acquire lots of gear that will make them more powerful than other players of the same level. Then, there are the casual players, who may enter raid dungeons and PvP battlegrounds but who don't spend their game time focusing on them exclusively.
Regardless of exactly what people are doing in the game, they're using the same basic tool to access the world -- a computer. Next, we'll look at the "World of Warcraft" client and how it runs.
The "World of Warcraft" program you install on your computer is the client, which has four primary duties. The client:
- decodes and displays the data that make up the game world, as well as the user interface (UI) and any associated addons.
- receives input from you and from a remote server and changes the game display accordingly.
- gives feedback to you and the server, based on what's happening in the game.
- keeps up with any changes you make to your game's layout and settings.
The client gets a large portion of its data from archives stored on the computer's hard drive. Much of the visual information is stored in MPQ format, an archive format proprietary to Blizzard. Sounds are generally stored as WAV or MP3 files. As players move through the world, the client caches some of this information in a folder for faster access.
The client isn't static -- it changes as the game develops. Blizzard releases patches to "World of Warcraft" to fix bugs, adjust game play issues and add new content, like quests and dungeons. Lots of players access the game world simultaneously, and each one has to be able to see the same features and operate under the same rules. For this reason, Blizzard pushes new patches to each player's computer. When you open your game after a new patch has been released, your client will automatically download and install the patch. Blizzard's background downloader can also download pieces of the patch that are ready for release ahead of time to cut down on the amount of time it takes to get a patch.
Separate from the client, but related to it, is the game launcher. The launcher is a small program that provides hyperlinks to new information at the Blizzard Web site. It also lets you know when new patch information is ready to download and opens your game itself. The launcher can also check your computer for viruses, hacks and cheating software and warn you if it finds them.
Once you launch the program and log in, the client begins to recreate the game world. We'll look at what happens on the next page.
Let's examine the image below as an example of how the "World of Warcraft" game client works. In it, a shaman named Yellowbell is collecting a stone for a quest, but she's caught the attention of a goblin, which is on his way to attack her. Here's what's happening from a client perspective:
- After pulling data from the archives stored on the computer's hard drive, the client creates a representation of Yellowbell's surroundings.
- The client informs the server of Yellowbell's position and receives information about stationary and mobile objects, or mobs, around her. A mob is essentially any wandering object in the world, but it's most often used to describe attackable enemies.
- When Yellowbell tries to pick up the stone, the client tells the server what she's doing. It also displays a status bar, showing the player how long it will take for Yellowbell to retrieve the stone.
- The client receives information about the goblin's attack from the server. It interrupts Yellowbell's stone collection when the goblin hits her. The client sends information to the server about how Yellowbell defends herself, and it receives information about the goblin's actions and the progression of the fight.
- Once Yellowbell kills the goblin and finishes collecting the stone, the client stops displaying it on the ground and instead displays an icon representing it in Yellowbell's inventory. It informs the server that Yellowbell has collected the stone, so other players will no longer see it in the game world.
These are just the highlights. The client constantly accesses or receives information about the game world and the characters in it. The more other characters there are nearby, the more work the server has to do. This is why some players' games can slow to a crawl in highly populated areas -- the computer's CPU and video processor can't keep up with all the information they need to display. In some cases, the frame rate, measured in frames per second (FPS), can drop dramatically, causing players to see the world as a series of still pictures rather than a moving scene.
The client also stores information about your character and your in-game options in the WTF folder on your hard drive. Files in this folder are usually in one of three formats:
- Text (TXT) files
- WTF files, which can be opened and read with a text reader (like TextEdit on a Mac or Notepad on a PC)
- LUA and LUA.BAK files, which come from the Lua programming language.
We'll look at Lua -- the language used to create "World of Warcraft" addons -- on the next page.
"World of Warcraft" has lots of ways for you to customize your game. You can access lots of settings through your interface options. These options let you change how your camera moves, which features your game displays and how you use your mouse to target yourself or enemies. Your video options lets you change the level of detail in the game world, which can help compensate for a slow processor or limited graphics abilities.
But suppose you want to completely change the way your party's health and mana bars look when you're in a group or see how much money you have without opening your backpack. The WoW interface options can't handle these requests -- but third-party addons can.
- Omen is a threat meter. "World of Warcraft" mobs attack group members based on how threatening they are. Tanks, who can absorb a lot of damage, need to have the highest threat level in a group. Omen shows players how much threat they're generating relative to the other group members who have the addon installed. Another threat meter is KLH ThreatMeter. The game interface gives players some information about their threat levels as well.
- Auctioneer keeps track of prices at the in-game auction house. It suggests prices for items you want to sell and helps you figure out whether items you hope to buy are listed at a reasonable price.
- Atlas displays maps of dungeons and flight paths, which aren't included in the standard game.
Addons are created using the Lua scripting language. When you download them, they look like folders full of files. Some files are LUA format, while others are extensible markup language (XML) or table of contents (TOC) files. To install the addon, you simply move its entire folder to the correct location on your computer. These are the default locations:
- Mac: /Mac HD/Applications/World of Warcraft/Interface/AddOns
- PC: c:program filesWorld of WarcraftInterfaceAddOns
This makes the addon a part of your game's file structure, which changes how the game operates. You can also download programs that will update your addons for you.
There are a few things to keep in mind if you're using addons:
- Blizzard doesn't provide technical support for addons. If you have technical issues with the game, the first instruction you'll receive from technical support will probably be to disable your addons.
- Addons can carry malicious software, like key loggers that capture your username and password, to your computer. Keep your virus protection software up to date, and scan your computer regularly. If an addon tries to force you to install an executable file, don't use it.
- Your addons may break every time there's a major update to "World of Warcraft." You'll need to download new ones.
- The people who create addons are basically volunteers. Although many take their work very seriously, they're under no obligation to fix bugs or to update their files.
As long as they don't play the game or make in-game decisions for you, addons don't generally break the rules. Other exceptions are addons that affect the way your computer communicates with a remote server and packet sniffers, or programs that track the way information travels between the client and the server. We'll look at the remote server and how it works in the next few sections.
The realms come in three primary types:
- Normal, or player versus environment (PvE)
- Player versus player (PvP)
- Role playing (RP) -- there are also role-playing PvP servers
You can make characters on lots of different servers, but characters can't communicate across servers unless they're in the same player versus player (PvP) battleground.
A world server isn't a single server, though -- it's a collection of servers. As of 2006, Blizzard had about 9,000 servers around the world [source: Vivendi].
When you log on to your "World of Warcraft" account, you do so using an authentication server. This server verifies your name and password before transferring you to the realm on which you last played. Exactly which portion of the server you access depends on where you logged out of the game. Blizzard hasn't disclosed the exact architecture of its world servers, but based on the game's behavior, several server divisions are clear.
Each of the world's three continents -- Kalimdor, the Eastern Kingdoms and Outland -- has its own servers. There's also a separate server for instances, or the game's dungeons. When a group enters an instance, the game spawns a copy of that dungeon for the group. Other groups and players can't enter it. A database server, or a database function running within the servers, provides information on the locations and respawn time all of the items players can loot (pick up) or otherwise interact with in the game world, including:
- Non-player characters (NPCs)
- Herbs and mining nodes
- Ships and zeppelins
- Quest items
These items persist across all the servers that make up the realm. Some chat channels, like group and guild chat, are also accessible no matter where you are in the game world. Others, like general cannels for specific regions within the game, are accessible only when you're in that particular zone.
Everything about your particular character, including the quests you've completed, your level and all your gear, is stored in a database that's tied to your "World of Warcraft" account. You can log in from any computer that is running the game and find your character exactly the way you left it. This database can also interface with a Web server, allowing you to do things like look at other players' gear and your own at the "World of Warcraft" armory. You can also pay a small fee and have your character moved from one server to another -- Blizzard adjusts its database accordingly.
To play the game, your computer has to communicate with one of these sets of servers. We'll take a look at what happens on the next page.
All the maps and scenery in "World of Warcraft" live on your computer, but information about what's going on in the world has to come from a server. Based on the information it gets from your game client, the server performs a lot of calculations about the world, including:
- where mobs are in relation to you
- whether you're in range of mobs you want to attack
- whether your attacks are successful
- how much damage you inflict on a mob you're attacking
- how much damage the mob inflicts on you
- how much you heal yourself or people in your party, using healing spells or bandages
The server also collects information from other players clients' -- whether you're in a group with them or not -- and relays it to your computer. This allows you to see other characters, their gear and their actions in the game. It also lets you receive chat messages, guild invitations and group invitations. This information doesn't travel directly from another user's computer to yours -- it travels to you via the server.
The efficiency of all of these interactions is dependent upon the amount of time it takes a message to travel from a client to a server and back. Players who experience high latency -- or a long travel time -- can see significant delays between when they perform an action and when they see it happen on the screen.
A battle against a mob is an ongoing exchange of information between your computer, the computers of the people in your group and the server. For example, say you and some friends plan to Doom Lord Kazzak, a raid boss in Outland. Here's what happens:
- You and your group approach the Kazzak. All of your clients send information to the server about where you are. The server knows where Kazzak is -- if you get too close, you'll pull him by accident, at which point he'll probably kill your party.
- Once you're in range, someone in your party attacks Kazzak. That person's client informs the server of the attack. The server responds by causing the Kazzak to attack your party and to verbally taunt you. It relays this information to your computers.
- As you're fighting, your party's clients tell the server which spells you're casting. Based on your character's statistics, the server calculates your damage and healing. It relays that information to your clients, so each player can see what's happening to all the others. Other players' clients are doing the same thing, so you can see how they fare during the battle as well.
- When you successfully kill Kazzak, the server instructs your clients to play its death animation. If not, the server instructs Kazzak to further taunt each killed player.
- When someone loots Kazzak's body, the server consults its loot table and lets each client know which items dropped. The clients display these items on each player's screen, or on the screen of the player designated to be in charge of distributing loot (the master looter). The players decide who will receive the items.
- When a player collects an item, the client removes the image of the item from the list of dropped loot and places an icon representing it in the player's inventory. The client also tells the server that the player has done so, and the server instructs the other clients to remove that item from their game view.
Click to advance.
PvP combat is a little different -- the server still makes calculations, but other players, rather than artificial intelligence, control the other combatants. But regardless of whether an AI script or a human brain is in charge, the battle itself can often be challenging.
Related HowStuffWorks Articles
More Great Links
- Bartle, Richard. "Players who Suit MUDs." (11/11/2007) http://www.mud.co.uk/richard/hcds.htm
- Blizzard. "World of Warcraft Surpasses 9 Million Players Worldwide." Press release. 7/24/2007 (11/11/2007) http://www.blizzard.com/press/070724.shtml
- Blizzard. "World of Warcraft." 2004.
- Blizzard. "World of Warcraft: Realm FAQ." (11/8/2007) http://www.worldofwarcraft.com/info/faq/realms.html
- Blizzard. "World of Warcraft: The Burning Crusade." 2007
- GameSpy staff. "World of Warcraft: Lead Designer Rob Pardo." 11/23/2004 (1/8/2007) http://pc.gamespy.com/pc/world-of-warcraft/568494p1.html
- IDGA. "Online Games Whitepaper." 2002.
- James, Daniel, et al. "2004 Persistent Worlds Whitepaper." IDGA. 2005. http://www.igda.org/online/IGDA_PSW_Whitepaper_2004.pdf
- Palo Alto Research Center. "Playing Time." 6/21/2005 (11/11/2007) http://blogs.parc.com/playon/archives/2005/06/playing_time_1.html
- Pinckard, Jane. "Over 18,000 Accounts Cancelled in World of Warcraft." 11/22/2005 (11/820007) http://www.1up.com/do/newsStory?cId=3146573&did=1
- Smith, Will. "MMORPG." MaximumPC. May 2005.
- Terdiman, Daniel. "Game Players Say Blizzard Invades Privacy." Cnet. 12/12/2005 (11/7/2007) http://www.news.com/Game-players-say-Blizzard-invades-privacy/2100-1043_3-5830718.html
- Vivendi. "Financial Report and Unaudited Condensed Financial Statements for Half Year Ended June 30, 2007." http://www.news.com/Game-players-say-Blizzard-invades-privacy/2100-1043_3-5830718.html
- Vivendi. "Introduction to Vivendi Games." Investor presentation/filed with the SEC. June 2006. http://www.sec.gov/Archives/edgar/data/1127055/000095012306007628/y22210exv99w1.htm
- Williams, Dmitri et al. "From Tree House to Barracks: The Social Life of Guilds in World of Warcraft." Games and Culture. Vol. 1 No. 4. October 2006. http://www.nickyee.com/pubs/Tree%20House%20to%20Barracks%202006.pdf
- Yee, Nick. "WoW Basic Demographics>" The Daedalus Project. 7/28/2005. (11/22/2007) http://www.nickyee.com/daedalus/archives/001365.php
- Yee, Nick. "WoW Gender-bending." The Daedalus Project. 7/28/2004 (11/22/2007). http://www.nickyee.com/daedalus/archives/001369.php