client in the player’s favor. Even in virtual worlds, where
there is only social competition, the desire to “enhance
the opportunity” of the individual player (also known
as “cheating”) is common. This requires that the server,
which is the one component that is not under the control
of the players, be the arbiter of the true state of the game.
The game server is used both to discourage cheating (by
making it much more difficult) and to detect cheating
(by seeing patterns of divergence between the game state
reported by the client and the game state held by the
server). Peer-to-peer technologies might seem a natural fit
for the first role of the game server, but this second role
means that few if any games or worlds trust their peers
enough to avoid the server component.
CURREN T SCALING S TRATEGIES
The use of the singular term server in the previous section
represents a conceptual illusion of the system structure
that can be maintained only by the clients of the game
or world. In fact, any online game or virtual world will
involve a large number of servers (or will have failed so
miserably that no one either can or wants to remember
the game or world). Using multiple servers is a basic
mechanism for scaling the server component of a game to
the levels that are being seen in the online world today.
World of Warcraft has reported more than 5 million
subscribers with hundreds of thousands active at any one
time. Second Life reports usage within an order of magnitude of World of Warcraft, and there is some evidence
that sites such as Webkinz or Club Penguin are even
more popular. A single server is not able to handle such
load, no matter how efficient the representation. Even
if a single server could deal with this load, such a server
would be far too expensive for the smaller loads that are
encountered (sometimes by the same games or worlds)
at times of low demand (or in parts of the product’s life
cycle when demand has decreased).
Having multiple servers means that part of building
the game is deciding how to partition the load over these
servers. Two techniques are commonly used in both
online games and virtual worlds. Sometimes only one of
the techniques is used, sometimes both, depending on
the nature of the game or world.
The first technique is to exploit the geography of the
game or world, decomposing the game into different
areas, each of which can be mapped to a hosting server.
For example, an island in Second Life corresponds to a
physical server running the code for the shared reality of
the world. Similarly, different areas of the World of Warcraft universe are hosted on different physical machines.
more queue: www.acmqueue.com
Anyone who is in the area will connect to the same
server, and interactions among the players on that server
can be localized (and optimized). Actions happening in
a different part of the world are not likely to affect those
in this part of the world, so the communication traffic
between servers can be kept small.
The second technique is known as sharding. A shard
is a copy of a part of the game or virtual world. Different
shards reside on different servers, and players who are
assigned to one shard can interact with the world and
other players in the shard, but will not see (or be able to
interact with) players or objects in other shards. Shards
not only allow more players to be supported in the world,
but also permit independent explorations into the world
by different sets of players. Thus, when a new quest or
mission is added to a game, it will often be replicated
with multiple shards so that more than one player (or
group of players) can experience the quest or mission in
its original state.
Although sharding and geographic decomposition
allow multiple servers to be used to handle the load on a
single game or world, they do present the developer with
significant challenges. By creating noninteracting copies
of parts of a world, shards isolate the players in different shards from each other. This means that players who
want to share their experience of the world or game need
to become aware of the different shards that are being
offered, and arrange to be placed in the same shard. As
the number of players who want to be in the same shard
increases (some guilds—groups of players who cooperatively play in a single game over an extended period of
time—have hundreds of members), the difficulty of coordinating placement into shards increases and interferes
with the experience of the world. While shards allow
scale, they do so at the price of player interaction.
Geographic decomposition does not limit player interaction, but does require that the designers of the game be
able to predict the size of a geographic area that will be
the correct unit of decomposition. If one geographic area
becomes very popular, play on that area will slow down
as the server associated with the area is overloaded. If a
geographic area is less popular than originally predicted,
computer hardware (and money) will be wasted on that
section because not enough players are there. Since the
geographic decomposition is hardwired into the code
of the game or world, changing the decomposition in
response to observed user behavior requires rewriting part
of the game or world itself. This takes time, can introduce
bugs, and is very costly. While this is being done, gameplay
can be adversely affected. In extreme cases, this can have a
ACM QUEUE November/December 2008 13