Game Programming Gems TOC (ZZ)
2014-07-18 17:12
295 查看
Game Programming Gems 1
SECTION 1 PROGRAMMING TECHNIQUES
//z 2014-07-18 17:12:26 L.166'24454 BG57IV3@XCL T2649809119.K.F1752546504[T8,L150,R7,V167]
1.0 | The Magic of Data-Driven Design |
1.1 | Object-Oriented Programming and Design Techniques |
1.2 | Fast Math Using Template Metaprogramming |
1.3 | An Automatic Singleton Utility |
1.4 | Using the STL in Game Programming |
1.5 | A Generic Function-Binding Interface |
1.6 | A Generic Handle-Based Resource Manager |
1.7 | Resource and Memory Management |
1.8 | Fast Data Load Trick |
1.9 | Frame-Based Memory Allocation |
1.10 | Simple, Fast Bit Arrays |
1.11 | A Network Protocol for Online Games |
1.12 | Squeezing More Out of Assert |
1.13 | Stats: Real-Time Statistics and In-Game Debugging |
1.14 | Real-Time In-Game Profiling |
SECTION 2 MATHEMATICS
2.0 | Predictable Random Numbers |
2.1 | Interpolation Methods |
2.2 | Integrating the Equations of Rigid Body Motion |
2.3 | Polynomial Approximations to Trigonometric Functions |
2.4 | Using Implicit Euler Integration for Numerical Stability |
2.5 | Wavelets: Theory and Compression |
2.6 | Interactive Simulation of Water Surfaces |
2.7 | Quaternions for Game Programming |
2.8 | Matrix-Quaternion Conversions |
2.9 | Interpolating Quaternions |
2.10 | The Shortest Arc Quaternion |
SECTION 3 ARTIFICIAL INTELLIGENCE
3.0 | Designing a General Robust AI Engine |
3.1 | A Finite-State Machine Class |
3.2 | Game Trees |
3.3 | The Basics of A* for Path Planning |
3.4 | A* Aesthetic Optimizations |
3.5 | A* Speed Optimizations |
3.6 | Simplified 3D Movement and Pathfinding Using Navigation Meshes |
3.7 | Flocking: A Simple Technique for Simulating Group Behavior |
3.8 | Fuzzy Logic for Video Games |
3.9 | A Neural-Net Primer |
SECTION 4 POLYGONOL TECHNIQUES
4.0 | Optimizing Vertex Submissions for OpenGL |
4.1 | Tweaking A Vertex’s Projected Depth Value |
4.2 | The Vector Camera |
4.3 | Camera Control Techniques |
4.4 | A Fast Cylinder-Frustum Intersection Test |
4.5 | 3D Collision Detection |
4.6 | Multi-Resolution Maps for Interaction Detection |
4.7 | Computing the Distance into a Sector |
4.8 | Object Occlusion Culling |
4.9 | Never Let ‘Em See You Pop - Issues in Geometric Level of Detail Selection |
4.10 | Octree Construction |
4.11 | Loose Octrees |
4.12 | View-Independent Progressive Meshing |
4.13 | Interpolated 3D Keyframe Animation |
4.14 | A Fast and Simple Skinning Techniques |
4.15 | Filling the Gaps - Advanced Animation Using Stitching and Skinning |
4.16 | Real-Time Realistic Terrain Generation |
4.17 | Fractal Terrain Generation - Fault Formation |
4.18 | Fractal Terrain Generation - Midpoint Displacement |
4.19 | Fractal Terrain Generation - Particle Deposition |
SECTION 5 PIXEL EFFECTS
5.0 | 2D Lens Flare |
5.1 | Using 3D Hardware for 2D Sprite Effects |
5.2 | Motif-Based Static Lighting |
5.3 | Simulated Real-Time Lighting Using Vertex Color Interpolation |
5.4 | Attenuation Maps |
5.5 | Advanced Texturing Using Texture Coordinate Generation |
5.6 | Hardware Bump Mapping |
5.7 | Ground-Plane Shadows |
5.8 | Real-Time Shadows on Complex Objects |
5.9 | Improving Environment-Mapped Reflection Using Glossy Prefiltering and the Fresnel Term |
5.10 | Convincing-Looking Glass for Games |
5.11 | Refraction Mapping for Liquids in Containers |
SECTION 6 APPENDIX
6.0 | The Matrix Utility Library |
6.1 | The Text Utility Library |
6.2 | About the CD-ROM |
Game Programming Gems 2
Preface | (xxi) |
About the Cover Image | (xxv) |
Author Bios | (xxvii) |
SECTION 1 GENERAL PROGRAMMING (1)
Introduction: General Programming | (3) | |
1.1 | Optimization for C++ Games | (5) |
1.2 | Inline Functions Versus Macros | (16) |
1.3 | Programming with Abstract Interfaces | (5) |
1.4 | Exporting C++ Classes from DLLs | (28) |
1.5 | Protect Yourself from DLL Hell and Missing OS Functions | (33) |
1.6 | Dynamic Type Information | (38) |
1.7 | A Property Class for Generic C++ Member Access | (46) |
1.8 | A Game Entity Factory | (51) |
1.9 | Adding Deprecation Facilities to C++ | (62) |
1.10 | A Drop-in Debug Memory Manager | (66) |
1.11 | A Built-in Game Profiling Module | (74) |
1.12 | Linear Programming Model for Windows-based Games | (80) |
1.13 | Stack Winding | (85) |
1.14 | Self-Modifying Code | (91) |
1.15 | File Management Using Resource Files | (100) |
1.16 | Game input Recording and Playback | (105) |
1.17 | A Flexible Text Parsing System | (112) |
1.18 | A Generic Tweaker | (118) |
1.19 | Genuine Random Number Generation | (127) |
1.20 | Using Bloom Filters to improve Computational Performance | (133) |
1.21 | 3ds max Skin Exporter and Animation Toolkit | (141) |
1.22 | Using Web Cameras in Video Games | (153) |
SECTION 2 MATHEMATICS (163)
Introduction: Mathematics | (165) | |
2.1 | Floating-Point Tricks: Improving Performance with IEEE Floating Point | (167) |
2.2 | Vector and Plane Tricks | (182) |
2.3 | Fast, Robust Intersection of 3D Line Segments | (191) |
2.4 | Inverse Trajectory Determination | (205) |
2.5 | The Parallel Transport Frame | (215) |
2.6 | Smooth C2 Quaternion-based Flythrough Paths | (220) |
2.7 | Recursive Dimensional CLustering: A Fast Algorithm for Collision Detection | (228) |
2.8 | Programming Fractals | (239) |
SECTION 3 ARTIFICIAL INTELLIGENCE (247)
Introduction: Artificial Intelligence | (249) | |
3.1 | Strategies for Optimizing AI | (251) |
3.2 | Micro-Threads for Game Object AI | (258) |
3.3 | Managing AI with Micro-Threads | (265) |
3.4 | An Architecture for RTS Command Queuing | (273) |
3.5 | A High-Performance Tile-Based Line-of-Sight and Search System | (279) |
3.6 | Influence Mapping | (287) |
3.7 | Strategic Assessment Techniques | (298) |
3.8 | Terrain Reasoning for 3D Action Games | (307) |
3.9 | Expanded Geometry for Points-of-Visibility Pathfinding | (317) |
3.10 | Optimizing Points-of-Visibility Pathfinding | (324) |
3.11 | Flocking with Teeth: Predators and Prey | (330) |
3.12 | A Generic Fuzzy State Machine in C++ | (337) |
3.13 | Imploding Combinatorial Explosion in a Fuzzy System | (342) |
3.14 | Using a Neutral Network in a Game: A Concrete Example | (351) |
SECTION 4 GEOMETRY MANAGEMENT (359)
Introduction: Geometry Management | (361) | |
4.1 | Comparison of VIPM Methods | (363) |
4.2 | Simplified Terrain Using Interlocking Tiles | (377) |
4.3 | Sphere Trees for Fast Visibility Culling, Ray Tracing and Range Searching | (384) |
4.4 | Compressed Axis-Aligned Bounding Box Trees | (388) |
4.5 | Direct Access Quadtree Lookup | (394) |
4.6 | Approximating Fish Tank Refractions | (402) |
4.7 | Rendering Print Resolution Screenshots | (406) |
4.8 | Applying Decals to Arbitrary Surfaces | (411) |
4.9 | Rendering Distans Scenery with Skyboxes | (416) |
4.10 | Self-Shadowing Characters | (421) |
4.11 | Classic Super Mario 64 Third-Person Control and Animation | (425) |
SECTION 5 GRAPHICS DISPLAY (433)
Introduction: Graphics Display | (435) | |
5.1 | Cartoon Rendering: Real-Time Silhouette Edge Detection and Rendering | (436) |
5.2 | Cartoon Rendering Using Texture Mapping and Programmable Vertex Shaders | (444) |
5.3 | Dynamix Per-Pixel Lighting Technique | (452) |
5.4 | Generating Procedural Clouds using 3D Hardware | (463) |
5.5 | Texture Masking for Faster Lens Flare | (474) |
5.6 | Practical Priority Buffer Shadows | (481) |
5.7 | Impostors: Adding Clutter | (488) |
5.8 | Operations for Hardware-Accelerated Procedural Texture Animation | (497) |
Game Programming Gems 3
Foreword | (xi) |
Preface | (xv) |
Acknowledgments | (xix) |
About the Cover Image | (xxi) |
Contributor Bios | (xxiii) |
SECTION 1 GENERAL PROGRAMMING (1)
Introduction | (3) | |
1.1 | Scheduling Game Events | (5) |
1.2 | An Object-Composition Game Framework | (15) |
1.3 | Finding Redeeming Value in C-Style Macros | (26) |
1.4 | Platform-Independent, Function-Binding Code Generator | (38) |
1.5 | Handle-Based Smart Pointers | (44) |
1.6 | Custom STL Allocators | (49) |
1.7 | Save Me Now | (59) |
1.8 | Autolists Design Pattern | (64) |
1.9 | Floating-Point Exception Handling | (69) |
1.10 | Programming a Game Design-Compliant Engine Using UML | (73) |
1.11 | Using Lex and Yacc To Parse Custom Data Files | (83) |
1.12 | Developing Games for a World Market | (92) |
1.13 | Real-Time Input and UI in 3D Games | (109) |
1.14 | Natural Selection: The Evolution of Pie Menus | (117) |
1.15 | Lightweight, Policy-Based Logging | (129) |
1.16 | Journaling Services | (136) |
1.17 | Real-Time Hierarchical Profiling | (146) |
SECTION 2 MATHEMATICS (153)
Introduction | (155) | |
2.1 | Fast Base-2 Functions for Logarithms and Random Number Generation | (157) |
2.2 | Using Vector Fractions for Exact Geometry | (160) |
2.3 | More Approximations to Trigonometric Functions | (170) |
2.4 | Quaternion Compression | (187) |
2.5 | Constrained Inverse Kinematics | (192) |
2.6 | Cellular Automata for Physical Modeling | (200) |
2.7 | Coping with Friction in Dynamic Simulations | (215) |
SECTION 3 ARTIFICIAL INTELLIGENCE (227)
Introduction | (229) | |
3.1 | Optimized Machine Learning with GoCap | (231) |
3.2 | Area Navigation: Expanding the Path-Finding Paradigm | (240) |
3.3 | Function Pointer-Based, Embedded Finite-State Machines | (256) |
3.4 | Terrain Analysis in an RTS-The Hidden Giant | (268) |
3.5 | An Extensible Trigger System for AI Agents, Objects, and Quests | (285) |
3.6 | Tactical Path-Finding with A | (294) |
3.7 | A Fast Approach to Navigation Meshes | (307) |
3.8 | Choosing a Relationship Between Path-Finding and Collision | (321) |
SECTION 4 GRAPHICS (333)
Introduction | (335) | |
4.1 | T-Junction Elimination and Retriangulation | (338) |
4.2 | Fast Heightfield Normal Calculation | (344) |
4.3 | Fast Patch Normals | (349) |
4.4 | Fast and Simple Occlusion Culling | (353) |
4.5 | Triangle Strip Creation, Optimizations, and Rendering | (359) |
4.6 | Computing Optimized Shadow Volumes for Complex Data Sets | (367) |
4.7 | Subdivision Surfaces for Character Animation | (372) |
4.8 | Improved Deformation of Bones | (384) |
4.9 | A Framework for Realistic Character Locomotion | (394) |
4.10 | A Programmable Vertex Shader Compiler | (404) |
4.11 | Billboard Beams | (413) |
4.12 | 3D Tricks for Isometric Engines | (417) |
4.13 | Curvature Simulation Using Normal Maps | (424) |
4.14 | Methods for Dynamic, Photorealistic Terrain Lighting | (433) |
4.15 | Cube Map Lighting Techniques | (444) |
4.16 | Procedural Texturing | (452) |
4.17 | Unique Textures | (459) |
4.18 | Textures as Lookup Tables for Per-Pixel Lighting Computations | (467) |
4.19 | Rendering with Handcrafted Shading Models | (477) |
SECTION 5 NETWORK AND MULTIPLAYER (485)
Introduction | (487) | |
5.1 | Minimizing Latency in Real-Time Strategy Games | (488) |
5.2 | Real-Time Strategy Network Protocol | (496) |
5.3 | A Flexible Simulation Architecture for Massively Multiplayer Games | (506) |
5.4 | Scaling Multiplayer Servers | (520) |
5.5 | Template-Based Object Serialization | (534) |
5.6 | Secure Sockets | (546) |
5.7 | A Network Monitoring and Simulation Tool | (557) |
5.8 | Creating Multiplayer Games with DirectPlay 8.1 | (561) |
5.9 | Wireless Gaming Using the Java Micro Edition | (573) |
SECTION 6 AUDIO (583)
Introduction | (585) | |
6.1 | Audio Compression with Ogg Vorbis | (587) |
6.2 | Creating a Compelling 3D Audio Environment | (595) |
6.3 | Obstruction Using Axis-Aligned Bounding Boxes | (600) |
6.4 | Using the Biquad Resonant Filter | (606) |
6.5 | Linear Predictive Coding for Voice Compression and Effects | (613) |
6.6 | The Stochastic Synthesis of Complex Sounds | (622) |
6.7 | Real-Time Modular Audio Processing for Games | (630) |
Appendix: About the CD-ROM | (639) |
Contents |
Game Programming Gems 4
Foreword | (xi) |
Preface | (xv) |
Acknowledgments | (xvii) |
About the Cover Image | (xix) |
Contributor Bios | (xxi) |
SECTION 1 GENERAL PROGRAMMING (1)
Introduction | (3) | |
1.1 | The Science of Debugging Games | (5) |
1.2 | An HTML-Based Logging and Debugging System | (19) |
1.3 | The Clock: Keeping Your Finger on the Pulse of the Game | (27) |
1.4 | Designing and Maintaining Large Cross-Platform Libraries | (35) |
1.5 | Fight Memory Fragmentation with Templated Freelists | (43) |
1.6 | A Generic Tree Container in C++ | (51) |
1.7 | The Beauty of Weak References and Null Objects | (61) |
1.8 | A System for Managing Game Entities | (69) |
1.9 | Address-Space Managed Dynamic Arrays for Windows and the Xbox | (85) |
1.10 | Critically Damped Ease-In/Ease-Out Smoothing | (95) |
1.11 | A Flexible, On-the-Fly Object Manager | (103) |
1.12 | Using Custom RTTI Properties to Stream and Edit Objects | (111) |
1.13 | Using XML without Sacrificing Speed | (125) |
SECTION 2 MATHEMATICS (137)
Introduction | (139) | |
2.1 | Zobrist Hash Using the Mersenne Twister | (141) |
2.2 | Extracting Frustum and Camera Information | (147) |
2.3 | Solving Accuracy Problems in Large World Coordinates | (157) |
2.4 | Nonuniform Splines | (171) |
2.5 | Using the Covariance Matrix for Better-Fitting Bounding Objects | (183) |
2.6 | The Jacobian Transpose Method for Inverse Kinematics | (193) |
SECTION 3 PHYSICS (205)
Introduction | (207) | |
3.1 | Ten Fingers of Death: Algorithms for Combat Killing | (209) |
3.2 | Vehicle Physics Simulation for CPU-Limited Systems | (221) |
3.3 | Writing a Verlet-Based Physics Engine | (231) |
3.4 | Constraints in Rigid Body Dynamics | (241) |
3.5 | Fast Contact Reduction for Dynamics Simulation | (253) |
3.6 | Interactive Water Surfaces | (265) |
3.7 | Fast Deformations with Multilayered Physics | (275) |
3.8 | Modal Analysis for Fast, Stable Deformation | (287) |
SECTION 4 ARTIFICIAL INTELLIGENCE (299)
Introduction | (301) | |
4.1 | Third-Person Camera Navigation | (303) |
4.2 | Narrative Combat: Using AI to Enhance Tension in an Action Game | 315 |
4.3 | NPC Decision Making: Dealing with Randomness | (325) |
4.4 | An Object-Oriented Utility-Based Decision Architecture | (337) |
4.5 | A Distributed-Reasoning Voting Architecture | (345) |
4.6 | Attractors and Repulsors | (355) |
4.7 | Advanced Wall Building for RTS Games | (365) |
4.8 | Artificial Neural Networks on Programmable Graphics Hardware | (373) |
SECTION 5 GRAPHICS (379)
Introduction | (381) | |
5.1 | Poster Quality Screenshots | (383) |
5.2 | GPU Shadow Volume Construction for Nonclosed Meshes | (393) |
5.3 | Perspective Shadow Maps | (399) |
5.4 | Combined Depth and ID-Based Shadow Buffers | (411) |
5.5 | Carving Static Shadows into Geometry | (427) |
5.8 | Techniques to Apply Team Colors to 3D Models | (451) |
5.9 | Fast Sepia Tone Conversion | (461) |
5.10 | Dynamic Gamma Using Sampled Scene Luminance | (465) |
5.11 | Heat and Haze Post-Processing Effects | (477) |
5.13 | Motion Capture Data Compression | (497) |
5.14 | Fast Collision Detection for 3D Bones-Based Articulated Characters | (503) |
5.15 | Terrain Occlusion Culling with Horizons | (515) |
SECTION 6 NETWORK AND MULTIPLAYER (529)
Introduction | (531) | |
6.1 | General Lobby Design and Development | (533) |
6.2 | Thousands of Clients per Server | (541) |
6.3 | Efficient MMP Game State Storage | (555) |
6.4 | Practical Application of Parallel-State Machines in a Client-Server Environment | (563) |
6.5 | Bit Packing: A Network Compression Technique | (571) |
6.6 | Time and Consistency Management for Multiserver-Based MMORPGs | (579) |
SECTION 7 AUDIO (591)
Introduction | (593) | |
7.1 | A Brief Introduction to OpenAL | (595) |
7.2 | A Simple Real-Time Lip-Synching System | (607) |
7.3 | Dynamic Variables and Audio Programming | (613) |
7.4 | Creating an Audio Scripting System | (621) |
7.5 | Implementing an Environmental Audio Solution Using EAX and ZoomFX | (633) |
7.6 | Controlling Real-Time Sound Synthesis from Game Physics | (649) |
APPENDIX: ABOUT THE CD-ROM | (657) |
INDEX | (659) |
Game Programming Gems 5
Foreword | (xi) |
Preface | (xv) |
About the Cover Image | (xix) |
Contributor Bios | (xxi) |
SECTION 1 GENERAL PROGRAMMING (1)
Introduction | (3) | |
1.1 | Context-Sensitive HUDs for Editors | (5) |
1.2 | Parsing Text Data in Games | (17) |
1.3 | Component Based Object Management | (25) |
1.4 | Using Templates for Reflection in C++ | (39) |
1.5 | Sphere Trees for Speedy BSPs | (55) |
1.6 | Improved Frustum Culling | (65) |
1.7 | Generic Pager | (79) |
1.8 | Large-Scale Stack-Based State Machines | (93) |
1.9 | CSG Construction Using BSP Trees | (103) |
1.10 | Building Lua into Games | (115) |
1.11 | Improving Freelists with Policy Based Design | (129) |
1.12 | A Real-Time Remote Debug Message Logger | (143) |
1.13 | A Transparent Class Saving and Loading Trick | (149) |
1.14 | An Effective Cache-Oblivious Implementation of the ABT Tree | (159) |
1.15 | Visual Design of State Machines | (169) |
1.16 | A Generic Component Library | (177) |
1.17 | Choose Your Path-A Menu System | (189) |
SECTION 2 MATHEMATICS (197)
Introduction | (199) | |
2.1 | Using Geometric Algebra for Computer Graphics | (201) |
2.2 | Minimal Acceleration Hermite Curves | (225) |
2.3 | Spline-Based Time Control for Animation | (233) |
2.4 | Faster Quaternion Interpolation Using Approximations | (247) |
2.5 | Minimax Numerical Approximation | (269) |
2.6 | Oblique View Frustums for Mirrors and Portals | (281) |
SECTION 3 ARTIFICIAL INTELLIGENCE (295)
Introduction | (297) | |
3.1 | Automatic Cover Finding with Navigation Meshes | (299) |
3.2 | Fast Target Ranking Using an Artificial Potential Field | (307) |
3.3 | Using Lanchester Attrition Models to Predict the Results of Combat | (317) |
3.4 | Implementing Practical Planning for Game AI | (329) |
3.5 | Optimizing a Decision Tree Query Algorithm for Multithreaded Architectures | (345) |
3.6 | Parallel AI Development with PVM | (353) |
3.7 | Beyond A | (367) |
3.8 | Advanced Pathfinding with Minimal Replanning Cost: Dynamic A Star (D*) | (383) |
SECTION 4 PHYSICS (391)
Introduction | (393) | |
4.1 | Back of the Envelope Aerodynamics for Game Physics | (395) |
4.2 | Dynamic Grass Simulation and Other Natural Effects | (411) |
4.3 | Realistic Cloth Animation Using the Mass-Spring Model | (421) |
4.4 | Practical Animation of Soft Bodies for Game Development: The Pressurized Soft-Body Model | (435) |
4.5 | Adding Life to Ragdoll Simulation Using Feedback Control Systems | (449) |
4.6 | Designing a Prescripted Physics System | (457) |
4.7 | Prescripted Physics: Techniques and Applications | (473) |
4.8 | Realistic Camera Movement in a 3D Car Simulator | (483) |
SECTION 5 GRAPHICS (495)
Introduction | (497) | |
5.1 | Realistic Cloud Rendering on Modern GPUs | (499) |
5.2 | Let It Snow, Let It Snow, Let It Snow (and Rain | (507) |
5.3 | Widgets: Rendering Fast and Persistent Foliage | (515) |
5.4 | 2.5 Dimensional Impostors for Realistic Trees and Forests | (527) |
5.5 | Gridless Controllable Fire | (539) |
5.6 | Powerful Explosion Effects Using Billboard Particles | (551) |
5.7 | A Simple Method for Rendering Gemstones | (561) |
5.8 | Volumetric Post-Processing | (571) |
5.9 | Procedural Level Generation | (579) |
5.10 | Recombinant Shaders | (589) |
SECTION 6 NETWORK AND MULTIPLAYER (599)
Introduction | (601) | |
6.1 | Keeping a Massively Multiplayer Online Game Massive, Online, and Persistent | (603) |
6.2 | Implementing a Seamless World Server | (611) |
6.3 | Designing a Vulgarity Filtering System | (621) |
6.4 | Fast and Efficient Implementation of a Remote Procedure Call System | (627) |
6.5 | Overcoming Network Address Translation in Peer-to-Peer Communications | (643) |
6.6 | A Reliable Messaging Protocol | (665) |
6.7 | Safe Random Number Systems | (673) |
6.8 | Secure by Design | (681) |
SECTION 7 AUDIO (693)
Introduction | (695) | |
7.1 | Multithreaded Audio Programming Techniques | (697) |
7.2 | Sound Management by Group | (713) |
7.3 | Using 3D Surfaces as Audio Emitters | (721) |
7.4 | Fast Environmental Reverb Based on Feedback Delay Networks | (729) |
7.5 | Introduction to Single-Speaker Speech Recognition | (741) |
About the CD-ROM | (751) |
Index | (753) |
Game Programming Gems 6
Foreword | (xi) |
Preface | (xv) |
About the Cover Image | (xxi) |
Contributor Bios | (xxiii) |
SECTION 1 GENERAL PROGRAMMING (1)
Introduction | (3) | |
1.1 | Lock-Free Algorithms | (5) |
1.2 | Utilizing Multicore Processors with OpenMP | (17) |
1.3 | Computer Vision in Games Using the OpenCV Library | (25) |
1.4 | Geographic Grid Registration of Game Objects | (39) |
1.5 | BSP Techniques | (49) |
1.6 | Closest-String Matching Algorithm | (69) |
1.7 | Using CppUnit To Implement Unit Testing | (79) |
1.8 | Fingerprinting Pre-Release Builds To Deter and Detect Piracy | (97) |
1.9 | Faster File Loading with Access-Based File Reordering | (103) |
1.10 | Stay in the Game: Asset Hotloading for Fast Iteration | (109) |
SECTION 2 MATHEMATICS AND PHYSICS (117)
Introduction | (119) | |
2.1 | Floating-Point Tricks | (121) |
2.2 | GPU Computation in Projective Space Using Homogeneous Coordinates | (137) |
2.3 | Solving Systems of Linear Equations Using the Cross Product | (149) |
2.4 | Sequence Indexing for Game Development | (161) |
2.5 | Exact Buoyancy for Polyhedra | (175) |
2.6 | Real-Time Particle-Based Fluid Simulation with Rigid Body Interaction | (189) |
SECTION 3 ARTIFICIAL INTELLIGENCE (207)
Introduction | (209) | |
3.1 | Applying Model-Based Decision-Making Methods to Games: Applying the Locust AI Engine to QuakeŽ III | (211) |
3.2 | Achieving Coordination with Autonomous NPCs | (223) |
3.3 | Behavior-Based Robotic Architectures for Games | (235) |
3.4 | Constructing a Goal-Oriented Robot for Unreal Tournament Using Fuzzy Sensors, Finite-State Machines, and Extended Behavior Networks | (245) |
3.5 | A Goal-Oriented Unreal Bot: Building a Game Agent with Goal-Oriented Behavior and Simple Personality Using Extended Behavior Networks | (259) |
3.6 | Short-Term Memory Modeling Using a Support Vector Machine | (273) |
3.7 | Using the Quantified Judgment Model for Engagement Analysis | (283) |
3.8 | Designing a Multilayer, Pluggable AI Engine | (291) |
3.9 | A Fuzzy-Control Approach to Managing Scene Complexity | (307) |
SECTION 4 SCRIPTING AND DATA-DRIVEN SYSTEMS (317)
Introduction | (319) | |
4.1 | Scripting Language Survey | (323) |
4.2 | Binding C/C++ Objects to Lua | (341) |
4.3 | Programming Advanced Control Mechanisms with Lua Coroutines | (357) |
4.4 | Managing High-Level Script Execution Within Multithreaded Environments | (371) |
4.5 | Exposing Actor Properties Using Nonintrusive Proxies | (383) |
4.6 | Game Object Component System | (393) |
SECTION 5 GRAPHICS (405)
Introduction | (407) | |
5.1 | Synthesis of Realistic Idle Motion for Interactive Characters | (409) |
5.2 | Spatial Partitioning Using an Adaptive Binary Tree | (423) |
5.3 | Enhanced Object Culling with (Almost) Oriented Bounding Boxes | (437) |
5.4 | Skin Splitting for Optimal Rendering | (449) |
5.5 | GPU Terrain Rendering | (461) |
5.6 | Interactive Fluid Dynamics and Rendering on the GPU | (473) |
5.7 | Fast Per-Pixel Lighting with Many Lights | (489) |
5.8 | Rendering Road Signs Sharply | (501) |
5.9 | Practical Sky Rendering for Games | (517) |
5.10 | High Dynamic Range Rendering Using OpenGL Frame Buffer Objects | (529) |
SECTION 6 AUDIO (537)
Introduction | (539) | |
6.1 | Real-Time Sound Generation from Deformable Meshes | (541) |
6.2 | A Lightweight Generator for Real-Time Sound Effects | (549) |
6.3 | Real-Time Mixing Busses | (555) |
6.4 | Potentially Audible Sets | (561) |
6.5 | A Cheap Doppler Effect | (573) |
6.6 | Faking Real-Time DSP Effects | (583) |
SECTION 7 NETWORK AND MULTIPLAYER (589)
Introduction | (591) | |
7.1 | Dynamically Adaptive Streaming of 3D Data for Animated Characters | (593) |
7.2 | Complex Systems-Based High-Level Architecture for Massively Multiplayer Games | (607) |
7.3 | Generating Globally Unique Identifiers for Game Objects | (623) |
7.4 | Massively Multiplayer Online Prototype Utilizing Second Life for Game Concept Prototyping | (629) |
7.5 | Reliable Peer-to-Peer Gaming Connections Penetrating NAT | (641) |
About the CD-ROM | (651) |
Index | (653) |
Game Programming Gems 7
Preface | (ix) |
About the Cover Image | (xiii) |
Acknowledgements | (xv) |
Contributor Bios | (xvii) |
SECTION 1 GENERAL PROGRAMMING (1)
Introduction | (3) | |
1.1 | Efficient Cache Replacement Using the Age and Cost Metrics | (5) |
1.2 | High Performance Heap Allocator | (15) |
1.3 | Optical Flow for Video Games Played with Webcams | (25) |
1.4 | Design and Implementation of a Multi-Platform Threading Engine | (35) |
1.5 | For Bees and Gamers: How to Handle Hexagonal Tiles | (47) |
1.6 | A Sketch-Based Interface to Real-Time Strategy Games Based on a Cellular Automaton | (59) |
1.7 | Foot Navigation Technique for First-Person Shooting Games | (69) |
1.8 | Deferred Function Call Invocation System | (81) |
1.9 | Multithread Job and Dependancy System | (87) |
1.10 | Advanced Debugging Techniques | (97) |
SECTION 2 MATH AND PHYSICS (107)
Introduction | (10 | |
2.1 | Random Number Generation | (113) |
2.2 | Fast Generic Ray Queries for Games | (127) |
2.3 | Fast Rigid-Body Collision Detection using Farthest Feature Maps | (143) |
2.4 | Using Projective Space to Improve Precision of Geometric Computations | (153) |
2.5 | XenoCollide: Complex Collision Made Simple | (165) |
2.6 | Efficient COllision Detection Using Transformation Semantics | (179) |
2.7 | Trigonemtric Splines | (191) |
2.8 | Using Gaussian Randomness to Realistically Vary Projectile Paths | (199) |
SECTION 3 AI (205)
Introduction | (20 | |
3.1 | Creating Interesting Agents with Behavior Cloning | (209) |
3.2 | Designing a Realistic and Unified Agent-Sesning Model | (217) |
3.3 | Managing AI Algorithmic Complexity: Generic Programming Apprach | (229) |
3.4 | All About Attitude: Building Blocks for Opinion, Reputation, and NPC Personalities | (249) |
3.5 | Understanding Intelligence in Games using Player Traces and Interactive Player Graphs | (265) |
3.6 | Goal-Oriented Plan Merging | (281) |
3.7 | Beyond A*: IDA* and Fringe Search | (289) |
SECTION 4 AUDIO (295)
Introduction | (297) | |
4.1 | Audio Signal Processing Using Programmable Graphics Hardware | (299) |
4.2 | MultiStream - The Art of Writing a Next-Gen Audio Engine | (305) |
4.3 | Listen Carefully, You Probably Won’t Hear This Again | (321) |
4.4 | Real-Time Audio Effects Applied | (331) |
4.5 | Context-Driven, Layered Mixing | (341) |
SECTION 5 GRAPHICS (349)
Introduction | (351) | |
5.1 | Advanced Particle Deposition | (353) |
5.2 | Reducing Cumulative Errors in Skeletal Animations | (365) |
5.3 | An Alternative Model for Shading of Diffuse Light for Rough Materials | (373) |
5.4 | High-Performance Subdivision Surfaces | (381) |
5.5 | Animating Relief Impostors Using Radial Basis Functions Textures | (401) |
5.6 | Clipmapping on SM1.1 and Higher | (413) |
5.7 | An Advanced Decal System | (423) |
5.8 | Mapping Large Textures for Outdoor Terrain Rendering | (435) |
5.9 | Art-Based Rendering with Graftal Impostors | (447) |
5.10 | Cheap Talk: Dynamic Real-Time Lipsync | (455) |
SECTION 6 NETWORKING AND MULTIPLAYER (463)
Introduction | (465) | |
6.1 | High-Level Abstraction of Game World Synchronization | (467) |
6.2 | Authentication for Online Games | (481) |
6.3 | Game Network Debugging with Smart Packet Sniffers | (491) |
SECTION 7 SCRIPTING AND DATA-DRIVEN SYSTEMS (499)
Introduction | (50) | |
7.1 | Automatic Lua Binding System | (503) |
7.2 | Serializing C++ Objects into a Database Using Introspection | (517) |
7.3 | Dataports | (535) |
7.4 | Support Your Local Artist: Adding Shaders to Your Engine | (541) |
7.5 | Dance with Python’s AST | (555) |
About the CD-ROM | (561) |
Index | (563) |
Game Programming Gems 8
Section 1 Graphics (1)
Introduction | (1) | |
1.1 | Fast Font Rendering with Instancing | (3) |
1.2 | Principles and Practice of Screen Space Ambient Occlusion | (12) |
1.3 | Multi-Resolution Deferred Shading | (32) |
1.4 | View Frustum Culling of Catmull-Clark Patches in DirectX 11 | (39) |
1.5 | Ambient Occlusion Using DirectX Compute Shader | (50) |
1.6 | Eye-View Pixel Anti-Aliasing for Irregular Shadow Mapping | (74) |
1.7 | Overlapped Execution on Programmable Graphics Hardware | (90) |
1.8 | Techniques for Effective Vertex and Fragment Shading on the SPUs | (101) |
Section 2 Physics and Animation (119)
Introduction | (119) | |
2.1 | A Versatile and Interactive Anatomical Human Face Model | (121) |
2.2 | Curved Paths for Seamless Character Animation | (132) |
2.3 | Non-Iterative, Closed-Form, Inverse Kinematic Chain Solver (NCF IK) | (141) |
2.4 | Particle Swam Optimization for Game Programming | (152) |
2.5 | Improved Numerical Integration with Analytical Techniques | (168) |
2.6 | What a Drag: Modelling Realistic Three-Dimensional Air and Fluid Resistance | (183) |
2.7 | Application of Quasi-Fluid Dynamics for Arbitrary Closed Meshes | (194) |
2.8 | Approximate Convex Decomposition for Real-Time Collision Detection | (202) |
Section 3 AI (211)
Introduction | (211) | |
3.1 | AI Level of Detail for Really Large Worlds | (213) |
3.2 | A Pattern-Based Approach to Modular AI for Games | (232) |
3.3 | Automated Navigation Mesh Generation Using Advanced Growth-Based Techniques | (244) |
3.4 | A Practical Spatial Architecture for Animal and Agent Navigation | (256) |
3.5 | Applying Control Theory to Game AI and Physics | (264) |
3.6 | Adaptive Tactic Selection in First-Person Shooter (FPS) Games | (279) |
3.7 | Embracing Chaos Theory: Generating Apparent Unpredictability through Deterministic Systems | (288) |
3.8 | Needs-Based AI | (302) |
3.9 | A Framework for Emotional Digital Actors | (312) |
3.10 | Scalable Dialog Authoring | (323) |
3.11 | Graph-Based Data Mining for Player Trace Analysis in MMORPGs | (335) |
Section 4 General Programming (353)
Introduction | (353) | |
4.1 | Fast-IsA | (355) |
4.2 | Registered Variables | (363) |
4.3 | Efficient and Scalable Multi-Core Programming | (373) |
4.4 | Game Optimization through the Lens of Memory and Data Access | (385) |
4.5 | Stack Allocation | (393) |
4.6 | Design and Implementation of an In-Game Memory Profiler | (402) |
4.7 | A More Informative Error Log Generator | (409) |
4.8 | Code Coverage for QA | (416) |
4.9 | Domain-Specific Languages in Game Engines | (428) |
4.10 | A Flexible User Interface Layout system for Divergent Environments | (442) |
4.11 | Road Creation for Projectable Terrain Meshes | (453) |
4.12 | Developing for Digital Drawing Tables | (462) |
4.13 | Creating a Multi-Threaded Actor-Based Architecture using Intel® Threading Building Blocks | (473) |
Section 5 Networking and Multiplayer (485)
Introduction | (485) | |
5.1 | Secure Channel Communication | (487) |
5.2 | Social Networks in Games: Playing with Your Facebook Friends | (498) |
5.3 | Asynchronous I/O for Scalable Game Servers | (506) |
5.4 | Introduction to 3D Streaming Technology in Massively Multiplayer Online Games | (514) |
Section 6 Audio (539)
Introduction | (539) | |
6.1 | A Practical DSP Radio Effect | (542) |
6.2 | Empowering Your Audio Teams with a Great Engine | (553) |
6.3 | Real-Time Sound Synthesis for Rigid Bodies | (563) |
Section 7 General Purpose Computing on GPUs (573)
Introduction | (573) | |
7.1 | Using Heterogenous Parallel Architecture with OpenCL | (575) |
7.2 | PhysX CPU Rigid Bodies in Batman: Arkham Asylum | (590) |
7.3 | Fast GPU Fluid Simulation in PhysX | (602) |
Index | (616) |
Best of Game Programming Gems
Acknowledgments | (ix) |
About the Authors | (xi) |
Introduction | (xxv) |
SECTION 1 GENERAL INFORMATION (1)
1.1 | The Science of Debugging Games | (3) |
1.2 | Finding Redeeming Value in C-Style Macros | (17) |
1.3 | Inline Functions vs Macros | (29) |
1.4 | Squeezing More Out of Assaert | (35) |
1.5 | Programming with Abstract Interfaces | (41) |
1.6 | The Beauty of Weak References and Null Objects | (49) |
1.7 | Using the STL in Game Programming | (57) |
1.8 | Custom STL Allocators | (73) |
1.9 | Optimizations for C++ Games | (83) |
1.10 | Real-Time Hierarchical Profiling | (95) |
1.11 | A Generic Tree Container in C++ | (103) |
1.12 | Lock-Free Algorithms | (113) |
1.13 | Utilizing Multicore Processors with OpenMP | (125) |
SECTION 2 MATH AND PHYSICS (133)
2.1 | More Approximations to Trigonometric Functions | (135) |
2.2 | Faster Quaternion Interpolation Using Approximations | (153) |
2.3 | Quaternion Compression | (175) |
2.4 | Zobrist Hash Using the Mersenne Twister | (181) |
2.5 | Solving Accuracy Problems in Large World Coordinates | (187) |
2.6 | Writing a Verlet-Based Physics Engine | (201) |
2.7 | Constraints in Rigid Body Dynamics | (211) |
2.8 | The Jacobian Transpose Method for Inverse Kinematics | (223) |
SECTION 3 ARTIFICIAL INTELLIGENCE (235)
3.1 | The Basics of A* for Path Planning | (237) |
3.2 | A* Aesthetic Optimizations | (247) |
3.3 | A* Speed Optimizations | (255) |
3.4 | Tactical Path-Finding with A | (271) |
3.5 | A Fast Approach to Navigation Meshes | (285) |
3.6 | Flocking: A Simple Technique for Simulating Group Behavior | (297) |
3.7 | A Finite-State Machine Class | (311) |
3.8 | Implementing Practical Planning for Game AI | (323) |
SECTION 4 GRAPHICS (339)
4.1 | T-Junction Elimination and Retriangulation | (341) |
4.2 | Filling the Gaps: Advanced Animation Using Stitching and Skinning | (347) |
4.3 | Improved Skin Deformation Using Kinematic Skeletons | (355) |
4.4 | Motion Capture Data Compression | (363) |
4.5 | Compressed Axis-Aligned Bounding Box Trees | (371) |
4.6 | Textures as Lookup Tables for Per-Pixel Lighting Computations | (377) |
4.7 | Methods for Dynamic, Photorealistic Terrain Lightning | (387) |
4.8 | Practical Sky Rendering for Games | (399) |
4.9 | Powerful Explosion Effects using Billboard Particles | (411) |
4.10 | Rendering Handcrafted Shading Models | (421) |
SECTION 5 NETWORKING (427)
5.1 | Overcoming Network Address Translation in Peer-to-Peer Communications | (429) |
5.2 | Minimizing Latency in Real-Time Strategy Games | (451) |
5.3 | Real-Time Strategy Network Protocol | (459) |
5.4 | Secure Sockets | (469) |
5.5 | Bit Packing: A Network Compression Technique | (481) |
SECTION 6 AUDIO (489)
6.1 | A Basic Music Sequencer for Games | (491) |
6.2 | Audio Compression with Ogg Vorbis | (503) |
6.3 | Using 3D Surfaces as Audio Emitters | (511) |
6.4 | Introduction to Single-Speaker Speech Recognition | (521) |
6.5 | A Technique to instantaneously Reuse Voices in a Sample-Based Synthesizer | (531) |
Index | (535) |
Game Programming Gems TOC
Game Programming Gems 1
Section 1 Programming Techniques
1.0 The Magic of Data-Driven Design1.1 Object-Oriented Programming and Design Techniques
1.2 Fast Math Using Template Metaprogramming
1.3 An Automatic Singleton Utility
1.4 Using the STL in Game Programming
1.5 A Generic Function-Binding Interface
1.6 A Generic Handle-Based Resource Manager
1.7 Resource and Memory Management
1.8 Fast Data Load Trick
1.9 Frame-Based Memory Allocation
1.10 Simple, Fast Bit Arrays
1.11 A Network Protocol for Online Games
1.12 Squeezing More Out of Assert
1.13 Stats: Real-Time Statistics and In-Game Debugging
1.14 Real-Time In-Game Profiling
Section 2 Mathematics
2.0 Predictable Random Numbers2.1 Interpolation Methods
2.2 Integrating the Equations of Rigid Body Motion
2.3 Polynomial Approximations to Trigonometric Functions
2.4 Using Implicit Euler Integration for Numerical Stability
2.5 Wavelets: Theory and Compression
2.6 Interactive Simulation of Water Surfaces
2.7 Quaternions for Game Programming
2.8 Matrix-Quaternion Conversions
2.9 Interpolating Quaternions
2.10 The Shortest Arc Quaternion
Section 3 Artificial Intelligence
3.0 Designing a General Robust AI Engine3.1 A Finite-State Machine Class
3.2 Game Trees
3.3 The Basics of A* for Path Planning
3.4 A* Aesthetic Optimizations
3.5 A* Speed Optimizations
3.6 Simplified 3D Movement and Pathfinding Using Navigation Meshes
3.7 Flocking: A Simple Technique for Simulating Group Behavior
3.8 Fuzzy Logic for Video Games
3.9 A Neural-Net Primer
Section 4 Polygonol Techniques
4.0 Optimizing Vertex Submissions for OpenGL4.1 Tweaking A Vertex's Projected Depth Value
4.2 The Vector Camera
4.3 Camera Control Techniques
4.4 A Fast Cylinder-Frustum Intersection Test
4.5 3D Collision Detection
4.6 Multi-Resolution Maps for Interaction Detection
4.7 Computing the Distance into a Sector
4.8 Object Occlusion Culling
4.9 Never Let 'Em See You Pop - Issues in Geometric Level of Detail Selection
4.10 Octree Construction
4.11 Loose Octrees
4.12 View-Independent Progressive Meshing
4.13 Interpolated 3D Keyframe Animation
4.14 A Fast and Simple Skinning Techniques
4.15 Filling the Gaps - Advanced Animation Using Stitching and Skinning
4.16 Real-Time Realistic Terrain Generation
4.17 Fractal Terrain Generation - Fault Formation
4.18 Fractal Terrain Generation - Midpoint Displacement
4.19 Fractal Terrain Generation - Particle Deposition
Section 5 Pixel Effects
5.0 2D Lens Flare5.1 Using 3D Hardware for 2D Sprite Effects
5.2 Motif-Based Static Lighting
5.3 Simulated Real-Time Lighting Using Vertex Color Interpolation
5.4 Attenuation Maps
5.5 Advanced Texturing Using Texture Coordinate Generation
5.6 Hardware Bump Mapping
5.7 Ground-Plane Shadows
5.8 Real-Time Shadows on Complex Objects
5.9 Improving Environment-Mapped Reflection Using Glossy Prefiltering and the Fresnel Term
5.10 Convincing-Looking Glass for Games
5.11 Refraction Mapping for Liquids in Containers
Section 6 Appendix
6.0 The Matrix Utility Library6.1 The Text Utility Library
6.2 About the CD-ROM
Index
Game Programming Gems 2
Mathematics
Algebraic TechniquesTrigonometry and Geometry
Linear Algebra
Matrix and Vector Operations
Advanced Mathematics
Ray/ Polygon/Polyhedra Instersection Algorithms
Handling Large Amounts of Polygonal Data
Triangle Stripification and Fanning Algorithms
Using 2D and 3D Billboards
LIGHTING: Multi-texturing to Achieve Lighting Effects
Shadow Algorithms
Using Simple Radiosity
Projected Texture Lights
Texturing
Using Texture MatricesBump Mapping
Cubic Environment Mapping
Procedural Textural Mapping
DYNAMIC POLYGON CONTROL: Parametric Curves and Surfaces
Subdivision Surfaces
Multi-resolution Meshes
Spatial Partitioning Schemes
Camera Techniques/ Movement Techniques
Graphic Effects
How to do Lens FlaresWeather Techniques
Sky Domes
Effective Clouds and Fog
Aliasing Effects (Anti-Aliasing
Motion Blur
Depth-of-Field)
Teleport Portals
Particle Systems
Animation
Inverse KinematicsBlending Keyframed Animations
Solid Skinning vs.Hierarchical Skeletons
Using Motion Capture Data
Artificial Intelligence
Finite State MachinesHeuristic Tree Searches
Flocking and Crowding Behavior
Path Planning and the A*Algorithm
Music and Sound Effects
Blending Phrases in Interactive MusicDynamic Audio Generation
Simulating a 3D Sound-Effect Environment
Using Music Cues to Initiate Game Events
Networked Play
Minimizing Latency in the Network PipelineDead Reckoning Algorithms
Client/Server Design
Encryption Techniques.
Game Programming Gems 3
Foreword (xi)Preface (xv)
Acknowledgments (xix)
About the Cover Image (xxi)
Contributor Bios (xxiii)
SECTION 1 GENERAL PROGRAMMING (1)
Introduction (3)1.1 Scheduling Game Events (5)
1.2 An Object-Composition Game Framework (15)
1.3 Finding Redeeming Value in C-Style Macros (26)
1.4 Platform-Independent, Function-Binding Code Generator (38)
1.5 Handle-Based Smart Pointers (44)
1.6 Custom STL Allocators (49)
1.7 Save Me Now! (59)
1.8 Autolists Design Pattern (64)
1.9 Floating-Point Exception Handling (69)
1.10 Programming a Game Design-Compliant Engine Using UML (73)
1.11 Using Lex and Yacc To Parse Custom Data Files (83)
1.12 Developing Games for a World Market (92)
1.13 Real-Time Input and UI in 3D Games (109)
1.14 Natural Selection: The Evolution of Pie Menus (117)
1.15 Lightweight, Policy-Based Logging (129)
1.16 Journaling Services (136)
1.17 Real-Time Hierarchical Profiling (146)
SECTION 2 MATHEMATICS (153)
Introduction (155)2.1 Fast Base-2 Functions for Logarithms and Random Number Generation (157)
2.2 Using Vector Fractions for Exact Geometry (160)
2.3 More Approximations to Trigonometric Functions (170)
2.4 Quaternion Compression (187)
2.5 Constrained Inverse Kinematics (192)
2.6 Cellular Automata for Physical Modeling (200)
2.7 Coping with Friction in Dynamic Simulations (215)
SECTION 3 ARTIFICIAL INTELLIGENCE (227)
Introduction (229)3.1 Optimized Machine Learning with GoCap (231)
3.2 Area Navigation: Expanding the Path-Finding Paradigm (240)
3.3 Function Pointer-Based, Embedded Finite-State Machines (256)
3.4 Terrain Analysis in an RTS-The Hidden Giant (268)
3.5 An Extensible Trigger System for AI Agents, Objects, and Quests (285)
3.6 Tactical Path-Finding with A* (294)
3.7 A Fast Approach to Navigation Meshes (307)
3.8 Choosing a Relationship Between Path-Finding and Collision (321)
SECTION 4 GRAPHICS (333)
Introduction (335)4.1 T-Junction Elimination and Retriangulation (338)
4.2 Fast Heightfield Normal Calculation (344)
4.3 Fast Patch Normals (349)
4.4 Fast and Simple Occlusion Culling (353)
4.5 Triangle Strip Creation, Optimizations, and Rendering (359)
4.6 Computing Optimized Shadow Volumes for Complex Data Sets (367)
4.7 Subdivision Surfaces for Character Animation (372)
4.8 Improved Deformation of Bones (384)
4.9 A Framework for Realistic Character Locomotion (394)
4.10 A Programmable Vertex Shader Compiler (404)
4.11 Billboard Beams (413)
4.12 3D Tricks for Isometric Engines (417)
4.13 Curvature Simulation Using Normal Maps (424)
4.14 Methods for Dynamic, Photorealistic Terrain Lighting (433)
4.15 Cube Map Lighting Techniques (444)
4.16 Procedural Texturing (452)
4.17 Unique Textures (459)
4.18 Textures as Lookup Tables for Per-Pixel Lighting Computations (467)
4.19 Rendering with Handcrafted Shading Models (477)
SECTION 5 NETWORK AND MULTIPLAYER (485)
Introduction (487)5.1 Minimizing Latency in Real-Time Strategy Games (488)
5.2 Real-Time Strategy Network Protocol (496)
5.3 A Flexible Simulation Architecture for Massively Multiplayer Games (506)
5.4 Scaling Multiplayer Servers (520)
5.5 Template-Based Object Serialization (534)
5.6 Secure Sockets (546)
5.7 A Network Monitoring and Simulation Tool (557)
5.8 Creating Multiplayer Games with DirectPlay 8.1 (561)
5.9 Wireless Gaming Using the Java Micro Edition (573)
SECTION 6 AUDIO (583)
Introduction (585)6.1 Audio Compression with Ogg Vorbis (587)
6.2 Creating a Compelling 3D Audio Environment (595)
6.3 Obstruction Using Axis-Aligned Bounding Boxes (600)
6.4 Using the Biquad Resonant Filter (606)
6.5 Linear Predictive Coding for Voice Compression and Effects (613)
6.6 The Stochastic Synthesis of Complex Sounds (622)
6.7 Real-Time Modular Audio Processing for Games (630)
Appendix: About the CD-ROM (639)
Contents
Game Programming Gems 4
Foreword (xi)Preface (xv)
Acknowledgments (xvii)
About the Cover Image (xix)
Contributor Bios (xxi)
SECTION 1 GENERAL PROGRAMMING (1)
Introduction (3)1.1 The Science of Debugging Games (5)
1.2 An HTML-Based Logging and Debugging System (19)
1.3 The Clock: Keeping Your Finger on the Pulse of the Game (27)
1.4 Designing and Maintaining Large Cross-Platform Libraries (35)
1.5 Fight Memory Fragmentation with Templated Freelists (43)
1.6 A Generic Tree Container in C++ (51)
1.7 The Beauty of Weak References and Null Objects (61)
1.8 A System for Managing Game Entities (69)
1.9 Address-Space Managed Dynamic Arrays for Windows and the Xbox (85)
1.10 Critically Damped Ease-In/Ease-Out Smoothing (95)
1.11 A Flexible, On-the-Fly Object Manager (103)
1.12 Using Custom RTTI Properties to Stream and Edit Objects (111)
1.13 Using XML without Sacrificing Speed (125)
SECTION 2 MATHEMATICS (137)
Introduction (139)2.1 Zobrist Hash Using the Mersenne Twister (141)
2.2 Extracting Frustum and Camera Information (147)
2.3 Solving Accuracy Problems in Large World Coordinates (157)
2.4 Nonuniform Splines (171)
2.5 Using the Covariance Matrix for Better-Fitting Bounding Objects (183)
2.6 The Jacobian Transpose Method for Inverse Kinematics (193)
SECTION 3 PHYSICS (205)
Introduction (207)3.1 Ten Fingers of Death: Algorithms for Combat Killing (209)
3.2 Vehicle Physics Simulation for CPU-Limited Systems (221)
3.3 Writing a Verlet-Based Physics Engine (231)
3.4 Constraints in Rigid Body Dynamics (241)
3.5 Fast Contact Reduction for Dynamics Simulation (253)
3.6 Interactive Water Surfaces (265)
3.7 Fast Deformations with Multilayered Physics (275)
3.8 Modal Analysis for Fast, Stable Deformation (287)
SECTION 4 ARTIFICIAL INTELLIGENCE (299)
Introduction (301)4.1 Third-Person Camera Navigation (303)
4.2 Narrative Combat: Using AI to Enhance Tension in an Action Game 315
4.3 NPC Decision Making: Dealing with Randomness (325)
4.4 An Object-Oriented Utility-Based Decision Architecture (337)
4.5 A Distributed-Reasoning Voting Architecture (345)
4.6 Attractors and Repulsors (355)
4.7 Advanced Wall Building for RTS Games (365)
4.8 Artificial Neural Networks on Programmable Graphics Hardware (373)
SECTION 5 GRAPHICS (379)
Introduction (381)5.1 Poster Quality Screenshots (383)
5.2 GPU Shadow Volume Construction for Nonclosed Meshes (393)
5.3 Perspective Shadow Maps (399)
5.4 Combined Depth and ID-Based Shadow Buffers (411)
5.5 Carving Static Shadows into Geometry (427)
5.8 Techniques to Apply Team Colors to 3D Models (451)
5.9 Fast Sepia Tone Conversion (461)
5.10 Dynamic Gamma Using Sampled Scene Luminance (465)
5.11 Heat and Haze Post-Processing Effects (477)
5.13 Motion Capture Data Compression (497)
5.14 Fast Collision Detection for 3D Bones-Based Articulated Characters (503)
5.15 Terrain Occlusion Culling with Horizons (515)
SECTION 6 NETWORK AND MULTIPLAYER (529)
Introduction (531)6.1 General Lobby Design and Development (533)
6.2 Thousands of Clients per Server (541)
6.3 Efficient MMP Game State Storage (555)
6.4 Practical Application of Parallel-State Machines in a Client-Server Environment (563)
6.5 Bit Packing: A Network Compression Technique (571)
6.6 Time and Consistency Management for Multiserver-Based MMORPGs (579)
SECTION 7 AUDIO (591)
Introduction (593)7.1 A Brief Introduction to OpenAL (595)
7.2 A Simple Real-Time Lip-Synching System (607)
7.3 Dynamic Variables and Audio Programming (613)
7.4 Creating an Audio Scripting System (621)
7.5 Implementing an Environmental Audio Solution Using EAX and ZoomFX (633)
7.6 Controlling Real-Time Sound Synthesis from Game Physics (649)
APPENDIX: ABOUT THE CD-ROM (657)
INDEX (659)
Game Programming Gems 5
Foreword (xi)Preface (xv)
About the Cover Image (xix)
Contributor Bios (xxi)
SECTION 1 GENERAL PROGRAMMING (1)
Introduction (3)1.1 Context-Sensitive HUDs for Editors (5)
1.2 Parsing Text Data in Games (17)
1.3 Component Based Object Management (25)
1.4 Using Templates for Reflection in C++ (39)
1.5 Sphere Trees for Speedy BSPs (55)
1.6 Improved Frustum Culling (65)
1.7 Generic Pager (79)
1.8 Large-Scale Stack-Based State Machines (93)
1.9 CSG Construction Using BSP Trees (103)
1.10 Building Lua into Games (115)
1.11 Improving Freelists with Policy Based Design (129)
1.12 A Real-Time Remote Debug Message Logger (143)
1.13 A Transparent Class Saving and Loading Trick (149)
1.14 An Effective Cache-Oblivious Implementation of the ABT Tree (159)
1.15 Visual Design of State Machines (169)
1.16 A Generic Component Library (177)
1.17 Choose Your Path-A Menu System (189)
SECTION 2 MATHEMATICS (197)
Introduction (199)2.1 Using Geometric Algebra for Computer Graphics (201)
2.2 Minimal Acceleration Hermite Curves (225)
2.3 Spline-Based Time Control for Animation (233)
2.4 Faster Quaternion Interpolation Using Approximations (247)
2.5 Minimax Numerical Approximation (269)
2.6 Oblique View Frustums for Mirrors and Portals (281)
SECTION 3 ARTIFICIAL INTELLIGENCE (295)
Introduction (297)3.1 Automatic Cover Finding with Navigation Meshes (299)
3.2 Fast Target Ranking Using an Artificial Potential Field (307)
3.3 Using Lanchester Attrition Models to Predict the Results of Combat (317)
3.4 Implementing Practical Planning for Game AI (329)
3.5 Optimizing a Decision Tree Query Algorithm for Multithreaded Architectures (345)
3.6 Parallel AI Development with PVM (353)
3.7 Beyond A* (367)
3.8 Advanced Pathfinding with Minimal Replanning Cost: Dynamic A Star (D*) (383)
SECTION 4 PHYSICS (391)
Introduction (393)4.1 Back of the Envelope Aerodynamics for Game Physics (395)
4.2 Dynamic Grass Simulation and Other Natural Effects (411)
4.3 Realistic Cloth Animation Using the Mass-Spring Model (421)
4.4 Practical Animation of Soft Bodies for Game Development: The Pressurized Soft-Body Model (435)
4.5 Adding Life to Ragdoll Simulation Using Feedback Control Systems (449)
4.6 Designing a Prescripted Physics System (457)
4.7 Prescripted Physics: Techniques and Applications (473)
4.8 Realistic Camera Movement in a 3D Car Simulator (483)
SECTION 5 GRAPHICS (495)
Introduction (497)5.1 Realistic Cloud Rendering on Modern GPUs (499)
5.2 Let It Snow, Let It Snow, Let It Snow (and Rain) (507)
5.3 Widgets: Rendering Fast and Persistent Foliage (515)
5.4 2.5 Dimensional Impostors for Realistic Trees and Forests (527)
5.5 Gridless Controllable Fire (539)
5.6 Powerful Explosion Effects Using Billboard Particles (551)
5.7 A Simple Method for Rendering Gemstones (561)
5.8 Volumetric Post-Processing (571)
5.9 Procedural Level Generation (579)
5.10 Recombinant Shaders (589)
SECTION 6 NETWORK AND MULTIPLAYER (599)
Introduction (601)6.1 Keeping a Massively Multiplayer Online Game Massive, Online, and Persistent (603)
6.2 Implementing a Seamless World Server (611)
6.3 Designing a Vulgarity Filtering System (621)
6.4 Fast and Efficient Implementation of a Remote Procedure Call System (627)
6.5 Overcoming Network Address Translation in Peer-to-Peer Communications (643)
6.6 A Reliable Messaging Protocol (665)
6.7 Safe Random Number Systems (673)
6.8 Secure by Design (681)
SECTION 7 AUDIO (693)
Introduction (695)7.1 Multithreaded Audio Programming Techniques (697)
7.2 Sound Management by Group (713)
7.3 Using 3D Surfaces as Audio Emitters (721)
7.4 Fast Environmental Reverb Based on Feedback Delay Networks (729)
7.5 Introduction to Single-Speaker Speech Recognition (741)
About the CD-ROM (751)
Index (753)
Game Programming Gems 6
Foreword (xi)Preface (xv)
About the Cover Image (xxi)
Contributor Bios (xxiii)
SECTION 1 GENERAL PROGRAMMING (1)
Introduction (3)1.1 Lock-Free Algorithms (5)
1.2 Utilizing Multicore Processors with OpenMP (17)
1.3 Computer Vision in Games Using the OpenCV Library (25)
1.4 Geographic Grid Registration of Game Objects (39)
1.5 BSP Techniques (49)
1.6 Closest-String Matching Algorithm (69)
1.7 Using CppUnit To Implement Unit Testing (79)
1.8 Fingerprinting Pre-Release Builds To Deter and Detect Piracy (97)
1.9 Faster File Loading with Access-Based File Reordering (103)
1.10 Stay in the Game: Asset Hotloading for Fast Iteration (109)
SECTION 2 MATHEMATICS AND PHYSICS (117)
Introduction (119)2.1 Floating-Point Tricks (121)
2.2 GPU Computation in Projective Space Using Homogeneous Coordinates (137)
2.3 Solving Systems of Linear Equations Using the Cross Product (149)
2.4 Sequence Indexing for Game Development (161)
2.5 Exact Buoyancy for Polyhedra (175)
2.6 Real-Time Particle-Based Fluid Simulation with Rigid Body Interaction (189)
SECTION 3 ARTIFICIAL INTELLIGENCE (207)
Introduction (209)3.1 Applying Model-Based Decision-Making Methods to Games: Applying the Locust AI Engine to QuakeŽ III (211)
3.2 Achieving Coordination with Autonomous NPCs (223)
3.3 Behavior-Based Robotic Architectures for Games (235)
3.4 Constructing a Goal-Oriented Robot for Unreal Tournament Using Fuzzy Sensors, Finite-State Machines, and Extended Behavior Networks (245)
3.5 A Goal-Oriented Unreal Bot: Building a Game Agent with Goal-Oriented Behavior and Simple Personality Using Extended Behavior Networks (259)
3.6 Short-Term Memory Modeling Using a Support Vector Machine (273)
3.7 Using the Quantified Judgment Model for Engagement Analysis (283)
3.8 Designing a Multilayer, Pluggable AI Engine (291)
3.9 A Fuzzy-Control Approach to Managing Scene Complexity (307)
SECTION 4 SCRIPTING AND DATA-DRIVEN SYSTEMS (317)
Introduction (319)4.1 Scripting Language Survey (323)
4.2 Binding C/C++ Objects to Lua (341)
4.3 Programming Advanced Control Mechanisms with Lua Coroutines (357)
4.4 Managing High-Level Script Execution Within Multithreaded Environments (371)
4.5 Exposing Actor Properties Using Nonintrusive Proxies (383)
4.6 Game Object Component System (393)
SECTION 5 GRAPHICS (405)
Introduction (407)5.1 Synthesis of Realistic Idle Motion for Interactive Characters (409)
5.2 Spatial Partitioning Using an Adaptive Binary Tree (423)
5.3 Enhanced Object Culling with (Almost) Oriented Bounding Boxes (437)
5.4 Skin Splitting for Optimal Rendering (449)
5.5 GPU Terrain Rendering (461)
5.6 Interactive Fluid Dynamics and Rendering on the GPU (473)
5.7 Fast Per-Pixel Lighting with Many Lights (489)
5.8 Rendering Road Signs Sharply (501)
5.9 Practical Sky Rendering for Games (517)
5.10 High Dynamic Range Rendering Using OpenGL Frame Buffer Objects (529)
SECTION 6 AUDIO (537)
Introduction (539)6.1 Real-Time Sound Generation from Deformable Meshes (541)
6.2 A Lightweight Generator for Real-Time Sound Effects (549)
6.3 Real-Time Mixing Busses (555)
6.4 Potentially Audible Sets (561)
6.5 A Cheap Doppler Effect (573)
6.6 Faking Real-Time DSP Effects (583)
SECTION 7 NETWORK AND MULTIPLAYER (589)
Introduction (591)7.1 Dynamically Adaptive Streaming of 3D Data for Animated Characters (593)
7.2 Complex Systems-Based High-Level Architecture for Massively Multiplayer Games (607)
7.3 Generating Globally Unique Identifiers for Game Objects (623)
7.4 Massively Multiplayer Online Prototype Utilizing Second Life for Game Concept Prototyping (629)
7.5 Reliable Peer-to-Peer Gaming Connections Penetrating NAT (641)
About the CD-ROM (651)
Index (653)
//z 2014-07-18 17:12:26 L.166'24454 BG57IV3@XCL T2649809119.K.F1752546504[T8,L150,R7,V167] IS2120
相关文章推荐
- 电子书下载:Game Programming Gems 1
- 电子书下载:Game Programming Gems 2
- 5.1 realistic cloud rendering on modern gpus---game programming gems 5
- 5.2 let it snow--game programming gems 5 笔记
- Game Programming Gems 3 (Game Programming Gems Series)
- 5.3 widgets:rendering fast and persistent foliage--game programming gems 5笔记
- improved frustum culling--game programming gems 5-1.6
- 5.7 a simple method for rendering gemstones--game programming gems 5 笔记
- 5.10 recombinant shaders--game programming gems 笔记
- 现在有谁买得到Game Programming Gems 1,2,3的中文版?
- 电子书下载:Game Programming Gems 8
- Game Programming Gems 4 by Andrew Kirmse
- 电子书下载:Game Programming Gems 游戏编程精粹
- Game Programming Gems 1中关于has a 和 is a的定义
- Game Programming Gems 1读书笔记(1)
- Contact - DucleBox | A Game Engine for OpenGL Programming
- Beginning C# Game Programming
- DirectX10 学习1(摘录Introduction to 3D Game Programming with DirectX 10(中文版))
- [翻译]XNA 3.0 Game Programming Recipes之twenty
- [翻译]XNA 3.0 Game Programming Recipes之twenty-seven