Preface
What:
This is the first tutorial in a series of tutorials
designed to provide detailed description and working examples
about the construction of 3D games.
Why:
Game design is a billion dollar enterprise, attractive to people of all ages,
genders, races and orientations. Video and computer games provide a much needed
escape from reality, a modern-day counterpart to books or movies. Many of us,
either secretly or overtly, harbor a desire to participatein the game
development process, sometimes believing that "We could do it better."
These tutorials attempt to provide step-by-step guidelines for
participation in the game development process.
How:
The first requirements are access to a computer and an idea
for an interesting game.
This game idea does not have to be complex or elaborate.
For example, checkers is a relatively simple time-honored
game, yet is still played today.
The well-known game, Pong,
is based on the concept of table tennis (or ping pong),
but is believed by many to have started the video game revolution.
The idea for a game can be simple yet attractive,
so long as it provides entertainment for the player(s) involved.
The Story of Pong
However, these tutorials are not designed to provide ideas for
a game, but rather to demonstrate how to take your ideas and
turn them into a working game, complete with 3D graphics, sound,
and techniques for controlling the action.
We use two external libraries: SDL and OSG.
SDL, the Simple Directmedia Layer, is designed to interface with the
components of a computer that deal with multimedia functionality.
It is written in C, and is compatible with C++.
SDL also has interfaces that may be used with a wide variety of other languages.
We use SDL as a light wrapper around our game engine,
handling selective input, audio and video operations.
OSG, the OpenSceneGraph,
is a wrapper around the OpenGL library and provides
facilities for rendering objects in a 3D space.
Though OSG abstracts us away the underlying OpenGL calls,
it can be helpful to have a basic understanding of how OpenGL works.
OSG also provides functionality to handle user input,
but we will not be using this functionality, instead focusing
solely on the visual processing capabilities.
OSG is written in C++, exploits design patterns and auto pointers,
and provides direct communication between our game engine and the OSG library.
You will find that this set of tutorials is code intensive;
thus, it is important that the reader have an
established understanding of programming constructs and principles
to be able to exploit the concepts that we demonstrate.
Though it is not necessary to be an expert C++ programmer,
an understanding of the tutorials requires that the
reader, at a minimum, have a basic reading knowledge
of the C++ programming language and the object-oriented programming paradigm.
Knowledge of memory management, pointers, and the
standard template library, STL, is also important.
Reference Environment:
Though these tutorials apply to any environment meeting the requirements of the
next section, they were constructed in the following environment:
Proc: AMD 2500+ 1.8 Ghz
Ram: 1024MB
Video: ATI Radeon X800
Audio: Terratec DMX6Fire
OS: openSUSE 10.1
Version: 2.6.16.21-0.25-default i686 athlon i386 GNU/Linux
Make: GNU Make 3.80
GCC: gcc version 4.1.0 (SUSE Linux)
SDL: 1.2.11
OSG: 1.2
Thus the tutorials will be presented from a linux perspective.
Requirements:
- An ISO conformant C++ compiler. For example, we have tested
all of our examples and tutorial code using GNU's g++, and Microsoft's
Visual Studio Series.
- Latest SDL Library files
- Latest OSG Library files
- Some OpenGL compliant graphics card capable of handling OpenGL graphics calls.
(AMD/ATI Radeon Series, Nvidia Geforce Series, and others)
- Working Sound Configuration in user environment (if audio is desired)
- Two Button Mouse (if mouse support is desired)
|