Game Engine Programming 2 Week 1
Game Engine Programming 2 Week 1
OBJECTIVES:
The Early Days: Computer games are as old as computers. One of the
oldest examples was from 1958. It was a Pong-like game called Tennis
for Two, which was developed by William Higin- botham of Brookhaven
National Lab in 1958 and was played on an oscilloscope. Another
example was a game developed in 1961 by a group of students at MIT,
called Spacewar.
Week 1: INTRODUCTION TO GAME PROGRAMMING
The 70’s and 80’s: During the 1970s, computer games came into
people’s homes with the development of the Atari game console. Its
popularity is remarkable, given that the early technology of the day
supported nothing more sophisticated than Pong. One of the popular
features of later game consoles, like the Atari 2600, is that it was
possible to purchase additional cartridges, which looked like 8-track
tapes, allowing users to upload new games.
Week 1: INTRODUCTION TO GAME PROGRAMMING
•Real-time 3-dimensional computer graphics: Most high-end computer games involve the
generation of photo-realistic imagery at the rate of 30–60 frames per second.
•Complex geometry: Many natural objects (such as hair, fur, trees, plants, water, and clouds)
have very sophisticated geometric structure, and they move and interact in complex
manners.
Week 1: INTRODUCTION TO GAME PROGRAMMING
•Complex lighting: Many natural objects (such as human hair and skin, plants, and water) reflect light in
complex and subtle ways.
•Artificial intelligence: The game software controls the motions and behaviors of nonplayer entities.
•Motion and Navigation: Nonplayer entities need to be able to plan their movement from one location to
another. This can involve finding a shortest route from one location to another, moving in coordination
with a number of other nonplayer entities, or generating natural-looking motion for a soccer player in a
sports game.
•Physics: The physical objects of a game interact with one another in accordance with the laws of physics.
Week 1: INTRODUCTION TO GAME PROGRAMMING
•Databases: The game state, especially for multiplayer online games, is maintained in
a database.
•Security: Since the origin of games, there have been people who have sought ways of
circumventing the games.
Week 1: INTRODUCTION TO GAME PROGRAMMING
Here is a summary of the levels, from low to high. These are illustrated in the figure below.
•System: This includes low-level software for interacting with the operating system on which the game engine
runs as well as the target system on which the game executes.
•Third-Party SDKs and Middleware: These are libraries and software development toolkits (SDKs), usually
provided from a third party.
•Platform Independence Layer: Since most games are developed to run on many different platforms, this layer
provides software to translate between game specific operations and their system- dependent implementations.
•Core System: These include basic tools necessary in any software development environment, including assertion
testing, unit testing, memory allocation/deallocation, mathematics library, debugging aids, parsers and serializers
(e.g., for xml-based import and export), file I/O, video playback.
Week 1: INTRODUCTION TO GAME PROGRAMMING
•Rendering Engine: This is one of the largest and most complex components of
any real-time 3- dimensional game.
Animation: While the game may direct a character to move from one location
to another, the job of the animation system is to make this motion look
natural, for example, by moving the arms and legs in a manner that is
consistent with a natural walking behavior.
Input Handlers: These components process inputs from the user, including
keyboard, mouse, and game controller inputs. Some devices also provide
feedback to users (such as the vibration in some game controllers).
Week 1: INTRODUCTION TO GAME PROGRAMMING
The Graphics Pipeline: The key concept behind all GPUs is the notion
of the graphics pipeline. This is conceptual tool, where your user
program sits at one end sending graphics commands to the GPU, and
the frame buffer sits at the other end. A typical command from your
program might be “draw a triangle in 3-dimensional space at these
coordinates.” The job of the graphics system is to convert this simple
request to that of coloring a set of pixels on your display.
Week 1: INTRODUCTION TO GAME PROGRAMMING