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."
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.
Gamma, Erich, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns. Addison-Wesley, 1995.
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 www.ai-depot.com.
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 www.red3d.com/breese/navigation.html.
Reynolds, Craig. Home page (boids, group dynamics). Available at www.red3d.com/cwr.
Russel, Stuart J., and Peter Norvig. Artificial Intelligence: A Modern Approach. Prentice Hall, 2002.
Woodcock, Sean. Home page (everything game AI). Available at www.gameai.com.
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 www.lua.org/manual/4.0.
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.
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 www.markmorley.com/opengl/frustumculling.html.
Abrash, Michael. Michael Abrash's Ramblings (Quake 3 visibility, lighting, and so on). Available at www.bluesnews.com/abrash.
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 http://sunsite.berkeley.edu/NCSTRL.
Chapter 14: Outdoors Algorithms
"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 www.llnl.gov/graphics/ROAM/roam.pdf, 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):
Snook, Greg. Real-Time 3d Terrain Engines Using C++ and DirectX. Charles River Media, 2003.
"Real-Time Dynamic Level of Detail Terrain Rendering with ROAM." http://www.gamasutra.com/features/20000403/turner_01.htm, 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.
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.
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.
Blow, Jonathan. "A Texture Cache." Game Developer's Conference, 1998.
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 www-2.cs.cmu.edu/~baraff/sigcourse.
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 www.gamasutra.com/gdce/2001/jensen/jensen_01.htm.
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 www.cgshaders.org.
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 http://www.lsi.upc.es/~andujar/.
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.
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.
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.
Walsh, Peter, and Adrian Perez. Advanced Game Programming with DirectX 8. Wordware Publishing, 2001.
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.