Getting Online with Multiplayer Gaming(19) 摘要: Whereas the local
player’s input is processed in the cApp::frame function, the
update_players (which you saw in the code in the previous section) processes
the
players according to their respective states.
Getting Online with Multiplayer Gaming(18) 摘要: Between updates from
the server, the clients need to update all players to keep the
game running smoothly. The client application limits updates to every 33ms
(30 times
a second), which matches the server update rate. Between these player
updates, the
client is allowed to collect input from the player who is used to change
their actions.
Getting Online with Multiplayer Gaming(17) 摘要: The client
application uses the same message structures as the server, but the client
has no need for queuing messages. As Figure 19.16 demonstrates, incoming
messages
are immediately parsed by the client.
Getting Online with Multiplayer Gaming(16) 摘要: To use a client
component, you have to derive a class from it and, in that derived
class, override the necessary functions. Those functions are few and are
needed
only to convey when a connection to the server is achieved or to receive
incoming
game messages.
Getting Online with Multiplayer Gaming(15) 摘要: The client
application (referred to as the client) is the conduit between the gaming
server and the player. The client accepts the user’s input and forwards it
to the server.
Between updates from the server, the client updates itself based on what
little information
it has—the player’s movement, other players’ movements, NPC actions, and so
on.
Getting Online with Multiplayer Gaming(14) 摘要: In order to
synchronize itself with clients, the server needs to maintain a simplified
version of the game running internally. This version of the game doesn’t
include
graphics, sound, or any other fancy features; it only needs to track
player’s actions.
Getting Online with Multiplayer Gaming(13) 摘要: Just as players join
the game, so do players quit, and that’s the purpose of the
remove_player function. In the remove_player function, the server will scan
the list of
connected players for a match of a DirectPlay identification number (from
the disconnecting
player) and remove that player from the list. After the scan is complete
and the appropriate player is removed from the list, all clients are
notified of the
disconnecting player, and the server rebuilds a list of exist
Getting Online with Multiplayer Gaming(12) 摘要: Now that the game
messages have made their way into the message queue, the next
step is to remove the messages at each frame and process them. To keep
things
running quickly, only 64 messages at a time are processed (as defined by the
MESSAGE_PER_FRAME macro in the server source code).
Getting Online with Multiplayer Gaming(11) 摘要: The server never
deals directly with incoming messages; instead, the server pulls
messages from the queue. If a message needs to be processed, it must be
inserted
into the queue. Using a queue ensures that the server never gets bogged down
with
processing incoming network data.
Getting Online with Multiplayer Gaming(10) 摘要: As I’ve mentioned
before, the server needs to convert the DirectPlay network messages
into the game-related messages you’ve just read about. You accomplish this
by
processing incoming player connection, disconnection, and receive data
messages from
DirectPlay and converting those messages into game messages.
Getting Online with Multiplayer Gaming(9) 摘要: Players in the game
are only allowed to move around and swing their weapons (hitting
other players). The server will want to track every player’s current state
(walking,
standing still, swinging their weapons, or being hurt), the coordinates in
the world,
the direction they are facing, and the speed they are walking (if they are
walking).
Getting Online with Multiplayer Gaming(8) 摘要: You’ve already read
about how simple the server can be. To put theory into practice
(and help you create your multiplayer games), I put together a server
application.
In this section, you discover how to develop the underlying
server-network-game
architecture and create the server application.
Getting Online with Multiplayer Gaming(7) 摘要: Once connected,
clients just need to collect local player control information and
send it up to the server. Between the updates received from the server, the
clients
guess (using dead reckoning) how to handle all the game characters based on
their
last known state.
Getting Online with Multiplayer Gaming(6) 摘要: The game server is a
specialized piece of software. It doesn’t need fancy graphics, kicking
tunes, or even dedicated input functions. The server merely needs to process
the actions received from connected players and, every so often, send
updates to the clients.
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.
Getting Online with Multiplayer Gaming(4) 摘要: When creating your
game, if you were to stop mid-stream and try to add multiplayer
features (features you hadn’t planned on including) chances are you would
have a hard time making everything work out correctly. Let’s face it—you
need to
be prepared ahead of time, and if your game is going to be
multiplayer-compatible,
you must make sure that you have a solid foundation on which to work.
Getting Online with Multiplayer Gaming(3) 摘要: The Network Game
demonstration program is basic in design. The game has a single large
level that players are allowed to join and in which they can begin moving
and attacking
each other as they like (although no damage is done and nobody can die).
Getting Online with Multiplayer Gaming(2) 摘要: Online gaming has
given players a whole new way to match up with other human
players, and as the narrative in the preceding section illustrates, these
encounters
can be fun or a wake-up call to the deftness of other players.
Getting Online with Multiplayer Gaming(1) 摘要: Although beating down
the endless hordes of evil and saving countless worlds is
interesting enough to rob you of precious sleep, it can get pretty boring
after a
while. No matter how hard we try, game developers just can’t nail down the
intrigue
and challenge of human intelligence that gamers want in virtual opponents.