| |
| |
Introduction | |
| |
| |
| |
Working with This Book | |
| |
| |
| |
Preparing for the Book | |
| |
| |
DirectX | |
| |
| |
Setting Up the Compiler | |
| |
| |
General Windows Programming | |
| |
| |
Understanding the Program Flow | |
| |
| |
Modular Programming | |
| |
| |
States and Processes | |
| |
| |
Handling Application Data | |
| |
| |
Building an Application Framework | |
| |
| |
Structuring a Project | |
| |
| |
Wrapping Up Preparations | |
| |
| |
| |
DirectX Basics | |
| |
| |
| |
Drawing with DirectX Graphics | |
| |
| |
The Heart of 3-D Graphics | |
| |
| |
Getting Started with DirectX Graphics | |
| |
| |
The Math of 3-D | |
| |
| |
Getting Down to Drawing | |
| |
| |
Using Texture Maps | |
| |
| |
Alpha Blending | |
| |
| |
Using Fonts | |
| |
| |
Billboards | |
| |
| |
Particles | |
| |
| |
Depth Sorting and Z-Buffering | |
| |
| |
Working with Viewports | |
| |
| |
Working with Meshes | |
| |
| |
Meshes with D3DX | |
| |
| |
Wrapping Up Graphics | |
| |
| |
| |
Interacting with DirectInput | |
| |
| |
Introducing Input Devices | |
| |
| |
Using DirectInput | |
| |
| |
Employing DirectInput Devices | |
| |
| |
Using DirectInput with the Keyboard | |
| |
| |
Using DirectInput with the Mouse | |
| |
| |
Using DirectInput with Joysticks | |
| |
| |
Wrapping Up Input | |
| |
| |
| |
Playing Sound and Music with DirectX Audio and DirectShow | |
| |
| |
Sound Basics | |
| |
| |
Understanding DirectX Audio | |
| |
| |
Using DirectSound | |
| |
| |
Working with DirectMusic | |
| |
| |
Joining the MP3 Revolution | |
| |
| |
Wrapping Up Sound | |
| |
| |
| |
Networking with DirectPlay | |
| |
| |
Understanding Networking | |
| |
| |
Introducing DirectPlay | |
| |
| |
Initializing a Network Object | |
| |
| |
Using Addresses | |
| |
| |
Using Message Handlers | |
| |
| |
Configuring Session Information | |
| |
| |
Working with Servers | |
| |
| |
Working with Clients | |
| |
| |
Wrapping Up Networking | |
| |
| |
| |
Creating the Game Core | |
| |
| |
Understanding the Core Concept | |
| |
| |
The System Core | |
| |
| |
The Graphics Core | |
| |
| |
The Input Core | |
| |
| |
The Sound Core | |
| |
| |
The Network Core | |
| |
| |
Wrapping Up the Game Core | |
| |
| |
| |
Role Playing Game Programming | |
| |
| |
| |
Using 2-D Graphics | |
| |
| |
Understanding Tiles and Maps | |
| |
| |
Using Tiles with DirectX | |
| |
| |
A Basic Tile Engine | |
| |
| |
Angled Tile Engine | |
| |
| |
Big Bitmap Engines | |
| |
| |
Wrapping Up 2-D Graphics | |
| |
| |
| |
Creating 3-D Graphics Engines | |
| |
| |
Meshes as Levels | |
| |
| |
Introducing the Viewing Frustum | |
| |
| |
Developing an Advanced 3-D Engine | |
| |
| |
Adding 3-D Objects to the World | |
| |
| |
Collision Detection with Meshes | |
| |
| |
Using Sky Boxes | |
| |
| |
Wrapping Up 3-D Graphics | |
| |
| |
| |
Mixing 2-D and 3-D Graphics Engines | |
| |
| |
Mixing the Two Dimensions | |
| |
| |
Using 2-D Objects in a 3-D World | |
| |
| |
Adding 3-D Objects to a 2-D World | |
| |
| |
Wrapping Up Mixed Engines | |
| |
| |
| |
Implementing Scripts | |
| |
| |
Understanding Scripts | |
| |
| |
Creating a Mad Lib Script System | |
| |
| |
Working with the MLS Editor | |
| |
| |
Executing Mad Lib Scripts | |
| |
| |
Applying Scripts to Games | |
| |
| |
Wrapping Up Scripting | |
| |
| |
| |
Defining and Using Objects | |
| |
| |
Defining Objects for Your Game | |
| |
| |
The Master Item List | |
| |
| |
Managing Items with Inventory Control Systems | |
| |
| |
Wrapping Up Objects and Inventory | |
| |
| |
| |
Controlling Players and Characters | |
| |
| |
Players, and Characters, and Monsters, Oh My! | |
| |
| |
Conversation Among Characters | |
| |
| |
Scripting and Characters | |
| |
| |
Resource Management | |
| |
| |
Working with Magic and Spells | |
| |
| |
Combat and Characters | |
| |
| |
Building the Master Character List | |
| |
| |
Creating a Character Controller Class | |
| |
| |
Demonstrating Characters with the Chars Demo | |
| |
| |
Wrapping Up Characters | |
| |
| |
| |
Working with Maps and Levels | |
| |
| |
Placing Characters on the Map | |
| |
| |
Using Map Triggers | |
| |
| |
Blocking the Path with Barriers | |
| |
| |
Using Auto Maps | |
| |
| |
Wrapping Up Maps and Levels | |
| |
| |
| |
Creating Combat Sequences | |
| |
| |
Designing External Combat Sequences | |
| |
| |
Developing the Combat Sequence | |
| |
| |
Using Battle Arrangements | |
| |
| |
Wrapping Up Combat Sequences | |
| |
| |
| |
Getting Online with Multiplayer Gaming | |
| |
| |
Maddening Multiplayer Mayhem | |
| |
| |
Multiplayer Game Design | |
| |
| |
Creating a Multiplayer Game Architecture | |
| |
| |
Working with Game Servers | |
| |
| |
Working with Game Clients | |
| |
| |
Wrapping Up Multiplayer Gaming | |
| |
| |
| |
The Finishing Touches | |
| |
| |
| |
Putting Together a Full Game | |
| |
| |
Designing the Sample Game | |
| |
| |
Programming the Sample Game | |
| |
| |
Wrapping Up Creating Games | |
| |
| |
| |
Appendixes | |
| |
| |
| |
Bibliography | |
| |
| |
Recommended Reading | |
| |
| |
Getting Help on the Web | |
| |
| |
| |
What's on the CD-ROM | |
| |
| |
DirectX 9.0 SDK | |
| |
| |
GoldWave Version 5, Trial Version | |
| |
| |
Paint Shop Pro 8, Trial Version | |
| |
| |
gameSpace Light | |
| |
| |
| |
Glossary | |
| |
| |
Index | |