|
 |
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 |