This is a mammoth book but the author seems to be a little unsure as to what audience he is writing for. Let me give an example, on page 424 we find:
This is a perfect place for C++ and a class, but I want to keep it simple in case you're a straight C user. However, as an exercise, I would like all C++ programmers to convert all this polygon stuff into a nice class.
Yet on the next page we have:
Note that I've used the C++
newoperator to allocate the memory. Thus, I'll have to use the
deleteoperator to delete it. In straight C, the allocation would look like
(VERTEX2DI_PTR)malloc(triangle.num_verts*sizeof(VERTEX2DI)).
Now the astute among you will have noted that he must have been using
new[](look carefully at that
malloc) and therefore would need to use
delete[]to delete it.
I think this is the fundamental flaw with this book, it will attract programmers whose programming skills are not really up to the task and allow them to make errors. There is a wealth of good guidance on the practicalities of game programming (note, not about designing games) but inattention to detail means that the reader must already be a fluent C++ programmer (I think the idea that C would be enough is something of a dream these days). Given that you are already competent at the mechanics of programming and have some fairly solid experience with design then this book could be very helpful if you are moving to games programming in a Windows environment.
You will almost certainly be irritated by the author's coding style (littered with all upper case typenames, C-isms etc.) but when you get to grips with the meat of his material you will find plenty of useful material. However if you are a typical newcomer to programming who has some idea that games programming is like pop music then this book will just allow you to dig an even deeper pit for yourself. At least this book sticks to programming and does not dabble at games design at the same time. Please note that a game designer simply needs to know what can be done programmatically, a programmer simply has to understand what the games designer wants to achieve. It would be rare that the same person would be competent to do both.
I could say a lot more, but to my mind, despite the title this is not a book for the young enthusiast who will not be able to revamp poor code but one for the experienced programmer contemplating a career move.