Books for Game Programmers
You can't learn everything you need to write a game
by reading a book, you will get further by experimenting and setting your own goals. For many aspects of game programming, however, there exist one or two essential purchases. Books
that you will find to be value for money in your quest to write great games. These are the titles
I've listed below, along with some popular science and fiction books that seem to be ubiquitous
in game programmer circles.
All books are linked to amazon.com for your convenience. Click the links to buy these books today and get an average of 20% off the store price!.
AI Game Programming Wisdom
A great new book edited by a big contributor to the public knowledge of AI games programming, Steve Rabin. Steve was one of the early visitors to my A* tutorial website and helped me to improve and clarify the text.
To AI Wisdom Steve brings this attention to detail and his generous spirit of sharing knowledge along with some 45 authors, who amongst them have written 70 articles on Game AI.
So the question is do you need this book? In my opinion if you go anywhere near the AI of a game, then this book is brimming with useful articles. The Game Gems books would be useful too, as they cover some of the more basic ground, but for an experienced AI programmer this book is essential reading.
Game Programming Gems
This book is a great collection of games programming articles and I would recommend game programmers of all levels; from hobbiest to guru.
This first book in the series has a good set of articles on A* path-finding for games.
Game Programming Gems 2
Second in the important collection of games programming articles.
AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis
You may have read Design Patterns; the book describes common solutions to problems and formalises them so they can be described and used in Designs. Some examples of pattern's are being used in my current project. Singleton's for example (classes with only one instance) and Factories (classes that make and manage classes).
AntiPatterns is the opposite. These a patterns in software implementation, design or management that are common across projects. Many of these are related to game programming, and this book has some ways you can manage and describe problems in your day-to-day programming experiences. One good example is the blob antipattern. How many times have you had a piece of code from somebody that is so complex and large that you couldn't hope to understand it's structure completely? The blob antipatten includes ways to manage that kind of complexity to get re-usable documented behaviour back from the chaos.
Generic Programming and the STL : Using and Extending the C++ Standard Template Library
People have differing opinions on STL in games. For me I would just about recommend it. I find the code is pretty ugly, the library is hard to debug, for example if you want to look at STL data in a debugger you're out of luck. It's also probably not as efficient as hand coded algorithms and data structures for specific problems. Why I do recommend it is because it gives you rapid access to many algorithms so you can quickly swap between them when optimising. It's very well documented, and buying this book is all the tutorial and documentation you'll need. Finally the overhead is now insignificant on most game platforms, that we can happily use it and get more cross-platform code.
Writing Solid Code : Microsoft's Techniques for Developing Bug-Free C Programs
By Steve Maguire
A much lighter book than Code Complete, which in my opinion is much too big to be of use. This book is more concise and to the point. If you don't like debugging you should read this so you have to do it less.
Debugging the Development Process : Practical Strategies for Staying Focused, Hitting Ship Dates, and Building Solid Teams
By Steve Maguire
This book tries to put the case that we shouldn't be working 60 hour weeks in game development. While this is probably not true, those extra hours certainly can put you ahead of the competition, it does make some good points. There is a difference between blindly hacking for 60 hours a week at a doomed project, and intelligently organising your schedule and working smart so that 60 hour weeks are kept to a minimum.
The Art of Computer Programming : Fundamental Algorithms (Vol 1, 3rd Ed)
By Donald Ervin Knuth
A rigorous and mathematical book about algorithms. Quite readable regardless.
The C++ Programming Language
By Bjarne Stroustrup
Bjarne is the father of C++, so who better to write the definitive manual. Even if you learn C++ from another book I think the first few chapters of this give a good feel for the language, and how it came about, that you won't find anywhere else.
Introduction to Algorithms (MIT Electrical Engineering and Computer Science Series)
By Thomas H. Cormen, et al
This is the bible of algorithms. Not as accessible as you would like, but rigorous and comprehensive. You really can't know too much about algorithm analysis. A lot of optimisation in games is done way too late simply because the original code design was not done considering a range of appropriate algorithms. What you end up with is having to optimise bad algorithms with fast assembler.
Java in a Nutshell : A Desktop Quick Reference : Deluxe (Nutshell Handbooks)
By David Flanagan
Java is in use in games companies already. Personally I use it often for writing quick tools and utilities. Don't be put off by the speed, in a few years Java could well be used to control game logic, whilst Physics, Graphics and AI may be handled by compiled native code modules which the Java code simply calls. This book is an ideal tutorial but with complete language reference.
Perl : Programmer's Reference
Perl is a useful tool. Don't be put off by it's ugly syntax, and boy is it ugly. Once you master that it is the most powerful language for doing anything web based, and great for scripting tools for processing art and level data. I would also recommend Python, but Perl is much more expressive, and that seems to give it an edge. It's also older (no that's good) so you get more peer support and prebuilt libraries.
Modern Compiler Implementation in C
By Andrew W. Appel, Maia Ginsburg
If you fancy writing a compiler, or even working with the code for an existing one then this is the bible in that sphere. Scripting languages are popular in games, and you will be well endowed with the skills to write on after reading just the first four chapters of this book.
3D and Graphics
3D Games, Volume 1 : Real-time Rendering and Software Technology
Alan Watt & Fabio Policarpo
This would be my first choice for a 3D book. It covers the math as well as providing real-time games related code samples, and lots of game specific techniques. As a bonus you get some AI and networking chapters at the end. Way better for the beginner than some of the more academic graphics text, yet advanced enough for a professional.
Computer Graphics : Principles and Practice, Second Edition in C
By James D. Foley, et al
Not an easy book to read. What this book gives you though is a very forward looking and complete reference to 3D graphics. Each time a new generation of console or graphic card comes out you usually end up reading this book for the theory behind the techniques.
Michael Abrash's Graphics Programming Black Book Special
By Michael Abrash
Michael's books are well written and entertaining. Although this book won't teach you the secrets about what is cutting edge graphics technology today, it will teach you how to learn to be cutting edge. Follow through his optimisation processes and see how code and ideas can be refined over time. He offers insights from experience that will help you to be the next code god.
Artficial Life and Artificial Intelligence
Artificial Intelligence: A Modern Approach
By Stuart J. Russell, Peter Norvig
The current standard text on Artificial Intelligence. Good coverage of the subject, source code, and very readable.
By Elaine Rich, Kevin Knight
A good backup for the Russell text, very readable.
The Feynman Lectures on Physics : Commemorative Issue (3 Volume set)
I LOVE these books. Having read a couple of books on Feynman's life I discovered these books, which are essentially lecture notes for a three year undergrad physics course. The guy practically rewrote Quantum Electro-Dynamics, worked on the Manhatten project, investigated the shuttle disaster, and plays the drums like a master. This guy rocks, and when it comes to explaing physics I don't think you'll find a better teacher, hence the bible of physics is these three books.
Artificial Life : A Report from the Frontier Where Computers Meet Biology
By Steven Levy
This is a wonderful introduction and history to Alife. You will almost certainly want to write some Alife software for yourself after reading this. Levy is a compelling writer and explores both the early A-Life hackers lives, and their discoveries with equal depth.
Chaos : Making a New Science
By James Gleick
If you enjoyed Steven Levy's introduction to ALife then you should enjoy this introduction to Chaos. I found myself writing programs to draw Chaotic equations to the screen and marvelled at what before were just pretty patterns, but after the book seem to be trying to tell you something interesting about the low level operating system of the Universe.
The Language Instinct
By Steven Pinker
This book comes close to explaining some of the mystery's of the human mind. Pinker has a love for the subject that he does not hide and you can't help but share his enthusiasm. A possible explanation of the origin of complex human communication and even humour makes this one of the most exciting books of the century.
Consilience : The Unity of Knowledge
By Edward O. Wilson
Wilson is a reknowned naturist and scientist. This book is based on a lifetime of experience as a scientist and puts the case that science needs to more unified and less divided to get further. Interesting book.
In Search of Schrodinger's Cat : Quantum Physics and Reality
By John Gribbin
Gribbin describes Quantum Theory with great competence and obviously enjoys himself while doing do. Amazingly some of the advances in the science he mentions at the end of the book are already making headlines and showing up as real products such as a hard drive by IBM. Quite frankly I'm scared of having to account for Quantum effects when I'm programming machines in ten years. Let's hope I'm a manager by then