Top Games Programming Books
I have collected on this page the books I believe are the best books currently available for games programmers. I used to list all the books I had bought but I decided it was more useful just to list the best books. I have many shelves of games related books but only those below get looked at on any regular basis.
Game Engine Architecture
This is the first book I have seen that actually aims to be a complete text book for people studying games programming and it does it very well. It covers all areas of games programming and is an invaluable reference. It is a large book as it has an awful lot to cover and so in places it does not go into much low level detail. I was a little disappointed with this to start with but in fact it is not what this book is about. This book is more to do with presenting a complete collection of the various topics and introducing solutions across the whole field of games programming. You dip into it to find out how things are done and then you can follow the references if you wish more code level detail. While this is an expensive book I would still highly recommend it.
Game Coding Complete 3rd EditionAmazon Links:
The third edition of this book is now available. It is even better than before and so remains my number one rated games programming book. I am currently reading it from the start and making notes as I go through - it is full of brilliant tips for beginners up to advanced games programmers. I particularly like the description of a game structure that he develops throughout the book. This is an area that has has little coverage (perhaps due to developers not being allowed to talk about code at that level) and he describes it very well.
Review of second edition: I would suggest everyone interested in games development gets this book. It covers all areas of game development from an author who has worked in the industry (Ultima series of games). As well as describing traditional areas of a game like 3D graphics he also describes areas often missed by other books e.g. resource management, UI, main loop, loading ,caching etc. He introduces areas with chapters like: 'Dumb Stuff all game programmers should know' and '2D stuff every games programmer should know' and the level of humour and anecdotes is just right. I am amazed at how much insider detail he gives out about games he has worked on - I would dare not do that myself because of all the NDAs but he has obviously got approval to do so. Most of the book is not related to any specific platforms although where he does go into more detail it tends to be DirectX and Win32 programming. This is the kind of book you can use for some years as you develop your games programming skills.
Core Techniques and Algorithms in Game ProgrammingAmazon Links:
This book is more advanced than the above but has quite a lot of valuable information. As the name suggests the author covers many techniques and algorithms used in games. For example he talks about the use of Design Patterns, various data structures before going on to look at rendering techniques e.g. scene graphics for indoor and outdoor rendering. He covers areas quite deeply and it is a bit more hard going than Game Coding Complete but is still a very worthwhile read.
Game Programming Gems (1 to 8)
The Game Programming Gems series of books are all invaluable books containing chapters dedicated to the programming of different areas of a game from AI to Graphics. Each chapter is written by an experienced game developer revealing their techniques. I would not recommend these books for the beginner games programmer but for the more advanced they are a must.
Software Engineering and Computer GameAmazon Links::
C++ Programming Books
Accelerated C++ - Top RatedAmazon Links::
If you are new to C++ programming and have struggled learning from the more traditional books I would seriously suggest this book. It differs in approach from all other C++ books by describing useful programs that involve a number of areas of C++ right from the start. So high level data structures are used right from the start, you do not need to wade through each command available before getting on to something interesting. It concentrates on solving problems and explains the features of the language with respect to those problems rather than the other way around.
The C++ Programming LanguageAmazon Links::
Written by Bjarne Stroustrup the creator of C++ this is the definitive reference to the language and a book you will see recommended often. Personally I do not think it is a good beginners book, there are better ways to learn the language from scratch, but it is a book you will find in most C++ programmers shelves.
Effective C++ and More Effective C++
These books contain a number of items (the first has 50 the second has 35) that describe how to use C++ well. They act as a really good reference and have changed the way I program in many ways. Some example tips are 'Prefer const and inline to #define' , 'prefer new and delete to malloc and free', 'Make sure base classes have virtual destructors', 'Postpone variable definitions as long as possible' and 'Say what you mean; understand what you're saying'. Each tip is described fully with reasons, examples and discussions. For the intermediate to the experienced C++ programmer I would definitely recommend these books.
There are a number of free books available including the GPU Gems books from NVidia.
Software Design Books
Once you have a good grounding and some experience of object oriented programming you start to consider the arrangement of classes and how to solve awkward situations. This book is absolutely superb at helping you move code around and rearrange your classes into a much better design. He talks about bad code having a bad smell and he describes these situations and how you might solve them. For example if you have Duplicate Code he suggests methods to extract the code, extract the class, pull up the method or form template method. If you have a large class he suggests methods like extract class, extract subclass, extract interface etc. So the book is full of solutions to common code design problems. The examples are given in Java rather than C++ but they are never so complex that they cannot be interpreted by a reasonable C++ only programmer.
Design PatternsAmazon Links::
Once you have been programming in an object oriented language for some time you start to see the same design patterns occur again and again. You see the same shape of class relationships and you start to reuse these shapes in other projects. This was what the Gang of Four observed and they decided to formalise these patterns and produced this, now famous, book. If you have a design issue you can be sure someone else has seen a similar one and come up with a solution. This book describes many design solutions (patterns) commonly facing object oriented programmers. This book is very advanced and while everyone should probably own it the next book is better for learning to apply the patterns.
Design Patterns Explained - A New Perspective on Object - Oriented DesignAmazon Links::
Design Patterns can be tricky to understand and put into practice but once learned are an invaluable tool in object oriented programming. This book shows how design patterns can be applied in a practice and is much easier to learn from than the ‘classic’ Design Patterns book (reviewed above).
Pattern Hatching: Design Patterns AppliedAmazon Links::
This book can be considered a companion to the above. It uses examples to help describe the patterns and how best to apply them. This is quite an advanced book and may not be for everyone.
The Unified Modelling Language (UML) has become the most popular method of drawing and designing object oriented systems. When I was at University there were many different methods available but now, thankfully, UML has become the most widely used and hence the best to learn. UML aids in the design process by both clarifying ideas and by communicating those ideas to others in your development team. As game development teams get bigger and games become more complex development companies (at last!) to the more traditional software design processes.
UML DistilledAmazon Links::
I always like Martin Fowler's books and this is no exception. It describes all the areas of UML with plenty of examples and discussion. I particularly like the second chapters description of an outline development process. This is a great book but for those who just want to learn the areas of UML from scratch the book below may be preferable.
Sams Teach Yourself UML in 24 HoursAmazon Links::
it's one of those 24 hours books :) but it is actually a good learning aid and does get you started with the main areas of UML. I would recommend this to anyone wanting to learn UML from scratch.
Keyword book searches
Search for DirectX related books at your local Amazon:
Search for Games Programming related books at your local Amazon:
Amazon Book Shops