
GAME PROGRAMMING IN C++
STARTTO FINISH
By: Erik Yuzwa
Multi-Item Pack | 11 January 2006 | Edition Number 1
Sorry, we are not able to source the book you are looking for right now.
We did a search for other books with a similar title, however there were no matches. You can try selecting from a similar category, click on the author's name, or use the search box above to find your book.
| Acknowledgments | p. xix |
| Preface | p. xxi |
| Game Technologies | p. 1 |
| Common License Agreements | p. 1 |
| Some Helpful Technologies | p. 3 |
| Concurrent Versioning System (CVS) | p. 7 |
| Using CVS | p. 9 |
| Creating the SuperAsteroidArena Project | p. 9 |
| Introduction to Doxygen | p. 14 |
| Introduction to InnoSetup | p. 16 |
| The Standard Template Library | p. 23 |
| Std::string | p. 23 |
| Std::vector | p. 24 |
| Std::map | p. 25 |
| Chapter Exercises | p. 27 |
| Summary | p. 27 |
| Design Fundamentals | p. 29 |
| What Is a Game Design? | p. 29 |
| Classic Waterfall Software Design | p. 30 |
| Iterative Software Design | p. 31 |
| Principles of Agile Design | p. 32 |
| When to Use Agile | p. 33 |
| Introduction to the Unified Modeling Language | p. 33 |
| Basic Class Notation | p. 34 |
| Visibility Notation | p. 35 |
| Comment/Note Notation | p. 35 |
| Modeling Class Relationships | p. 36 |
| Generalization Relationship | p. 37 |
| Software Reusability | p. 38 |
| Code Reuse | p. 38 |
| Design Reuse | p. 38 |
| Anatomy of a Game | p. 44 |
| Initialization Phase | p. 44 |
| Process Phase | p. 45 |
| Destruction Phase | p. 46 |
| The SuperAsteroidArena Design Document | p. 46 |
| Drafting a Project Overview | p. 46 |
| What Type or Genre of Game Is It? | p. 47 |
| Who Is Your Audience? | p. 48 |
| Why Make the Game? | p. 49 |
| What Do You Want To See? | p. 49 |
| What Does It Offer? | p. 49 |
| Draft an Initial List of Timeboxes | p. 50 |
| Who Is Involved? | p. 51 |
| Budget Concerns | p. 51 |
| Demo versus Registered Features | p. 52 |
| Chapter Exercises | p. 53 |
| Summary | p. 53 |
| Introduction to SDL and Windows | p. 55 |
| Introduction to the Simple DirectMedia Layer | p. 55 |
| Why Use SDL Instead of DirectX? | p. 56 |
| SDL "Hello World" | p. 56 |
| Creating the EngineCore | p. 60 |
| Initializing SDL | p. 61 |
| The SDL/Windows Event Queue | p. 62 |
| Cleaning Up SDL | p. 64 |
| Big Endian versus Little Endian | p. 65 |
| Adding the FileLogger | p. 65 |
| Using Windows Initialization Files | p. 67 |
| The Component Object Model | p. 69 |
| The IUnknown Object | p. 71 |
| Introduction to Dynamically Linked Libraries | p. 73 |
| Chapter Exercises | p. 74 |
| Summary | p. 75 |
| Introduction to the Peon Engine | p. 77 |
| Basic Engine Structure | p. 77 |
| Introduction to Peon | p. 79 |
| Introduction to Some Peon Components | p. 80 |
| Building Upon the Foundation | p. 82 |
| Managing State Information | p. 82 |
| Working on the First Timebox | p. 83 |
| Creating the New Instances of IApplicationState | p. 85 |
| Timebox Evaluation | p. 86 |
| Chapter Exercises | p. 86 |
| Summary | p. 87 |
| Graphics Programming Mathematics | p. 89 |
| The Cartesian Coordinate System | p. 89 |
| Fixed Function Geometry Pipeline | p. 90 |
| Introduction to Vectors | p. 92 |
| Common Vector Operations | p. 93 |
| Introduction to Matrices | p. 95 |
| The OpenGL Matrix Stacks | p. 95 |
| Identity Matrix | p. 96 |
| Matrix Addition and Subtraction | p. 97 |
| Matrix Multiplication | p. 98 |
| Coordinate Transformations | p. 99 |
| Scaling Transform | p. 99 |
| Translation Transform | p. 99 |
| Rotation Transform | p. 100 |
| Matrix Concatenation | p. 102 |
| Basic Camera/View Orientation | p. 103 |
| Projection Transformations | p. 104 |
| Create a Basic Camera | p. 105 |
| Gimbal Lock | p. 106 |
| Quaternions | p. 107 |
| Basic Quaternion Algorithm | p. 108 |
| Chapter Exercises | p. 109 |
| Summary | p. 109 |
| Creating an OpenGL Renderer | p. 111 |
| How Does OpenGL Operate? | p. 112 |
| OpenGL and Installable Client Drivers (ICDs) | p. 112 |
| Understanding the OpenGL Architecture | p. 113 |
| Defining the SceneRenderer | p. 114 |
| Loading the OpenGL Device Using SDL | p. 116 |
| Working with OpenGL Surfaces | p. 118 |
| Cathode Ray Tube Monitors and Phosphors | p. 119 |
| Clearing the Device | p. 120 |
| Flipping the Device | p. 121 |
| Unloading the Device | p. 121 |
| The OpenGL State Machine | p. 122 |
| Saving and Restoring State Information | p. 122 |
| Rendering Primitives | p. 123 |
| Rendering Vertices with the SceneRenderer | p. 125 |
| Texture Mapping | p. 129 |
| Creating an OpenGL Texture | p. 129 |
| Using the Texture Map | p. 133 |
| Using the SceneTexture | p. 133 |
| Rendering Text | p. 135 |
| OpenGL Display Lists | p. 135 |
| Storing the Font Characters | p. 136 |
| The SceneFont in Action | p. 138 |
| Printing Text | p. 139 |
| Cleaning Up | p. 139 |
| Rendering a Simple Cube | p. 140 |
| Moving the Cube | p. 142 |
| Rendering the Cube | p. 142 |
| Working with Fog | p. 143 |
| BasicFog Demo | p. 144 |
| Chapter Exercises | p. 144 |
| Summary | p. 145 |
| More OpenGL Techniques | p. 147 |
| Lighting and Materials | p. 147 |
| Defining Surface Normals | p. 149 |
| Adding Light Support to the SceneRenderer | p. 150 |
| Implementing Light Support in SceneRenderer | p. 152 |
| Sample Demonstration | p. 154 |
| Alpha-Blending and Transparencies | p. 154 |
| Sample Demonstration | p. 155 |
| Vertex Arrays | p. 156 |
| The OpenGL Extension Mechanism | p. 158 |
| Multitexturing | p. 160 |
| Working with the Texture Units | p. 161 |
| Chapter Exercises | p. 162 |
| Summary | p. 163 |
| Scene Geometry Management | p. 165 |
| The Depth Buffer | p. 166 |
| View Frustum Culling | p. 166 |
| Basic Scene Hierarchy Management | p. 170 |
| Sorting Rendering States | p. 172 |
| Animation Rendering | p. 172 |
| Introduction to the Peon Scene Graph | p. 173 |
| Scene Graph States | p. 175 |
| Scene Graph Passes | p. 175 |
| Scene Graph Traversal | p. 176 |
| Binary Space Partitioning Trees | p. 176 |
| Octree Data Structure | p. 176 |
| Building Your Octree | p. 177 |
| The Occluder Query | p. 177 |
| Occlusion Query Algorithm | p. 179 |
| Cleanup | p. 180 |
| Chapter Exercises | p. 180 |
| Summary | p. 181 |
| Graphics Timebox | p. 183 |
| Timebox Requirements | p. 183 |
| The LogoState | p. 184 |
| The MainMenuState | p. 184 |
| Loading Common Data | p. 185 |
| Rendering the Starfield | p. 186 |
| Rendering Text to the Player | p. 187 |
| Creating the Graphical User Interface | p. 187 |
| The ActiveState | p. 188 |
| Timebox Evaluation | p. 188 |
| Chapter Exercises | p. 189 |
| Summary | p. 189 |
| Working with Input Devices | p. 191 |
| Introduction to Input Using SDL | p. 191 |
| Using the Keyboard | p. 192 |
| Using the Mouse | p. 193 |
| Using the Joystick | p. 195 |
| Joystick Enumeration | p. 195 |
| Opening a Joystick | p. 196 |
| Processing Joystick Events | p. 196 |
| Cleaning up the Joystick | p. 198 |
| Adding Input Support to Peon | p. 198 |
| Chapter Exercises | p. 200 |
| Summary | p. 200 |
| Working With Sound | p. 201 |
| Sound Mechanics | p. 201 |
| Digitized Sound | p. 202 |
| Sound Layers | p. 202 |
| Introduction to SDL_Mixer | p. 203 |
| Working with Audio Music Data | p. 203 |
| Cleaning Up | p. 206 |
| Working with Audio Sound Effects Data | p. 206 |
| Sound Effect Playback | p. 207 |
| Cleaning Up | p. 208 |
| Introduction to OpenAL | p. 208 |
| Intializing the OpenAL Device Context | p. 209 |
| Loading Sound Effects | p. 209 |
| Working with the Source Object | p. 210 |
| Positioning the Listener Object | p. 212 |
| Playing the Sound | p. 213 |
| Stopping the Sound | p. 213 |
| Shutting Down the OpenAL Context | p. 213 |
| Playing Ogg-Vorbis Data with OpenAL | p. 214 |
| Playing the Ogg Buffer | p. 216 |
| Chapter Exercises | p. 216 |
| Summary | p. 217 |
| Input and Sound Timebox | p. 219 |
| Timebox Requirements | p. 219 |
| Required Input Events | p. 220 |
| Rotating the Player's Ship | p. 221 |
| Activating the Player's Engines | p. 222 |
| Using the AudioEngine | p. 223 |
| Loading Sounds | p. 224 |
| Playing Sounds | p. 225 |
| Unloading Sounds | p. 225 |
| Timebox Evaluation | p. 226 |
| Chapter Exercises | p. 226 |
| Summary | p. 226 |
| Collision Detection and Physics Techniques | p. 227 |
| Prioritize Speed | p. 227 |
| Axis-Aligned Bounding Box Detection | p. 228 |
| Bounding Sphere Collision Detection | p. 230 |
| Plane Collisions | p. 231 |
| Collision of Plane versus AABB | p. 232 |
| Ray Collisions | p. 232 |
| Collision of Plane versus Ray | p. 233 |
| Implementing Physics | p. 234 |
| Using the neSimulator | p. 235 |
| Working with Geometry | p. 237 |
| Running the Simulation with Tokamak | p. 238 |
| Rendering the Geometry | p. 238 |
| Cleaning Up | p. 239 |
| Chapter Exercises | p. 240 |
| Summary | p. 240 |
| Introduction to Networking | p. 241 |
| Networking Basics | p. 241 |
| Peer-to-Peer | p. 242 |
| Client-Server | p. 243 |
| TCP versus UDP | p. 244 |
| DirectPlay and Winsock | p. 245 |
| SDL_Net | p. 246 |
| Starting a Basic Server | p. 247 |
| Starting a Basic Client | p. 250 |
| Sending and Receiving Data | p. 253 |
| Non-Blocking Sockets | p. 254 |
| Using SDLNet_CheckSockets | p. 254 |
| TCP/IP versus UDP (Part II) | p. 259 |
| Network Address Translation | p. 260 |
| Client-Server Prediction/Authentication | p. 261 |
| Dead-Reckoning | p. 261 |
| Chapter Exercises | p. 261 |
| Summary | p. 262 |
| Networking Timebox | p. 263 |
| Introduction to ReplicaNet | p. 263 |
| Network Topology Design | p. 264 |
| Networking Timebox | p. 264 |
| Making Additions to Peon | p. 265 |
| Creating the NetStream Object | p. 265 |
| Working with Message Types | p. 266 |
| Updating Players | p. 266 |
| Session Hosting/Joining | p. 267 |
| Players Tend to Move Around | p. 268 |
| Players Want to Fire | p. 268 |
| Timebox Evaluation | p. 268 |
| Chapter Exercises | p. 269 |
| Summary | p. 269 |
| Introduction to Models | p. 271 |
| Model Generation | p. 271 |
| Updating the MeshFactory in Peon | p. 272 |
| Creating a 3DS Importer | p. 273 |
| Loading the 3DS Model Data | p. 276 |
| Rendering the Model | p. 277 |
| Cleaning Up | p. 279 |
| Model Animation | p. 279 |
| The MD3 File Format | p. 280 |
| The AnimatedMeshFactory | p. 284 |
| Introduction to Collada | p. 284 |
| Chapter Exercises | p. 285 |
| Summary | p. 285 |
| Animation and Special Effects | p. 287 |
| Billboarding | p. 287 |
| Understanding the View Matrix (Recap) | p. 288 |
| Extracting the Vectors | p. 288 |
| Skyboxes (Environment Mapping) | p. 291 |
| Object Picking/Selection | p. 294 |
| Particle Systems | p. 298 |
| Updating the Emitter | p. 300 |
| Rendering the Emitter | p. 301 |
| Particle System II: Point Sprites | p. 302 |
| Billboard Animation | p. 305 |
| Loading New Frames | p. 306 |
| Updating Frames | p. 307 |
| Creating a Shockwave | p. 308 |
| Initializing the Shockwave | p. 309 |
| Updating the Shockwave | p. 310 |
| Rendering the Shockwave | p. 311 |
| Taking a Screen Shot | p. 312 |
| Chapter Exercises | p. 314 |
| Summary | p. 315 |
| Introduction to the OpenGL Shading Language (GLSL) | p. 317 |
| Some History of Shading Languages | p. 318 |
| Cg | p. 319 |
| The OpenGL Shading Language (GLSL) | p. 319 |
| The Vertex Processor | p. 320 |
| The Fragment Processor | p. 321 |
| GLSL Data Types | p. 321 |
| Shader Inputs and Outputs | p. 322 |
| Built-In Types | p. 322 |
| OpenGL Shading Language Syntax | p. 323 |
| Checking for Shader Support | p. 325 |
| Loading the Shader Source | p. 327 |
| Creating a Shader Program | p. 328 |
| The Shader InfoLog | p. 329 |
| Uniform and Attribute Variables | p. 330 |
| Rendering with Shaders | p. 330 |
| Shader Object Cleanup | p. 331 |
| Shader Validation Using GLSLvalidate | p. 331 |
| Chapter Exercises | p. 332 |
| Summary | p. 333 |
| Introduction to Scripting | p. 335 |
| Introduction to Scripting | p. 335 |
| Introduction to Lua | p. 336 |
| Using the Interpreter | p. 338 |
| A Simple Script | p. 339 |
| A Simple Script File | p. 340 |
| Introducing Luac | p. 341 |
| Lua Stack | p. 341 |
| Calling a Lua Function | p. 342 |
| Using Lua to Position Objects | p. 343 |
| Updating the Object Position | p. 344 |
| Chapter Exercises | p. 345 |
| Summary | p. 345 |
| Polish Timebox | p. 347 |
| Timebox Goals | p. 347 |
| Adding Scripting Support | p. 348 |
| Adding Shader Support | p. 349 |
| Timebox Evaluation | p. 350 |
| Chapter Exercises | p. 350 |
| Summary | p. 350 |
| Finishing Tips and Tricks | p. 351 |
| Simple Suggestions | p. 351 |
| Game Play Testing | p. 353 |
| Installation Scripts | p. 354 |
| Using InnoSetup | p. 354 |
| Beta Testing or Quality Assurance Testing | p. 356 |
| User Instruction Manual | p. 357 |
| User Manual Checklist | p. 358 |
| Game Asset Compression/Encryption | p. 359 |
| Registration/Patch/Updating Mechanism | p. 359 |
| Final Things to Remember | p. 360 |
| Chapter Exercises | p. 361 |
| Summary | p. 361 |
| Setting Up the SDL and the Compiler | p. 363 |
| Installing SDL | p. 363 |
| Microsoft Visual Studio 6.0 | p. 363 |
| Microsoft Visual Studio .NET 2003 | p. 364 |
| Microsoft Visual Studio .NET 2005 (Beta 2) | p. 364 |
| Debugging Tools | p. 365 |
| OutputDebugString | p. 365 |
| Assert | p. 366 |
| gDEBugger | p. 366 |
| GLSL Validation Tool | p. 367 |
| ASCII Table | p. 369 |
| Windows Vista and OpenGL | p. 371 |
| About the CD-ROM | p. 373 |
| Required Software | p. 374 |
| System Requirements | p. 374 |
| Installation | p. 374 |
| Author Support | p. 374 |
| Further Resources | p. 375 |
| License Specific | p. 375 |
| OpenGL Specific | p. 375 |
| SDL Specific | p. 376 |
| DirectX Specific | p. 376 |
| Audio Programming | p. 376 |
| Game Design | p. 376 |
| Network Programming | p. 377 |
| Scene Graphs | p. 377 |
| Agile Specific | p. 377 |
| Game Portal Sites | p. 378 |
| Table of Contents provided by Ingram. All Rights Reserved. |
ISBN: 9781584504320
ISBN-10: 1584504323
Series: GAME DEVELOPMENT SERIES
Published: 11th January 2006
Format: Multi-Item Pack
Language: English
Number of Pages: 392
Audience: Professional and Scholarly
Publisher: Cengage Learning, Inc
Country of Publication: GB
Edition Number: 1
Dimensions (cm): 23.2 x 18.9 x 2.5
Weight (kg): 0.87
Shipping
| Standard Shipping | Express Shipping | |
|---|---|---|
| Metro postcodes: | $9.99 | $14.95 |
| Regional postcodes: | $9.99 | $14.95 |
| Rural postcodes: | $9.99 | $14.95 |
Orders over $89.00 qualify for free shipping.
How to return your order
At Booktopia, we offer hassle-free returns in accordance with our returns policy. If you wish to return an item, please get in touch with Booktopia Customer Care.
Additional postage charges may be applicable.
Defective items
If there is a problem with any of the items received for your order then the Booktopia Customer Care team is ready to assist you.
For more info please visit our Help Centre.
You Can Find This Book In

The Unofficial Sims Cookbook
From Baked Alaska to Silly Gummy Bear Pancakes, 85+ Recipes to Satisfy the Hunger Need
Hardcover
RRP $39.99
$28.75
OFF























