Besides control traffic from clients, the three game parameters that
most impact network performance are: (1) the number of objects in play
(
), (2) the average size of those objects
(
), and (3) the frequency at which changes are
disseminated to game clients, a.k.a, the game's frame-rate
(
). For example, in Quake II,
ranges from 8 to 64,
is
200 bytes, and
is 10 updates per second. A naïve server
implementation which simply broadcasts the updates of all objects to all
game clients (
) would incur an outbound bandwidth
cost of:
Two commonly used optimizations to reduce this bandwidth cost are area-of-interest filtering and delta-encoding.2Individual players typically only interact with or see a small portion
of the game world at any one time. Most servers only update clients
about this area-of-interest, thus, reducing the number of objects
transferred from the total set of objects in the game
(
) to the number of objects in this area
(
), typically about 4 for Quake II. Similarly,
the set of objects and their state change little from one update to
the next. Therefore, most servers simply encode the difference (delta)
between updates, thus reducing number of bytes for each object
transferred from the object's size (
) to the average
delta size (
), which is around 24 bytes in
Quake II. Thus, the optimized outbound server bandwidth cost would be:
We should note that area-of-interest filtering is used not only as a bandwidth optimization also to enforce the rules of the game. For example, players should not be able to observe or react to events outside their area-of-interest. These rules are often enforced on computer controlled objects as well. This implies that the associated think functions should not access objects that are outside the area-of-interest.