JavaScript EditorFree JavaScript Editor     Ajax Editor 

Main Page
  Previous Section

Appendix E. Further Reading

"Outside of a dog, a book is a man's best friend. Inside of a dog, it's too dark to read."

Groucho Marx

No book about game programming would ever be complete without some pointers to additional learning resources. Game programming is an involved science that stands on the shoulders of many different subject areas. This appendix provides you with a full bibliography, sorted by chapter. This way you can find more information on the subjects in which you are most interested.

Chapter 1: Chronology of Game Programming

Baer, Ralph H., and Leonard D. Cope. Manually programmable video gaming system. United States Patent 4,355,805. October 26, 1982.

Burnham, Van. Supercade: A Visual History of the Videogame Age, 1971–1984. Cambridge: MIT Press, 2001.

DeMaria, Rusel, and Johnny L. Wilson. High Score! The Illustrated History of Electronic Games. New York: Osborne/McGraw-Hill, 2002.

Nintendo 64. United States Patent 6,331,856.

Chapter 2: Game Architecture

Brooks, Frederick P. Jr. The Mythical Man-Month, 2nd ed., Addison-Wesley, 1995.

Llopis, Noel. C++ for Game Programmers. Charles River Media, 2003.

Rollings, Andrew, and Dave Morris. Game Architecture and Design. Scottsdale, AZ: The Coriolis Group, 1999.

Chapter 3: Data Structures and Algorithms

Knuth, Donald E. The Art of Computer Programming. vols. 1–3, Addison-Wesley, 1998.

Musser, David R., and Atul Saini. STL Tutorial and Reference Guide: C++ Programming with Standard Template Library. Addison-Wesley, 1996.

Nelson, Mark. C++ Programmer's Guide to the Standard Template Library. IDG Books Worldwide, 1995.

Penton, Ron. Data Structures for Game Programmers. Premier Press, 2002.

Chapter 4: Design Patterns

Gamma, Erich, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns. Addison-Wesley, 1995.

Chapter 5: User Input

DirectX SDK samples.

Chapters 6, 7, and 8: Fundamental AI Technologies, Action-Oriented AI, and Tactical AI

AI Depot (very good articles on path finding and other techniques). Available at

Anglim, Simon, et al. Fighting Techniques of the Ancient World: Equipment, Combat Skills, and Tactics. Greenhill Books, 2002.

Connolly, Peter. Greece and Rome at War. Greenhill Books, 1998.

Forgy, C.L. "Rete: A Fast Algorithm for the Many Pattern/Many Object Pattern Match Problem." Artificial Intelligence 19 (1982): 17–37.

Funge, John David. AI for Games and Animation. AK Peters, 1999.

Goldsworthy, Adrian. Roman Warfare. Cassell & Company, 2000.

Miranker, Daniel P. TREAT: A New and Efficient Match Algorithm for AI Production Systems. Morgan Kaufmann Publishers, 1990.

Osprey Publishing books. An infinite source of accurate military information for the computer strategist.

Reese, Bjorn. Home page (navigation algorithms). Available at

Reynolds, Craig. Home page (boids, group dynamics). Available at

Russel, Stuart J., and Peter Norvig. Artificial Intelligence: A Modern Approach. Prentice Hall, 2002.

Woodcock, Sean. Home page (everything game AI). Available at

Chapter 9: Scripting

Aho, Alfred V., Ravi Sethi, and Jeffrey D. Ullman. Compilers: Principles, Techniques, and Tools. Addison-Wesley, 1986.

De Figueiredo, L. H., R. Ierusalimschy, and W. Celes. "Lua: An Extensible Embedded Language." Dr. Dobb's Journal 21, no. 12 (December 1996): 26–33.

Ierusalimschy, R., L. H. de Figueiredo, and W. Celes. Reference Manual of the Programming Language Lua 4.0. Available at

Liang, Sheng. The Java Native Interface: Programmer's Guide and Specification. Addison Wesley Longman, Inc., 1999.

Riley, Sean. Game Programming with Python. Charles River Media, 2003.

Chapter 10: Network Programming

Blow, Jonathan. "A Look at Latency in Networked Games." Game Developer 5 (July 1998): 28–40.

Comer, Douglas E., and David L. Stevens. Internetworking with TCP/IP Vol. III Client-Server Programming and Applications-Windows Sockets Version. Prentice Hall, 1997.

Levine, David, Mark Wirt, and Barry Whitebook. Practical Grid Computing for Massively Multiplayer Games. Charles River Media, in press.

Chapter 11: 2D Programming

Game Programming Gems (all of the books in the series). Charles River Media.

LaMothe, Andre. Tricks of the Windows Game Programming Gurus. Sams, 1999.

Pazera, Ernest, and Andre LaMothe. Isometric Game Programming with DirectX 7.0. Premier Press, 2001.

Chapter 12: 3D Pipeline Overview

Akenine-Möller, Tomas, and Eric Haines. Real Time Rendering. AK Peters, 2002.

Eberly, David H. 3D Game Engine Design: A Practical Approach to Real-Time Computer Graphics. Morgan Kaufmann, 2001.

Game Programming Gems (all of the books in the series). Charles River Media.

Morley, Mark. Frustum Culling in OpenGL. A tutorial. Available at

Chapter 13: Indoors Rendering

Abrash, Michael. Michael Abrash's Ramblings (Quake 3 visibility, lighting, and so on). Available at

Perez, Adrian. "Peeking through Portals." GameDeveloper 2 (March 1998).

Teller, Seth Jared. "Visibility Computations in Densely Occluded Polyhedral Environments." University of California at Berkeley. Available at

Chapter 14: Outdoors Algorithms

Blow, Jonathan. "Terrain Rendering at High Levels of Detail." Paper for the Game Developers Conference 2000, San Jose, CA.

Duchaineau, Mark, Murray Wolinsky, David E. Sigeti, Mark C. Miller, Charles Aldrich, and Mark B. Mineev-Weinstein. "ROAMing Terrain: Real-time Optimally Adapting Meshes." Available at, 1997.

Lindstrom, Peter, David Koller, William Ribarsky, Larry F. Hodges, Nick Faust, and Gregory A. Turner. "Real-Time, Continuous Level of Detail Rendering of Height Fields." ACM SIGGRAPH 1996 (August 1996): 109–118.

Snook, Greg. Real-Time 3d Terrain Engines Using C++ and DirectX. Charles River Media, 2003.

Turner, Bryan. "Real-Time Dynamic Level of Detail Terrain Rendering with ROAM.", April 3, 2000.

Ulrich, Tatcher, "Super-size it! Scaling up to Massive Virtual Worlds." (course notes) SIGGRAPH 2002.

Chapter 15: Character Animation

Ekman, P. and Friesen, W.V. Facial action coding system: A technique for the measurement of facial movement. Palo Alto, CA: Consulting Psychologists Press (1978).

Parke, Frederic I., and Keith Waters. Computer Facial Animation. AK Peters, 1996.

Watt, Alan, and Mark Watt. Advanced Animation and Rendering Techniques: Theory and Practice. Addison Wesley, 1992.

Chapter 16: Cinematography

Ablan, Dan. Digital Cinematography & Directing. New Riders Publishing, 2002.

Kuipers, Jack. Quaternions and Rotation Sequences: A Primer with Applications to Orbits, Aerospace, and Virtual Reality. Princeton University Press, 2002.

Chapter 17: Shading

Gooch, Bruce, and Amy Ashurst Gooch. Non-Photorealistic Rendering. AK Peters, 2001.

Kilgard, Marc. "Shadow Mapping with Today's OpenGL Hardware." Game Developer's Conference, 2000.

Meier, Barbara J. "Painterly Rendering for Animation." SIGGRAPH 1996.

Reeves, William, David Salesin, and Robert Cook. "Rendering Antialiased Shadows with Depth Maps." SIGGRAPH 1987.

Segal, Mark, et. al. "Fast Shadows and Lighting Effects Using Texture Mapping." SIGGRAPH 1992.

Williams, Lance. "Casting Curved Shadows on Curved Surfaces." SIGGRAPH 1978.

Chapter 18: Texture Mapping

Blow, Jonathan. "A Texture Cache." Game Developer's Conference, 1998.

Chapter 19: Particle Systems

Reeves, William T. "Particle Systems—A Technique for Modeling a Class of Fuzzy Objects, Computer Graphics." 17:3 pp. 359-376, SIGGRAPH 1983.

Witkin, Andrew, and David Baraff. "Physically Based Modeling: Principles and Practice." (online SIGGRAPH 1997 course notes). Available at

Chapter 20: Organic Rendering

Jakulin, Aleks. "Interactive Vegetation Rendering with Slicing and Blending." Eurographics 2000.

Staff Jensen, Lasse, and Robert Golias. "Deep Water Animation and Rendering." Gamasutra. Available at

Chapter 21: Procedural Techniques

Apodaca, Anthony A., and Larry Gritz. Advanced RenderMan: Creating CGI for Motion Pictures. Morgan Kaufmann, 1999.

Cook, Rob L. "Shade Trees." SIGGRAPH 1984.

Ebert, David, et al. Modeling and Texturing: A Procedural Approach. 3rd ed. Morgan Kaufmann, 2002.

Fernando, Randima, and Mark J. Kilgard. The Cg Tutorial: The Definitive Guide to Programmable Real-Time Graphics. Addison Wesley, 2003.

Lecky-Thompson, Guy. Infinite Game Universe: Mathematical Techniques. Charles River Media, 2001.

NVIDIA Corporation. Cg specification. Available at

Perlin, Ken. "An image synthesizer." SIGGRAPH 1985.

Proudfoot, Kekoa, William R. Mark, Svetoslav Tzvetkov, and Pat Hanrahan. "A Real-Time Procedural Shading System for Programmable Graphics Hardware." SIGGRAPH 2001.

Upstill, Steve. The Renderman Companion: A Programmer's Guide to Realistic Computer Graphics. Addison-Wesley, 1990.

Worley, Steven. "A cellular basis function." SIGGRAPH 1996.

Chapter 22: Geometrical Algorithms

Andujar, C. "Octree-based Simplification of Polyhedral Models," Ph.D. thesis. Available at

Farin, Gerald, and Dianne Hansford. The Geometry Toolbox for Graphics and Modeling. AK Peters, 1998.

Graphics Gems (all of them). Morgan Kaufmann.

Hoppe, Hugues. "Progressive Meshes." SIGGRAPH 1996.

Appendix A: Performance Tuning

Abrash, Michael. Zen of Code Optimization: The Ultimate Guide to Writing Software That Pushes PCs to the Limit. The Coriolis Group, 1994.

Game Programming Gems (all of them). Charles River Media.

Appendix B: OpenGL

Woo, Mason, Jackie Neider, Tom Davis, and Dave Shreiner. OpenGL Architecture Review Board. OpenGL(R) Programming Guide: The Official Guide to Learning OpenGL, Version 1.2. 3rd ed. Addison-Wesley, 1999.

Appendix C: Direct3D

Walsh, Peter, and Adrian Perez. Advanced Game Programming with DirectX 8. Wordware Publishing, 2001.

Appendix D: Some Math Involved

Dunn, Fletcher, and Ian Parberry. 3D Math Primer for Graphics and Game Development. Wordware Publishing, 2002.

Lengyel, Eric. Mathematics for 3D Game Programming and Computer Graphics. Charles River Media, 2002.

      Previous Section

    JavaScript EditorAjax Editor     JavaScript Editor