Game Programming Gems TOC (ZZ)

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.0The Magic of Data-Driven Design
1.1Object-Oriented Programming and Design Techniques
1.2Fast Math Using Template Metaprogramming
1.3An Automatic Singleton Utility
1.4Using the STL in Game Programming
1.5A Generic Function-Binding Interface
1.6A Generic Handle-Based Resource Manager
1.7Resource and Memory Management
1.8Fast Data Load Trick
1.9Frame-Based Memory Allocation
1.10Simple, Fast Bit Arrays
1.11A Network Protocol for Online Games
1.12Squeezing More Out of Assert
1.13Stats: Real-Time Statistics and In-Game Debugging
1.14Real-Time In-Game Profiling

SECTION 2 MATHEMATICS

2.0Predictable Random Numbers
2.1Interpolation Methods
2.2Integrating the Equations of Rigid Body Motion
2.3Polynomial Approximations to Trigonometric Functions
2.4Using Implicit Euler Integration for Numerical Stability
2.5Wavelets: Theory and Compression
2.6Interactive Simulation of Water Surfaces
2.7Quaternions for Game Programming
2.8Matrix-Quaternion Conversions
2.9Interpolating Quaternions
2.10The Shortest Arc Quaternion

SECTION 3 ARTIFICIAL INTELLIGENCE

3.0Designing a General Robust AI Engine
3.1A Finite-State Machine Class
3.2Game Trees
3.3The Basics of A* for Path Planning
3.4A* Aesthetic Optimizations
3.5A* Speed Optimizations
3.6Simplified 3D Movement and Pathfinding Using Navigation Meshes
3.7Flocking: A Simple Technique for Simulating Group Behavior
3.8Fuzzy Logic for Video Games
3.9A Neural-Net Primer

SECTION 4 POLYGONOL TECHNIQUES

4.0Optimizing Vertex Submissions for OpenGL
4.1Tweaking A Vertex’s Projected Depth Value
4.2The Vector Camera
4.3Camera Control Techniques
4.4A Fast Cylinder-Frustum Intersection Test
4.53D Collision Detection
4.6Multi-Resolution Maps for Interaction Detection
4.7Computing the Distance into a Sector
4.8Object Occlusion Culling
4.9Never Let ‘Em See You Pop - Issues in Geometric Level of Detail Selection
4.10Octree Construction
4.11Loose Octrees
4.12View-Independent Progressive Meshing
4.13Interpolated 3D Keyframe Animation
4.14A Fast and Simple Skinning Techniques
4.15Filling the Gaps - Advanced Animation Using Stitching and Skinning
4.16Real-Time Realistic Terrain Generation
4.17Fractal Terrain Generation - Fault Formation
4.18Fractal Terrain Generation - Midpoint Displacement
4.19Fractal Terrain Generation - Particle Deposition

SECTION 5 PIXEL EFFECTS

5.02D Lens Flare
5.1Using 3D Hardware for 2D Sprite Effects
5.2Motif-Based Static Lighting
5.3Simulated Real-Time Lighting Using Vertex Color Interpolation
5.4Attenuation Maps
5.5Advanced Texturing Using Texture Coordinate Generation
5.6Hardware Bump Mapping
5.7Ground-Plane Shadows
5.8Real-Time Shadows on Complex Objects
5.9Improving Environment-Mapped Reflection Using Glossy Prefiltering and the Fresnel Term
5.10Convincing-Looking Glass for Games
5.11Refraction Mapping for Liquids in Containers

SECTION 6 APPENDIX

6.0The Matrix Utility Library
6.1The Text Utility Library
6.2About the CD-ROM
Index

Game Programming Gems 2

Preface(xxi)
About the Cover Image(xxv)
Author Bios(xxvii)

SECTION 1 GENERAL PROGRAMMING (1)

Introduction: General Programming(3)
1.1Optimization for C++ Games(5)
1.2Inline Functions Versus Macros(16)
1.3Programming with Abstract Interfaces(5)
1.4Exporting C++ Classes from DLLs(28)
1.5Protect Yourself from DLL Hell and Missing OS Functions(33)
1.6Dynamic Type Information(38)
1.7A Property Class for Generic C++ Member Access(46)
1.8A Game Entity Factory(51)
1.9Adding Deprecation Facilities to C++(62)
1.10A Drop-in Debug Memory Manager(66)
1.11A Built-in Game Profiling Module(74)
1.12Linear Programming Model for Windows-based Games(80)
1.13Stack Winding(85)
1.14Self-Modifying Code(91)
1.15File Management Using Resource Files(100)
1.16Game input Recording and Playback(105)
1.17A Flexible Text Parsing System(112)
1.18A Generic Tweaker(118)
1.19Genuine Random Number Generation(127)
1.20Using Bloom Filters to improve Computational Performance(133)
1.213ds max Skin Exporter and Animation Toolkit(141)
1.22Using Web Cameras in Video Games(153)

SECTION 2 MATHEMATICS (163)

Introduction: Mathematics(165)
2.1Floating-Point Tricks: Improving Performance with IEEE Floating Point(167)
2.2Vector and Plane Tricks(182)
2.3Fast, Robust Intersection of 3D Line Segments(191)
2.4Inverse Trajectory Determination(205)
2.5The Parallel Transport Frame(215)
2.6Smooth C2 Quaternion-based Flythrough Paths(220)
2.7Recursive Dimensional CLustering: A Fast Algorithm for Collision Detection(228)
2.8Programming Fractals(239)

SECTION 3 ARTIFICIAL INTELLIGENCE (247)

Introduction: Artificial Intelligence(249)
3.1Strategies for Optimizing AI(251)
3.2Micro-Threads for Game Object AI(258)
3.3Managing AI with Micro-Threads(265)
3.4An Architecture for RTS Command Queuing(273)
3.5A High-Performance Tile-Based Line-of-Sight and Search System(279)
3.6Influence Mapping(287)
3.7Strategic Assessment Techniques(298)
3.8Terrain Reasoning for 3D Action Games(307)
3.9Expanded Geometry for Points-of-Visibility Pathfinding(317)
3.10Optimizing Points-of-Visibility Pathfinding(324)
3.11Flocking with Teeth: Predators and Prey(330)
3.12A Generic Fuzzy State Machine in C++(337)
3.13Imploding Combinatorial Explosion in a Fuzzy System(342)
3.14Using a Neutral Network in a Game: A Concrete Example(351)

SECTION 4 GEOMETRY MANAGEMENT (359)

Introduction: Geometry Management(361)
4.1Comparison of VIPM Methods(363)
4.2Simplified Terrain Using Interlocking Tiles(377)
4.3Sphere Trees for Fast Visibility Culling, Ray Tracing and Range Searching(384)
4.4Compressed Axis-Aligned Bounding Box Trees(388)
4.5Direct Access Quadtree Lookup(394)
4.6Approximating Fish Tank Refractions(402)
4.7Rendering Print Resolution Screenshots(406)
4.8Applying Decals to Arbitrary Surfaces(411)
4.9Rendering Distans Scenery with Skyboxes(416)
4.10Self-Shadowing Characters(421)
4.11Classic Super Mario 64 Third-Person Control and Animation(425)

SECTION 5 GRAPHICS DISPLAY (433)

Introduction: Graphics Display(435)
5.1Cartoon Rendering: Real-Time Silhouette Edge Detection and Rendering(436)
5.2Cartoon Rendering Using Texture Mapping and Programmable Vertex Shaders(444)
5.3Dynamix Per-Pixel Lighting Technique(452)
5.4Generating Procedural Clouds using 3D Hardware(463)
5.5Texture Masking for Faster Lens Flare(474)
5.6Practical Priority Buffer Shadows(481)
5.7Impostors: Adding Clutter(488)
5.8Operations 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.1Scheduling Game Events(5)
1.2An Object-Composition Game Framework(15)
1.3Finding Redeeming Value in C-Style Macros(26)
1.4Platform-Independent, Function-Binding Code Generator(38)
1.5Handle-Based Smart Pointers(44)
1.6Custom STL Allocators(49)
1.7Save Me Now(59)
1.8Autolists Design Pattern(64)
1.9Floating-Point Exception Handling(69)
1.10Programming a Game Design-Compliant Engine Using UML(73)
1.11Using Lex and Yacc To Parse Custom Data Files(83)
1.12Developing Games for a World Market(92)
1.13Real-Time Input and UI in 3D Games(109)
1.14Natural Selection: The Evolution of Pie Menus(117)
1.15Lightweight, Policy-Based Logging(129)
1.16Journaling Services(136)
1.17Real-Time Hierarchical Profiling(146)

SECTION 2 MATHEMATICS (153)

Introduction(155)
2.1Fast Base-2 Functions for Logarithms and Random Number Generation(157)
2.2Using Vector Fractions for Exact Geometry(160)
2.3More Approximations to Trigonometric Functions(170)
2.4Quaternion Compression(187)
2.5Constrained Inverse Kinematics(192)
2.6Cellular Automata for Physical Modeling(200)
2.7Coping with Friction in Dynamic Simulations(215)

SECTION 3 ARTIFICIAL INTELLIGENCE (227)

Introduction(229)
3.1Optimized Machine Learning with GoCap(231)
3.2Area Navigation: Expanding the Path-Finding Paradigm(240)
3.3Function Pointer-Based, Embedded Finite-State Machines(256)
3.4Terrain Analysis in an RTS-The Hidden Giant(268)
3.5An Extensible Trigger System for AI Agents, Objects, and Quests(285)
3.6Tactical Path-Finding with A(294)
3.7A Fast Approach to Navigation Meshes(307)
3.8Choosing a Relationship Between Path-Finding and Collision(321)

SECTION 4 GRAPHICS (333)

Introduction(335)
4.1T-Junction Elimination and Retriangulation(338)
4.2Fast Heightfield Normal Calculation(344)
4.3Fast Patch Normals(349)
4.4Fast and Simple Occlusion Culling(353)
4.5Triangle Strip Creation, Optimizations, and Rendering(359)
4.6Computing Optimized Shadow Volumes for Complex Data Sets(367)
4.7Subdivision Surfaces for Character Animation(372)
4.8Improved Deformation of Bones(384)
4.9A Framework for Realistic Character Locomotion(394)
4.10A Programmable Vertex Shader Compiler(404)
4.11Billboard Beams(413)
4.123D Tricks for Isometric Engines(417)
4.13Curvature Simulation Using Normal Maps(424)
4.14Methods for Dynamic, Photorealistic Terrain Lighting(433)
4.15Cube Map Lighting Techniques(444)
4.16Procedural Texturing(452)
4.17Unique Textures(459)
4.18Textures as Lookup Tables for Per-Pixel Lighting Computations(467)
4.19Rendering with Handcrafted Shading Models(477)

SECTION 5 NETWORK AND MULTIPLAYER (485)

Introduction(487)
5.1Minimizing Latency in Real-Time Strategy Games(488)
5.2Real-Time Strategy Network Protocol(496)
5.3A Flexible Simulation Architecture for Massively Multiplayer Games(506)
5.4Scaling Multiplayer Servers(520)
5.5Template-Based Object Serialization(534)
5.6Secure Sockets(546)
5.7A Network Monitoring and Simulation Tool(557)
5.8Creating Multiplayer Games with DirectPlay 8.1(561)
5.9Wireless Gaming Using the Java Micro Edition(573)

SECTION 6 AUDIO (583)

Introduction(585)
6.1Audio Compression with Ogg Vorbis(587)
6.2Creating a Compelling 3D Audio Environment(595)
6.3Obstruction Using Axis-Aligned Bounding Boxes(600)
6.4Using the Biquad Resonant Filter(606)
6.5Linear Predictive Coding for Voice Compression and Effects(613)
6.6The Stochastic Synthesis of Complex Sounds(622)
6.7Real-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.1The Science of Debugging Games(5)
1.2An HTML-Based Logging and Debugging System(19)
1.3The Clock: Keeping Your Finger on the Pulse of the Game(27)
1.4Designing and Maintaining Large Cross-Platform Libraries(35)
1.5Fight Memory Fragmentation with Templated Freelists(43)
1.6A Generic Tree Container in C++(51)
1.7The Beauty of Weak References and Null Objects(61)
1.8A System for Managing Game Entities(69)
1.9Address-Space Managed Dynamic Arrays for Windows and the Xbox(85)
1.10Critically Damped Ease-In/Ease-Out Smoothing(95)
1.11A Flexible, On-the-Fly Object Manager(103)
1.12Using Custom RTTI Properties to Stream and Edit Objects(111)
1.13Using XML without Sacrificing Speed(125)

SECTION 2 MATHEMATICS (137)

Introduction(139)
2.1Zobrist Hash Using the Mersenne Twister(141)
2.2Extracting Frustum and Camera Information(147)
2.3Solving Accuracy Problems in Large World Coordinates(157)
2.4Nonuniform Splines(171)
2.5Using the Covariance Matrix for Better-Fitting Bounding Objects(183)
2.6The Jacobian Transpose Method for Inverse Kinematics(193)

SECTION 3 PHYSICS (205)

Introduction(207)
3.1Ten Fingers of Death: Algorithms for Combat Killing(209)
3.2Vehicle Physics Simulation for CPU-Limited Systems(221)
3.3Writing a Verlet-Based Physics Engine(231)
3.4Constraints in Rigid Body Dynamics(241)
3.5Fast Contact Reduction for Dynamics Simulation(253)
3.6Interactive Water Surfaces(265)
3.7Fast Deformations with Multilayered Physics(275)
3.8Modal Analysis for Fast, Stable Deformation(287)

SECTION 4 ARTIFICIAL INTELLIGENCE (299)

Introduction(301)
4.1Third-Person Camera Navigation(303)
4.2Narrative Combat: Using AI to Enhance Tension in an Action Game315
4.3NPC Decision Making: Dealing with Randomness(325)
4.4An Object-Oriented Utility-Based Decision Architecture(337)
4.5A Distributed-Reasoning Voting Architecture(345)
4.6Attractors and Repulsors(355)
4.7Advanced Wall Building for RTS Games(365)
4.8Artificial Neural Networks on Programmable Graphics Hardware(373)

SECTION 5 GRAPHICS (379)

Introduction(381)
5.1Poster Quality Screenshots(383)
5.2GPU Shadow Volume Construction for Nonclosed Meshes(393)
5.3Perspective Shadow Maps(399)
5.4Combined Depth and ID-Based Shadow Buffers(411)
5.5Carving Static Shadows into Geometry(427)
5.8Techniques to Apply Team Colors to 3D Models(451)
5.9Fast Sepia Tone Conversion(461)
5.10Dynamic Gamma Using Sampled Scene Luminance(465)
5.11Heat and Haze Post-Processing Effects(477)
5.13Motion Capture Data Compression(497)
5.14Fast Collision Detection for 3D Bones-Based Articulated Characters(503)
5.15Terrain Occlusion Culling with Horizons(515)

SECTION 6 NETWORK AND MULTIPLAYER (529)

Introduction(531)
6.1General Lobby Design and Development(533)
6.2Thousands of Clients per Server(541)
6.3Efficient MMP Game State Storage(555)
6.4Practical Application of Parallel-State Machines in a Client-Server Environment(563)
6.5Bit Packing: A Network Compression Technique(571)
6.6Time and Consistency Management for Multiserver-Based MMORPGs(579)

SECTION 7 AUDIO (591)

Introduction(593)
7.1A Brief Introduction to OpenAL(595)
7.2A Simple Real-Time Lip-Synching System(607)
7.3Dynamic Variables and Audio Programming(613)
7.4Creating an Audio Scripting System(621)
7.5Implementing an Environmental Audio Solution Using EAX and ZoomFX(633)
7.6Controlling 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.1Context-Sensitive HUDs for Editors(5)
1.2Parsing Text Data in Games(17)
1.3Component Based Object Management(25)
1.4Using Templates for Reflection in C++(39)
1.5Sphere Trees for Speedy BSPs(55)
1.6Improved Frustum Culling(65)
1.7Generic Pager(79)
1.8Large-Scale Stack-Based State Machines(93)
1.9CSG Construction Using BSP Trees(103)
1.10Building Lua into Games(115)
1.11Improving Freelists with Policy Based Design(129)
1.12A Real-Time Remote Debug Message Logger(143)
1.13A Transparent Class Saving and Loading Trick(149)
1.14An Effective Cache-Oblivious Implementation of the ABT Tree(159)
1.15Visual Design of State Machines(169)
1.16A Generic Component Library(177)
1.17Choose Your Path-A Menu System(189)

SECTION 2 MATHEMATICS (197)

Introduction(199)
2.1Using Geometric Algebra for Computer Graphics(201)
2.2Minimal Acceleration Hermite Curves(225)
2.3Spline-Based Time Control for Animation(233)
2.4Faster Quaternion Interpolation Using Approximations(247)
2.5Minimax Numerical Approximation(269)
2.6Oblique View Frustums for Mirrors and Portals(281)

SECTION 3 ARTIFICIAL INTELLIGENCE (295)

Introduction(297)
3.1Automatic Cover Finding with Navigation Meshes(299)
3.2Fast Target Ranking Using an Artificial Potential Field(307)
3.3Using Lanchester Attrition Models to Predict the Results of Combat(317)
3.4Implementing Practical Planning for Game AI(329)
3.5Optimizing a Decision Tree Query Algorithm for Multithreaded Architectures(345)
3.6Parallel AI Development with PVM(353)
3.7Beyond A(367)
3.8Advanced Pathfinding with Minimal Replanning Cost: Dynamic A Star (D*)(383)

SECTION 4 PHYSICS (391)

Introduction(393)
4.1Back of the Envelope Aerodynamics for Game Physics(395)
4.2Dynamic Grass Simulation and Other Natural Effects(411)
4.3Realistic Cloth Animation Using the Mass-Spring Model(421)
4.4Practical Animation of Soft Bodies for Game Development: The Pressurized Soft-Body Model(435)
4.5Adding Life to Ragdoll Simulation Using Feedback Control Systems(449)
4.6Designing a Prescripted Physics System(457)
4.7Prescripted Physics: Techniques and Applications(473)
4.8Realistic Camera Movement in a 3D Car Simulator(483)

SECTION 5 GRAPHICS (495)

Introduction(497)
5.1Realistic Cloud Rendering on Modern GPUs(499)
5.2Let It Snow, Let It Snow, Let It Snow (and Rain(507)
5.3Widgets: Rendering Fast and Persistent Foliage(515)
5.42.5 Dimensional Impostors for Realistic Trees and Forests(527)
5.5Gridless Controllable Fire(539)
5.6Powerful Explosion Effects Using Billboard Particles(551)
5.7A Simple Method for Rendering Gemstones(561)
5.8Volumetric Post-Processing(571)
5.9Procedural Level Generation(579)
5.10Recombinant Shaders(589)

SECTION 6 NETWORK AND MULTIPLAYER (599)

Introduction(601)
6.1Keeping a Massively Multiplayer Online Game Massive, Online, and Persistent(603)
6.2Implementing a Seamless World Server(611)
6.3Designing a Vulgarity Filtering System(621)
6.4Fast and Efficient Implementation of a Remote Procedure Call System(627)
6.5Overcoming Network Address Translation in Peer-to-Peer Communications(643)
6.6A Reliable Messaging Protocol(665)
6.7Safe Random Number Systems(673)
6.8Secure by Design(681)

SECTION 7 AUDIO (693)

Introduction(695)
7.1Multithreaded Audio Programming Techniques(697)
7.2Sound Management by Group(713)
7.3Using 3D Surfaces as Audio Emitters(721)
7.4Fast Environmental Reverb Based on Feedback Delay Networks(729)
7.5Introduction 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.1Lock-Free Algorithms(5)
1.2Utilizing Multicore Processors with OpenMP(17)
1.3Computer Vision in Games Using the OpenCV Library(25)
1.4Geographic Grid Registration of Game Objects(39)
1.5BSP Techniques(49)
1.6Closest-String Matching Algorithm(69)
1.7Using CppUnit To Implement Unit Testing(79)
1.8Fingerprinting Pre-Release Builds To Deter and Detect Piracy(97)
1.9Faster File Loading with Access-Based File Reordering(103)
1.10Stay in the Game: Asset Hotloading for Fast Iteration(109)

SECTION 2 MATHEMATICS AND PHYSICS (117)

Introduction(119)
2.1Floating-Point Tricks(121)
2.2GPU Computation in Projective Space Using Homogeneous Coordinates(137)
2.3Solving Systems of Linear Equations Using the Cross Product(149)
2.4Sequence Indexing for Game Development(161)
2.5Exact Buoyancy for Polyhedra(175)
2.6Real-Time Particle-Based Fluid Simulation with Rigid Body Interaction(189)

SECTION 3 ARTIFICIAL INTELLIGENCE (207)

Introduction(209)
3.1Applying Model-Based Decision-Making Methods to Games: Applying the Locust AI Engine to QuakeŽ III(211)
3.2Achieving Coordination with Autonomous NPCs(223)
3.3Behavior-Based Robotic Architectures for Games(235)
3.4Constructing a Goal-Oriented Robot for Unreal Tournament Using Fuzzy Sensors, Finite-State Machines, and Extended Behavior Networks(245)
3.5A Goal-Oriented Unreal Bot: Building a Game Agent with Goal-Oriented Behavior and Simple Personality Using Extended Behavior Networks(259)
3.6Short-Term Memory Modeling Using a Support Vector Machine(273)
3.7Using the Quantified Judgment Model for Engagement Analysis(283)
3.8Designing a Multilayer, Pluggable AI Engine(291)
3.9A Fuzzy-Control Approach to Managing Scene Complexity(307)

SECTION 4 SCRIPTING AND DATA-DRIVEN SYSTEMS (317)

Introduction(319)
4.1Scripting Language Survey(323)
4.2Binding C/C++ Objects to Lua(341)
4.3Programming Advanced Control Mechanisms with Lua Coroutines(357)
4.4Managing High-Level Script Execution Within Multithreaded Environments(371)
4.5Exposing Actor Properties Using Nonintrusive Proxies(383)
4.6Game Object Component System(393)

SECTION 5 GRAPHICS (405)

Introduction(407)
5.1Synthesis of Realistic Idle Motion for Interactive Characters(409)
5.2Spatial Partitioning Using an Adaptive Binary Tree(423)
5.3Enhanced Object Culling with (Almost) Oriented Bounding Boxes(437)
5.4Skin Splitting for Optimal Rendering(449)
5.5GPU Terrain Rendering(461)
5.6Interactive Fluid Dynamics and Rendering on the GPU(473)
5.7Fast Per-Pixel Lighting with Many Lights(489)
5.8Rendering Road Signs Sharply(501)
5.9Practical Sky Rendering for Games(517)
5.10High Dynamic Range Rendering Using OpenGL Frame Buffer Objects(529)

SECTION 6 AUDIO (537)

Introduction(539)
6.1Real-Time Sound Generation from Deformable Meshes(541)
6.2A Lightweight Generator for Real-Time Sound Effects(549)
6.3Real-Time Mixing Busses(555)
6.4Potentially Audible Sets(561)
6.5A Cheap Doppler Effect(573)
6.6Faking Real-Time DSP Effects(583)

SECTION 7 NETWORK AND MULTIPLAYER (589)

Introduction(591)
7.1Dynamically Adaptive Streaming of 3D Data for Animated Characters(593)
7.2Complex Systems-Based High-Level Architecture for Massively Multiplayer Games(607)
7.3Generating Globally Unique Identifiers for Game Objects(623)
7.4Massively Multiplayer Online Prototype Utilizing Second Life for Game Concept Prototyping(629)
7.5Reliable 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.1Efficient Cache Replacement Using the Age and Cost Metrics(5)
1.2High Performance Heap Allocator(15)
1.3Optical Flow for Video Games Played with Webcams(25)
1.4Design and Implementation of a Multi-Platform Threading Engine(35)
1.5For Bees and Gamers: How to Handle Hexagonal Tiles(47)
1.6A Sketch-Based Interface to Real-Time Strategy Games Based on a Cellular Automaton(59)
1.7Foot Navigation Technique for First-Person Shooting Games(69)
1.8Deferred Function Call Invocation System(81)
1.9Multithread Job and Dependancy System(87)
1.10Advanced Debugging Techniques(97)

SECTION 2 MATH AND PHYSICS (107)

Introduction(10
2.1Random Number Generation(113)
2.2Fast Generic Ray Queries for Games(127)
2.3Fast Rigid-Body Collision Detection using Farthest Feature Maps(143)
2.4Using Projective Space to Improve Precision of Geometric Computations(153)
2.5XenoCollide: Complex Collision Made Simple(165)
2.6Efficient COllision Detection Using Transformation Semantics(179)
2.7Trigonemtric Splines(191)
2.8Using Gaussian Randomness to Realistically Vary Projectile Paths(199)

SECTION 3 AI (205)

Introduction(20
3.1Creating Interesting Agents with Behavior Cloning(209)
3.2Designing a Realistic and Unified Agent-Sesning Model(217)
3.3Managing AI Algorithmic Complexity: Generic Programming Apprach(229)
3.4All About Attitude: Building Blocks for Opinion, Reputation, and NPC Personalities(249)
3.5Understanding Intelligence in Games using Player Traces and Interactive Player Graphs(265)
3.6Goal-Oriented Plan Merging(281)
3.7Beyond A*: IDA* and Fringe Search(289)

SECTION 4 AUDIO (295)

Introduction(297)
4.1Audio Signal Processing Using Programmable Graphics Hardware(299)
4.2MultiStream - The Art of Writing a Next-Gen Audio Engine(305)
4.3Listen Carefully, You Probably Won’t Hear This Again(321)
4.4Real-Time Audio Effects Applied(331)
4.5Context-Driven, Layered Mixing(341)

SECTION 5 GRAPHICS (349)

Introduction(351)
5.1Advanced Particle Deposition(353)
5.2Reducing Cumulative Errors in Skeletal Animations(365)
5.3An Alternative Model for Shading of Diffuse Light for Rough Materials(373)
5.4High-Performance Subdivision Surfaces(381)
5.5Animating Relief Impostors Using Radial Basis Functions Textures(401)
5.6Clipmapping on SM1.1 and Higher(413)
5.7An Advanced Decal System(423)
5.8Mapping Large Textures for Outdoor Terrain Rendering(435)
5.9Art-Based Rendering with Graftal Impostors(447)
5.10Cheap Talk: Dynamic Real-Time Lipsync(455)

SECTION 6 NETWORKING AND MULTIPLAYER (463)

Introduction(465)
6.1High-Level Abstraction of Game World Synchronization(467)
6.2Authentication for Online Games(481)
6.3Game Network Debugging with Smart Packet Sniffers(491)

SECTION 7 SCRIPTING AND DATA-DRIVEN SYSTEMS (499)

Introduction(50)
7.1Automatic Lua Binding System(503)
7.2Serializing C++ Objects into a Database Using Introspection(517)
7.3Dataports(535)
7.4Support Your Local Artist: Adding Shaders to Your Engine(541)
7.5Dance with Python’s AST(555)
About the CD-ROM(561)
Index(563)

Game Programming Gems 8

Section 1 Graphics (1)

Introduction(1)
1.1Fast Font Rendering with Instancing(3)
1.2Principles and Practice of Screen Space Ambient Occlusion(12)
1.3Multi-Resolution Deferred Shading(32)
1.4View Frustum Culling of Catmull-Clark Patches in DirectX 11(39)
1.5Ambient Occlusion Using DirectX Compute Shader(50)
1.6Eye-View Pixel Anti-Aliasing for Irregular Shadow Mapping(74)
1.7Overlapped Execution on Programmable Graphics Hardware(90)
1.8Techniques for Effective Vertex and Fragment Shading on the SPUs(101)

Section 2 Physics and Animation (119)

Introduction(119)
2.1A Versatile and Interactive Anatomical Human Face Model(121)
2.2Curved Paths for Seamless Character Animation(132)
2.3Non-Iterative, Closed-Form, Inverse Kinematic Chain Solver (NCF IK)(141)
2.4Particle Swam Optimization for Game Programming(152)
2.5Improved Numerical Integration with Analytical Techniques(168)
2.6What a Drag: Modelling Realistic Three-Dimensional Air and Fluid Resistance(183)
2.7Application of Quasi-Fluid Dynamics for Arbitrary Closed Meshes(194)
2.8Approximate Convex Decomposition for Real-Time Collision Detection(202)

Section 3 AI (211)

Introduction(211)
3.1AI Level of Detail for Really Large Worlds(213)
3.2A Pattern-Based Approach to Modular AI for Games(232)
3.3Automated Navigation Mesh Generation Using Advanced Growth-Based Techniques(244)
3.4A Practical Spatial Architecture for Animal and Agent Navigation(256)
3.5Applying Control Theory to Game AI and Physics(264)
3.6Adaptive Tactic Selection in First-Person Shooter (FPS) Games(279)
3.7Embracing Chaos Theory: Generating Apparent Unpredictability through Deterministic Systems(288)
3.8Needs-Based AI(302)
3.9A Framework for Emotional Digital Actors(312)
3.10Scalable Dialog Authoring(323)
3.11Graph-Based Data Mining for Player Trace Analysis in MMORPGs(335)

Section 4 General Programming (353)

Introduction(353)
4.1Fast-IsA(355)
4.2Registered Variables(363)
4.3Efficient and Scalable Multi-Core Programming(373)
4.4Game Optimization through the Lens of Memory and Data Access(385)
4.5Stack Allocation(393)
4.6Design and Implementation of an In-Game Memory Profiler(402)
4.7A More Informative Error Log Generator(409)
4.8Code Coverage for QA(416)
4.9Domain-Specific Languages in Game Engines(428)
4.10A Flexible User Interface Layout system for Divergent Environments(442)
4.11Road Creation for Projectable Terrain Meshes(453)
4.12Developing for Digital Drawing Tables(462)
4.13Creating a Multi-Threaded Actor-Based Architecture using Intel® Threading Building Blocks(473)

Section 5 Networking and Multiplayer (485)

Introduction(485)
5.1Secure Channel Communication(487)
5.2Social Networks in Games: Playing with Your Facebook Friends(498)
5.3Asynchronous I/O for Scalable Game Servers(506)
5.4Introduction to 3D Streaming Technology in Massively Multiplayer Online Games(514)

Section 6 Audio (539)

Introduction(539)
6.1A Practical DSP Radio Effect(542)
6.2Empowering Your Audio Teams with a Great Engine(553)
6.3Real-Time Sound Synthesis for Rigid Bodies(563)

Section 7 General Purpose Computing on GPUs (573)

Introduction(573)
7.1Using Heterogenous Parallel Architecture with OpenCL(575)
7.2PhysX CPU Rigid Bodies in Batman: Arkham Asylum(590)
7.3Fast 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.1The Science of Debugging Games(3)
1.2Finding Redeeming Value in C-Style Macros(17)
1.3Inline Functions vs Macros(29)
1.4Squeezing More Out of Assaert(35)
1.5Programming with Abstract Interfaces(41)
1.6The Beauty of Weak References and Null Objects(49)
1.7Using the STL in Game Programming(57)
1.8Custom STL Allocators(73)
1.9Optimizations for C++ Games(83)
1.10Real-Time Hierarchical Profiling(95)
1.11A Generic Tree Container in C++(103)
1.12Lock-Free Algorithms(113)
1.13Utilizing Multicore Processors with OpenMP(125)

SECTION 2 MATH AND PHYSICS (133)

2.1More Approximations to Trigonometric Functions(135)
2.2Faster Quaternion Interpolation Using Approximations(153)
2.3Quaternion Compression(175)
2.4Zobrist Hash Using the Mersenne Twister(181)
2.5Solving Accuracy Problems in Large World Coordinates(187)
2.6Writing a Verlet-Based Physics Engine(201)
2.7Constraints in Rigid Body Dynamics(211)
2.8The Jacobian Transpose Method for Inverse Kinematics(223)

SECTION 3 ARTIFICIAL INTELLIGENCE (235)

3.1The Basics of A* for Path Planning(237)
3.2A* Aesthetic Optimizations(247)
3.3A* Speed Optimizations(255)
3.4Tactical Path-Finding with A(271)
3.5A Fast Approach to Navigation Meshes(285)
3.6Flocking: A Simple Technique for Simulating Group Behavior(297)
3.7A Finite-State Machine Class(311)
3.8Implementing Practical Planning for Game AI(323)

SECTION 4 GRAPHICS (339)

4.1T-Junction Elimination and Retriangulation(341)
4.2Filling the Gaps: Advanced Animation Using Stitching and Skinning(347)
4.3Improved Skin Deformation Using Kinematic Skeletons(355)
4.4Motion Capture Data Compression(363)
4.5Compressed Axis-Aligned Bounding Box Trees(371)
4.6Textures as Lookup Tables for Per-Pixel Lighting Computations(377)
4.7Methods for Dynamic, Photorealistic Terrain Lightning(387)
4.8Practical Sky Rendering for Games(399)
4.9Powerful Explosion Effects using Billboard Particles(411)
4.10Rendering Handcrafted Shading Models(421)

SECTION 5 NETWORKING (427)

5.1Overcoming Network Address Translation in Peer-to-Peer Communications(429)
5.2Minimizing Latency in Real-Time Strategy Games(451)
5.3Real-Time Strategy Network Protocol(459)
5.4Secure Sockets(469)
5.5Bit Packing: A Network Compression Technique(481)

SECTION 6 AUDIO (489)

6.1A Basic Music Sequencer for Games(491)
6.2Audio Compression with Ogg Vorbis(503)
6.3Using 3D Surfaces as Audio Emitters(511)
6.4Introduction to Single-Speaker Speech Recognition(521)
6.5A 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 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
  • Index

Game Programming Gems 2

Mathematics

  • Algebraic Techniques
  • Trigonometry 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 Matrices
  • Bump 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 Flares
  • Weather Techniques
  • Sky Domes
  • Effective Clouds and Fog
  • Aliasing Effects (Anti-Aliasing
  • Motion Blur
  • Depth-of-Field)
  • Teleport Portals
  • Particle Systems

Animation

  • Inverse Kinematics
  • Blending Keyframed Animations
  • Solid Skinning vs.Hierarchical Skeletons
  • Using Motion Capture Data

Artificial Intelligence

  • Finite State Machines
  • Heuristic Tree Searches
  • Flocking and Crowding Behavior
  • Path Planning and the A*Algorithm

Music and Sound Effects

  • Blending Phrases in Interactive Music
  • Dynamic Audio Generation
  • Simulating a 3D Sound-Effect Environment
  • Using Music Cues to Initiate Game Events

Networked Play

  • Minimizing Latency in the Network Pipeline
  • Dead 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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值