xviii Preface
play programming, including player mechanics, cameras, and AI. However,
by necessity, the scope of these discussions will be limited mainly to the ways
in which gameplay systems interface with the engine.
This book is intended to be used as a course text for a two- or three-course
college-level series in intermediate game programming. Of course, it can also
be used by amateur so ware engineers, hobbyists, self-taught game program-
mers, and existing members of the game industry alike. Junior engineers can
use this text to solidify their understanding of game mathematics, engine ar-
chitecture, and game technology. And some senior engineers who have de-
voted their careers to one particular specialty may benefi t from the bigger
picture presented in these pages, as well.
To get the most out of this book, you should have a working knowledge
of basic object-oriented programming concepts and at least some experience
programming in C++. Although a host of new and exciting languages are be-
ginning to take hold within the game industry, industrial-strength 3D game
engines are still wri en primarily in C or C++, and any serious game pro-
grammer needs to know C++. We’ll review the basic tenets of object-oriented
programming in Chapter 3, and you will no doubt pick up a few new C++
tricks as you read this book, but a solid foundation in the C++ language is best
obtained from [39], [31], and [32]. If your C++ is a bit rusty, I recommend you
refer to these or similar books to refresh your knowledge as you read this text.
If you have no prior C++ experience, you may want to consider reading at least
the fi rst few chapters of [39], or working through a few C++ tutorials online,
before diving into this book.
The best way to learn computer programming of any kind is to actually
write some code. As you read through this book, I strongly encourage you to
select a few topic areas that are of particular interest to you and come up with
some projects for yourself in those areas. For example, if you fi nd character
animation interesting, you could start by installing Ogre3D and exploring its
skinned animation demo. Then you could try to implement some of the anima-
tion blending techniques described in this book, using Ogre. Next you might
decide to implement a simple joypad-controlled animated character that can
run around on a fl at plane. Once you have something relatively simple work-
ing, expand upon it! Then move on to another area of game technology. Rinse
and repeat. It doesn’t particularly ma er what the projects are, as long as
you’re practicing the art of game programming, not just reading about it.
Game technology is a living, breathing thing that can never be entirely
captured within the pages of a book. As such, additional resources, errata,
updates, sample code, and project ideas will be posted from time to time on
this book’s website at h p://gameenginebook.com.