天行健 君子当自强而不息

Getting Online with Multiplayer Gaming(5)

 

A couple of things quickly come to mind when using the type of network communications
just mentioned. First, because the server is the only system responsible for
maintaining the game state, all connected clients would have to wait for those periodic
updates to keep the game flowing.

Unfortunately, network transmission speeds don’t allow instantaneous
transmissions, so some of the data passing from client to server and
back again are delayed. This delay in transmission is called latency, and it's
this latency that can cause havoc in your game.

NOTE
Latency is measured in milliseconds (ms).

Because the server is the only system allowed to make changes to the game world,
the server must validate players’ actions before they can occur. As you can see from
Figure 19.4, players trying to issue actions will experience a delay from the time the
actions are initiated to the time they take place. This delay of action, called lag, can
cause the game-play to be choppy (and thus unplayable).

To keep things running smoothly and help alleviate the effects of latency and lag,
clients are allowed to make small changes to the world between server updates.
Those small changes are typically only to update the movement of characters. In
that way, clients don’t have to wait for server updates in order to move characters;
clients can just guess how to update all characters based on their last known state
(as you can see in Figure 19.5). This form of guessing is called dead reckoning, and
it is used in network gaming.

When more serious actions, such as combat actions, come into play, using dead
reckoning is unacceptable. The server is the authority, and if a system needs to
determine who hits whom and how much damage is done, that system needs to
query the server for resolution.

As mentioned, when using a networking system, the second problem is game timing. Let’s
face it—trying to synchronize possibly dozens of clients is almost impossible. Each computer
hooked on the network has a different latency; some clients take longer sending messages
to the server and receiving them back from the server.

CAUTION
If you leave any of the major decisions (such as combat) up to a client, you’re inviting trouble,
because game hackers and cheaters will take full advantage of any loopholes. Remember
that the server is the only system responsible for keeping track of the game; the clients are
merely portals into the game world.

On the client side, one player might make a move at the exact time as another
player, but because their actions take a moment to reach the server, the client with
the faster connection will have the advantage (as illustrated in Figure 19.6).

All messages received by the client and server are recorded with the time of their
receipt. The server uses that time to determine how to update the players. For
example, if a message received by the server isn’t processed within 100 milliseconds
(ms), the server compensates for that amount of time during updates. The same
goes for clients. If an action message needs to be updated (especially during the
use of dead reckoning), that time (the time the messages are received) is used to
move characters appropriately.

Now that you have an overview of how the clients and server work
together, take a closer look at each one.

TIP
To help improve synchronization, the client and server both calculate latency into the
time that a message is received.


posted on 2007-12-18 16:59 lovedday 阅读(202) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


公告

导航

统计

常用链接

随笔分类(178)

3D游戏编程相关链接

搜索

最新评论