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