From a purely technical standpoint, game code can be divided into two large portions. A sizable part of the code deals with gameplay-related issues: controlling the interaction, artificial intelligence, scripts, and so on. This is the game logic section, and I will devote the first half of the book to it. We will then move on to presentation techniques: graphics, audio, and generally speaking, all that makes games a rich multimedia experience. For the first part of the book, we will be mainly working in plain C/C++ code. Then, for the second part, we will use a variety of tools and libraries such as OpenGL or DirectX. What follows is a rundown of the book's contents.
Part I: Gameplay Programming
Chapter 1, "Chronology of Game Programming," provides a bit of historical perspective. It presents a brief overview of how game development technology has evolved since the dawn of the industry and includes platform examples.
Chapters 2 through 4, "Game Architecture," "Data Structures and Algorithms," and "Design Patterns," are all concerned with macro-level code analysis. They cover such topics as the structure of game code, popular data structures, and design patterns.
Chapter 5, "User Input," covers just that the handling of interaction from the player.
Chapters 6 through 9 "Fundamental AI Technologies," "Action-Oriented AI," "Tactical AI," and "Scripting," deal with artificial intelligence topics. Fundamental algorithms, action and strategic AI, artificial life, and scripting techniques are explained in these chapters.
Chapter 10, "Network Programming," delves into the issues involved with networked games. It addresses multiplayer programming from the client and server perspective, and massively multiplayer games.
Part II: Engine Programming
Chapters 11 to 15, "2D Programming," "3D Pipeline Overview," "Indoors Rendering," "Outdoors Algorithms," and "Character Animation," cover graphics engine topics such as rendering pipelines, starting with generic designs and then later moving on to indoors and outdoors rendering algorithms.
Chapters 16 through 18, "Cinematography," "Shading," and "Texture Mapping," are concerned with look and feel. This includes setting cameras and lighting, and applying different texture techniques to the geometry.
Chapters 19 to 21, "Particle Systems," "Organic Rendering," and "Procedural Techniques," have to do with complex rendering scenarios. These chapters deal with three popular subjects: particle systems, organic rendering techniques for nature simulation, and procedural/shader-based approaches.
Chapter 22, "Geometrical Algorithms," covers geometric tests, tests for collision detection, geometry simplification, and so on.
Part III: Appendices
Appendix A, "Performance Tuning," covers optimization. Performance tuning techniques are discussed in order to ensure maximum performance of your games.
Appendix B, "OpenGL," and Appendix C, "Direct3D," address APIs. Here we will explore OpenGL 1.4 and DirectX 9.
Appendix D, "Some Math Involved," provides an overview and review of some of the math that is used in game programming.
Appendix E, "Further Reading," supplies sources of further information should you want to pursue certain topics in more depth.