We probably all have a pretty good intuitive notion of what a game is. The
general term “game” encompasses board games like chess and Monopoly, card
games like poker and blackjack, casino games like roulette and slot machines,
military war games, computer games, various kinds of play among children,
and the list goes on. In academia we sometimes speak of game theory, in which
multiple agents select strategies and tactics in order to maximize their gains
within the framework of a well-defined set of game rules. When used in
the context of console or computer-based entertainment, the word “game”
usually conjures images of a three-dimensional virtual world featuring a humanoid, animal or vehicle as the main character under player control. (Or for
the old geezers among us, perhaps it brings to mind images of two-dimensional
classics like Pong, Pac-Man, or Donkey Kong.) In his excellent book, A Theory
of Fun for Game Design, Raph Koster defines a game to be an interactive experience that provides the player with an increasingly challenging sequence of
patterns which he or she learns and eventually masters [26]. Koster’s assertion is that the activities of learning and mastering are at the heart of what we
call “fun,” just as a joke becomes funny at the moment we “get it” by recognizing the pattern.
1.2. What Is a Game? 9
For the purposes of this book, we’ll focus on the subset of games that comprise two- and three-dimensional virtual worlds with a small number of players (between one and 16 or thereabouts). Much of what we’ll learn can also
be applied to Flash games on the Internet, pure puzzle games like Tetris, or
massively multiplayer online games (MMOG). But our primary focus will be
on game engines capable of producing first-person shooters, third-person action/platform games, racing games, fighting games and the like.
1.2.1 Video Games as Soft Real-Time Simulations
Most two- and three-dimensional video games are examples of what computer scientists would call soft real-time interactive agent-based computer simulations. Let’s break this phrase down in order to better understand what it
means.
In most video games, some subset of the real world—or an imaginary
world—is modeled mathematically so that it can be manipulated by a computer. The model is an approximation to and a simplification of reality (even
if it’s an imaginary reality), because it is clearly impractical to include every
detail down to the level of atoms or quarks. Hence, the mathematical model
is a simulation of the real or imagined game world. Approximation and simplification are two of the game developer’s most powerful tools. When used
skillfully, even a greatly simplified model can sometimes be almost indistinguishable from reality—and a lot more fun.
An agent-based simulation is one in which a number of distinct entities
known as “agents” interact. This fits the description of most three-dimensional
computer games very well, where the agents are vehicles, characters, fireballs,
power dots and so on. Given the agent-based nature of most games, it should
come as no surprise that most games nowadays are implemented in an objectoriented, or at least loosely object-based, programming language.
All interactive video games are temporal simulations, meaning that the virtual game world model is dynamic—the state of the game world changes over
time as the game’s events and story unfold. A video game must also respond
to unpredictable inputs from its human player(s)—thus interactive temporal
simulations. Finally, most video games present their stories and respond to
player input in real time, making them interactive real-time simulations. One
notable exception is in the category of turn-based games like computerized
chess or non-real-time strategy games. But even these types of games usually
provide the user with some form of real-time graphical user interface. So for
the purposes of this book, we’ll assume that all video games have at least some
real-time constraints.
10 1. Introduction
At the core of every real-time system is the concept of a deadline. An obvious example in video games is the requirement that the screen be updated
at least 24 times per second in order to provide the illusion of motion. (Most
games render the screen at 30 or 60 frames per second because these are multiples of an NTSC monitor’s refresh rate.) Of course, there are many other
kinds of deadlines in video games as well. A physics simulation may need
to be updated 120 times per second in order to remain stable. A character’s
artificial intelligence system may need to “think” at least once every second to
prevent the appearance of stupidity. The audio library may need to be called
at least once every 1/60 second in order to keep the audio buffers filled and
prevent audible glitches.
A “soft” real-time system is one in which missed deadlines are not catastrophic. Hence, all video games are soft real-time systems—if the frame rate
dies, the human player generally doesn’t! Contrast this with a hard real-time
system, in which a missed deadline could mean severe injury to or even the
death of a human operator. The avionics system in a helicopter or the controlrod system in a nuclear power plant are examples of hard real-time systems.
Mathematical models can be analytic or numerical. For example, the analytic (closed-form) mathematical model of a rigid body falling under the influence of constant acceleration due to gravity is typically written as follows:
y(t) = 1
2
gt2 + v0t + y0. (1.1)
An analytic model can be evaluated for any value of its independent variables,
such as the time t in the above equation, given only the initial conditions v0
and y0 and the constant g. Such models are very convenient when they can be
found. However, many problems in mathematics have no closed-form solution. And in video games, where the user’s input is unpredictable, we cannot
hope to model the entire game analytically.
A numerical model of the same rigid body under gravity might be
y(t + ∆t) = F(y(t), y˙(t), y¨(t), . . .). (1.2)
That is, the height of the rigid body at some future time (t + ∆t) can be found
as a function of the height and its first and second time derivatives at the
current time t. Numerical simulations are typically implemented by running
calculations repeatedly, in order to determine the state of the system at each
discrete time step. Games work in the same way. A main “game loop” runs
repeatedly, and during each iteration of the loop, various game systems such
as artificial intelligence, game logic, physics simulations and so on are given
a chance to calculate or update their state for the next discrete time step. The
results are then “rendered” by displaying graphics, emitting sound and possibly producing other outputs such as force-feedback on the joypad.
0 Comments
Please Comment for any further query :