Game Programming Gems 5 (and recently 6 and 7 came out) - Like any other Game Programming Gems book this one is no exception; it is just great. You can read it from front to back or use it as a reference if you’re looking for solution to common game programming problems and even programming problems in general. It covers seven sections - general programming and mathematics to AI and physics and finally to Graphics, Network, and Audio. This one is the most recommended game programming book series.
ShaderX - Another book series. I read the first three and use them as a reference whenever I look for cool shader effects. The 4th and 5th volumes are as good as the predecessors. Wolfgang Engel is a good editor and I heard him speaking at several developer conferences. This guy knows a lot about shaders.
GPU Gems 2 - Yet another book series. Good stuff for Nvidia developers, but since most shaders work fine on ATI hardware too (except when you tried to write PS3.0 shader when ATI still hadn’t any cards for that), it is a good shader book. It covers some nice tricks and can be compared to the ShaderX books. Unlike the Game Programming Gems or the ShaderX books, every page is printed in color and this also makes it a good colorful picture book where I can show effects to my artist guys, who won’t even bother to look if it isn’t a nice picture.
Shaders for Game Programmers and Artists - This is one of the first shader books I read, but even for a first book I think it is too shallow. It jumps right into post-screen shaders that are very advanced in my opinion, and then continues with much easier shaders. The book is all about ATI’s Render Monkey tool, which I don’t like because the output is unusable (I need fx files). It is still a good shader book and may be helpful for artists, beginners, or people who just want an overview of shader technologies.
Programming Vertex & Pixel Shaders - This book is the best and most complete shader programming book for anyone seriously wanting to go into shader technologies. It is a bit harder to read than the previous one and sometimes way too mathematical instead of just having fun with shaders, but it pays off because you learn all the basic shader technologies you will ever need. This is another book by Wolfgang Engel (like the ShaderX books, which are more advanced).
AI Game Engine Programming - This book goes into a lot of first-person shooter AI problems and discusses useful techniques, not only about AI, but also how to use scripts (Lua), how to write all kinds of state machines, and neural nets. The CD not only contains all the source code and figures, but also a bunch of useful web bookmarks sorted by category. I like that.
Programming Game AI by Example - This book is a bit more for beginners and intermediate programmers than the rest of the books here. It is still a great book, but it “only” explains how to get into AI programming, and as soon as you are ready to go, the book ends. The book starts with math and physics and does a good job explaining them. Then it goes to state-driven design and continues with game agents. It also covers questions about path finding, fuzzy logic, and scripting. It is written by the founder of www.ai-junkie.com and written really well. My only criticism is the fact that it is a good beginner book. Anyway, I got it together with the previous book at the same price and that’s really ok. Maybe it is good for a reference or to tell interns or wannabe AI programmers “Go read that.”
AI Game Programming Wisdom I and II - Similar to Game Programming Gems, this series is all about finding skilled professionals writing chapters and articles, which do really help you out. Steve Rabin is the editor and he also edited the Game Programming Gems AI sections; he also is the creator of www.AIWisdom.com. Like the other two AI books I haven’t read all of it (I’m so busy, you know), but from what I’ve seen and read this is a really helpful resource when doing anything related to AI programming.
Refactoring: Improving the Design of Existing Code - Someone told me when I read this book on the flight to the PDC two years ago that you could probably dry up a cellar with this book. Maybe he is right; this book is all about crazy design pattern and rules. The first couple of chapters are good to read and the rest is more of a reference. Anyway, the idea counts and refactoring is one of the most useful processes today in writing big programs. This very useful book was first released in 1999 and still applies 100%.
Rapid Development - This is a good book about software design and keeping schedules, but it is a bit too long and sometimes hard to read (you know I have this problem of reading only half the book and then never finding time to finish it). It was written back in 1996 and the techniques described still apply, but some of the ideas are not as flexible as they could be with all this new technology around (for example, when using Agile Methodologies you have to plan differently). Still it is a very good book and it contains a couple of interesting stories from big products like MS Word and how they never kept their schedule.
Code Complete 2 - One of the best books ever for any kind of programmer. It is about describing the process of developing software and helps you to find out the most efficient ways to manage your projects. It goes into great detail by explaining which data structures, which routines, which loops, or which strategies are the most useful. It is one of the books I would recommend to both new and experienced programmers. This book just helps anyone and should be on every programmer’s desk, not just in their book shelves.
Managing Agile Projects - What does Agile Projects mean? It is about scaling and customizing your project depending on the customer feedback. That still sounds too vague? Ok, it means that you don’t plan every single bit before writing code, but you cut your project into smaller pieces and only plan the overview and then directly start developing. Now you can present a very early version really fast and with the help of feedback (customers or yourself) you can adjust your project instead of wasting time and resources developing something no one wants. You can also shorten specific parts of your project if you see there is no time left or other parts are more important, which again is not possible if you had planned every bit of your project in advance. It is a technique that goes hand-in-hand with unit testing and refactoring (see the Refactoring: Improving the Design of Existing Code book above). This book gives a very broad overview and doesn’t really talk about coding, it’s just methodologies.
Maximizing .NET Performance - I’m a performance freak. In the past I often tried to re-implement existing and working code into assembler code just to see how much faster it could get. Later I found out that it is often much more important to work at a much higher level and rethink a problem until the solution is good enough to run very fast even if not optimized to every bit. This is still true and I still think that most performance problems come from bad coding or suboptimal algorithms and not because of the language. However, to even think of good solutions you need some knowledge of what is possible, what is fast, and how certain things affect your performance. This book gives you a very useful inside view of .NET and covers a lot of tricks and tips about .NET performance. It is also a good reference book.
Code Generation in Microsoft .NET - I first heard of this topic from the DotNetRocks radio show where the author Kathleen Dollard was the guest a few years ago. She talked about code generation using templates and other tricks. I immediately bought this book. It is mostly written in Visual Basic, but a C# conversion exists too. It does a good job explaining how to use code generation with the Code Dom, but does not go into detail about MSIL (which I was more interested in). Anyway, the book is written nicely and I learned a lot from it. The book presents an entire framework for building SQL bindings, stored procedures, and building Win Forms from XML templates. It is also one of the first books on this subject (and maybe still the only one going into the Code Dom instead of MSIL).
Programming in Lua - This is the book for Lua programmers. It is also available for free to download from lua.org. I first read the online version and then bought the book because it is so good and it helps to have a reference. Lua is a very simple script language. But sometimes it is so simple that you just don’t know which keyword to use or what to type. Having a few useful code examples every other page is the biggest help ever. With the help of this book I learned Lua in 1–2 days and could do really useful stuff with it (instead of just writing hello like most languages you learn in a short time).