Principles of Game Design and Development
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,
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. Koster's asser-tion 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.
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 object-oriented, or at least loosely object-based, programming language.
All interactive video games are temporal simulations, meaning that the vir tual 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.
What Is a Game Engine?
The term "game engine" arose in the mid-1990s in reference to first-person shooter (FPS)
games like the insanely popular Doom by id Software. Doom was architected with a reasonably
well-defined separation between its core software components (such as the three-dimensional
graphics rendering system, the collision detection system or the audio system) and the art
assets, game worlds and rules of play that comprised the player's gaming experience.
The value of this separation became evident as developers began licensing games and
retooling them into new products by creating new art, world layouts, weapons, characters,
vehicles and game rules with only minimal changes to the "engine" software. This marked the
birth of the "mod community" - a group of individual gamers and small independent studios that
built new games by modifying existing games, using free toolkits provided by the original developers.