May 2016: I have updated this page by removing some old books and updating versions. I will add some more newer books soon.
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.
The fourth edition of this book is now available. It is even better than before and so remains one of 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 previous 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.
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. Update May 2016: Now in its second addition I still highly rate this book.
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.
Update May 2016: the Gems books are still useful but naturally some of their content is now out of date. There is a Best of Games Programming Gems that just takes the ‘most valuable and timeless articles’ from the previous books.
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.
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. Update May 2016: the latest version includes the C++11 standard.
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.
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.
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. Update May 2016: for a games specific take on patterns see the excellent Game Programming Patterns book at the top of the page,
Amazon Book Shops
© Keith Ditchburn 2004-2016