| |
 |
Part I.
Windows Programming Foundations |
| |
|
 |
Chapter 1.
Journey into the Abyss |
| |
|
 |
A Little History |
| |
|
 |
Designing Games |
| |
|
 |
Types of Games |
| |
|
 |
Brainstorming on Ideas |
| |
|
 |
The Design Document and Storyboards |
| |
|
 |
Making the Game Fun |
| |
|
 |
The Components of a Game |
| |
|
 |
General Game Programming Guidelines |
| |
|
 |
Using Tools |
| |
|
 |
Setting Up to Get Down—Using the Compiler |
| |
|
 |
An Example: FreakOut |
| |
|
 |
Summary |
| |
| |
|
 |
Chapter 2.
The Windows Programming Model |
| |
|
 |
The Genesis of Windows |
| |
|
 |
Multitasking and Multithreading |
| |
|
 |
Programming the Microsoft Way: Hungarian Notation |
| |
|
 |
The World's Simplest Windows Program |
| |
|
 |
Real-World Windows Applications (Without Puck) |
| |
|
 |
The Windows Class |
| |
|
 |
Registering the Windows Class |
| |
|
 |
Creating the Window |
| |
|
 |
The Event Handler |
| |
|
 |
The Main Event Loop |
| |
|
 |
Making a Real-Time Event Loop |
| |
|
 |
Opening More Windows |
| |
|
 |
Summary |
| |
| |
|
 |
Chapter 3.
Advanced Windows Programming |
| |
|
 |
Using Resources |
| |
|
 |
Working with Menus |
| |
|
 |
Introduction to GDI (Graphics Device Interface) |
| |
|
 |
Handling Important Events |
| |
|
 |
Sending Messages Yourself |
| |
|
 |
Summary |
| |
| |
|
 |
Chapter 4.
Windows GDI, Controls, and Last-Minute Gift Ideas |
| |
|
 |
Advanced GDI Graphics |
| |
|
 |
Points, Lines, Polygons, and Circles |
| |
|
 |
More on Text and Fonts |
| |
|
 |
Timing Is Everything |
| |
|
 |
Playing with Controls |
| |
|
 |
Getting Information |
| |
|
 |
The T3D Game Console |
| |
|
 |
Summary |
| |
| |
| |
 |
Part II.
DirectX and 2D Fundamentals |
| |
|
 |
Chapter 5.
DirectX Fundamentals and the Dreaded COM |
| |
|
 |
DirectX Primer |
| |
|
 |
COM: Is It the Work of Microsoft… or Demons? |
| |
|
 |
Working with DirectX COM Objects |
| |
|
 |
The Future of COM |
| |
|
 |
Summary |
| |
| |
|
 |
Chapter 6.
First Contact: DirectDraw |
| |
|
 |
The Interfaces of DirectDraw |
| |
|
 |
Creating a DirectDraw Object |
| |
|
 |
Cooperating with Windows |
| |
|
 |
Getting into the Mode of Things |
| |
|
 |
The Subtleties of Color |
| |
|
 |
Building a Display Surface |
| |
|
 |
Summary |
| |
| |
|
 |
Chapter 7.
Advanced DirectDraw and Bitmapped Graphics |
| |
|
 |
Working with High-Color Modes |
| |
|
 |
Double Buffering |
| |
|
 |
Surface Dynamics |
| |
|
 |
Page Flipping |
| |
|
 |
Using the Blitter |
| |
|
 |
Clipper Fundamentals |
| |
|
 |
Working with Bitmaps |
| |
|
 |
Offscreen Surfaces |
| |
|
 |
Bitmap Rotation and Scaling |
| |
|
 |
Discrete Sampling Theory |
| |
|
 |
Color Effects |
| |
|
 |
Manual Color Transforms and Lookup Tables |
| |
|
 |
The New DirectX Color and Gamma Controls Interface |
| |
|
 |
Mixing GDI and DirectX |
| |
|
 |
Getting the Lowdown on DirectDraw |
| |
|
 |
Using DirectDraw in Windowed Modes |
| |
|
 |
Summary |
| |
| |
|
 |
Chapter 8.
Vector Rasterization and 2D Transformations |
| |
|
 |
Drawing Lines |
| |
|
 |
Basic 2D Clipping |
| |
|
 |
Wireframe Polygons |
| |
|
 |
Transformations in the 2D Plane |
| |
|
 |
Introduction to Matrices |
| |
|
 |
Translation |
| |
|
 |
Scaling |
| |
|
 |
Rotation |
| |
|
 |
Solid Filled Polygons |
| |
|
 |
Collision Detection with Polygons |
| |
|
 |
More on Timing and Synchronization |
| |
|
 |
Scrolling and Panning |
| |
|
 |
Fake 3D Isometric Engines |
| |
|
 |
The T3DLIB1 Library |
| |
|
 |
The BOB (Blitter Object) Engine |
| |
|
 |
Summary |
| |
| |
|
 |
Chapter 9.
Uplinking with DirectInput and Force Feedback |
| |
|
 |
The Input Loop Revisited |
| |
|
 |
DirectInput Overture |
| |
|
 |
Going Deeper with Force Feedback |
| |
|
 |
Writing a Generalized Input System: T3DLIB2.CPP |
| |
|
 |
Summary |
| |
| |
|
 |
Chapter 10.
Sounding Off with DirectSound and DirectMusic |
| |
|
 |
Sound Programming on the PC |
| |
|
 |
And Then There Was Sound… |
| |
|
 |
Digital Versus MIDI—Sounds Great, Less Filling |
| |
|
 |
Sound Hardware |
| |
|
 |
Digital Recording: Tools and Techniques |
| |
|
 |
DirectSound on the Mic |
| |
|
 |
Starting Up DirectSound |
| |
|
 |
Primary and Secondary Sound Buffers |
| |
|
 |
Rendering Sounds |
| |
|
 |
Making DirectSound Talk Back |
| |
|
 |
Reading Sounds from Disk |
| |
|
 |
DirectMusic: The Great Experiment |
| |
|
 |
DirectMusic Architecture |
| |
|
 |
Starting Up DirectMusic |
| |
|
 |
Loading a MIDI Segment |
| |
|
 |
Manipulating MIDI Segments |
| |
|
 |
The T3DLIB3 Sound and Music Library |
| |
|
 |
Summary |
| |
| |
| |
 |
Part III.
Hardcore Game Programming |
| |
|
 |
Chapter 11.
Algorithms, Data Structures, Memory Management, and Multithreading |
| |
|
 |
Data Structures |
| |
|
 |
Algorithmic Analysis |
| |
|
 |
Recursion |
| |
|
 |
Trees |
| |
|
 |
Optimization Theory |
| |
|
 |
Making Demos |
| |
|
 |
Strategies for Saving the Game |
| |
|
 |
Implementing Multiple Players |
| |
|
 |
Multithreaded Programming Techniques |
| |
|
 |
Summary |
| |
| |
|
 |
Chapter 12.
Making Silicon Think with Artificial Intelligence |
| |
|
 |
Artificial Intelligence Primer |
| |
|
 |
Deterministic AI Algorithms |
| |
|
 |
Patterns and Basic Control Scripting |
| |
|
 |
Modeling Behavioral State Systems |
| |
|
 |
Modeling Memory and Learning with Software |
| |
|
 |
Planning and Decision Trees |
| |
|
 |
Pathfinding |
| |
|
 |
Advanced AI Scripting |
| |
|
 |
Artificial Neural Networks |
| |
|
 |
Genetic Algorithms |
| |
|
 |
Fuzzy Logic |
| |
|
 |
Building Real AI for Games |
| |
|
 |
Summary |
| |
| |
|
 |
Chapter 13.
Playing God: Basic Physics Modeling |
| |
|
 |
Fundamental Laws of Physics |
| |
|
 |
The Physics of Linear Momentum: Conservation and Transfer |
| |
|
 |
Modeling Gravity Effects |
| |
|
 |
The Evil Head of Friction |
| |
|
 |
Basic Ad Hoc Collision Response |
| |
|
 |
Real 2D Object-to-Object Collision Response (Advanced) |
| |
|
 |
Resolving the n-t Coordinate System |
| |
|
 |
Simple Kinematics |
| |
|
 |
Particle Systems |
| |
|
 |
Playing God: Constructing Physics Models for Games |
| |
|
 |
Summary |
| |
| |
|
 |
Chapter 14.
The Text Generation |
| |
|
 |
What Is a Text Game? |
| |
|
 |
How Do Text Games Work? |
| |
|
 |
Getting Input from the Outside World |
| |
|
 |
Language Analysis and Parsing |
| |
|
 |
Putting All the Pieces Together |
| |
|
 |
Implementing Sight, Sound, and Smell |
| |
|
 |
Making It Real-Time |
| |
|
 |
Error Handling |
| |
|
 |
Creeping Around with Shadow Land |
| |
|
 |
The Language of Shadow Land |
| |
|
 |
Building and Playing Shadow Land |
| |
|
 |
Summary |
| |
| |
|
 |
Chapter 15.
Putting It All Together: You Got Game! |
| |
|
 |
The Initial Design of Outpost |
| |
|
 |
The Tools Used to Write the Game |
| |
|
 |
The Game Universe: Scrolling in Space |
| |
|
 |
The Player's Ship: "The Wraith" |
| |
|
 |
The Asteroid Field |
| |
|
 |
The Enemies |
| |
|
 |
The Power-Ups |
| |
|
 |
The HUDS |
| |
|
 |
The Particle System |
| |
|
 |
Playing the Game |
| |
|
 |
Compiling Outpost |
| |
|
 |
Epilogue |
| |
| |
| |
 |
Part IV.
Appendixes |
| |
|
 |
Appendix A.
What's on the CD-ROMs |
| |
|
 |
Appendix B.
Installing DirectX and Using the C/C++ Compiler |
| |
|
 |
Using the C/C++ Compiler |
| |
| |
|
 |
Appendix C.
Math and Trigonometry Review |
| |
|
 |
Trigonometry |
| |
|
 |
Vectors |
| |
| |
|
 |
Appendix D.
C++ Primer |
| |
|
 |
What Is C++? |
| |
|
 |
The Minimum You Need to Know About C++ |
| |
|
 |
New Types, Keywords, and Conventions |
| |
|
 |
Memory Management |
| |
|
 |
Stream I/O |
| |
|
 |
Classes |
| |
|
 |
The Scope Resolution Operator |
| |
|
 |
Function and Operator Overloading |
| |
|
 |
Summary |
| |
| |
|
 |
Appendix E.
Game Programming Resources |
| |
|
 |
Game Programming Sites |
| |
|
 |
Download Points |
| |
|
 |
2D/3D Engines |
| |
|
 |
Game Programming Books |
| |
|
 |
Microsoft DirectX Multimedia Exposition |
| |
|
 |
Usenet Newsgroups |
| |
|
 |
Keeping Up with the Industry: Blues News |
| |
|
 |
Game Development Magazines |
| |
|
 |
Game Web Site Developers |
| |
|
 |
Xtreme Games LLC |
| |
| |
|
 |
Appendix F.
ASCII Tables |
| |
| |
 |
Index |