Why isn't there a "definitive" game prorgamming book list?

So we have a “definitive” C++ book list over at stackoverflow here: c++ faq - The Definitive C++ Book Guide and List - Stack Overflow

And although several times somebody wanted to take that question down because it was more of a discussion/debate, it stayed up because it really isn’t a debate. The books in the list have been chosen by public consensus. That is, from individual to individual there will be differing opinions, but on the whole, that list is the “public opinion”.

Now, never mind that list. Introductory and beginner books from it are just as useful to a game programmer as they are to any, however once you start delving into more advanced books and topics, there is a big separation between game development programming and enterprise programming. You can’t really apply the same techniques that are used to develop business enterprise solutions to develop games. It would be similar to apply a screwdriver to a nail - you can manage to get the job done, but it won’t be pretty.

So instead one has to look for resources that are focused on programming games. And although many techniques can be applied in both fields, many others should not be. The most obvious differences aside, I’ll bring up two small examples to demonstrate two widely used techniques/methods in enterprise that cannot be directly applied to game programming - the STL in C++ and Test Driven Development.

From what I’ve read (and here I might be spouting some nonsense, because information on this is hard to find), you cannot use STL containers and algorithms when you develop for video game consoles due to exceptions. Instead, developers of such games have to either create structures of their own, or use libraries that mimic the STL, like EASTL. (Nevermind the propensity of many senior game programmers to “roll their own” in the video game industry).

TDD you could argue is fundamental to large enterprise software creation, yet for games this is not so. Many components of video games are either visual or rely on probabilities and chance, and although you could write tests for other parts of the game, this is mostly not done.

TL;DR: I have tried to highlite the difference between programming for business and enterprise solutions vs programming for video games above, and why I think we need to have such a list. And although there are lots of lists such as these if you search for them, these are hosted on random blogs and forums, usually compiled by a single person or small group, which often represents the opinion of that single individual or group, and sometimes are actually just thinly veiled advertisements. The real question I am trying to pose is how come after decades of game development, we (as in game programmers and users of the internet), cannot compile a list of game programming books as has been done for programming with C++ in the link at the top? Not just any list, however, but a “definitive” one that is accepted by the public consensus.

Do you know the reason why? It stops all the UI code from running just to popup an error. The alternative is to log all exceptions to disk or debug console.

STL has no equivalent in PowerPC (PS, XBOX older versions) due to the usage of older version of GCC C++ compiler in the toolchain. The stack cannot unwind correctly in the older versions of GCC and that reason is no longer valid for the latest version of GCC C++ compiler.

You can contact Dinkumware to license the source-edition of the STL with simplified exception handling.

TDD is still used. You need to learn how to set it up. Did you check this?
http://blogs.unity3d.com/2013/12/18/unity-test-tools-released/

Building a definitive book list for C++ is easy because it’s

a) tiny - it’s just one programming language
b) slow to change - before the changes in 2011, the last time anything in the core language changed was 1998

so there’s really only so much to say about it, and books about it don’t go out of date.

By comparison, game programming is

a) vast - games can be written in the vast majority of programming languages and incorporate a huge range of techniques
b) frequently changing - while some techniques stick for a few years, many others are obsolete/superseded within a few months.

so a definitive reading list would be long and out of date quite quickly.

There’s a paragraph in one of my favourite writings, The Artistry Of Code.

Then how can one ever hope to grow in this field? I don’t mean to imply that you could do so by just reading a whole bunch of books, but what I mean is that if it’s so vast, so different from game to game, and changes so rapidly, then how can one ever at any point proclaim themselves to be a knowledgeable and experienced game programmer?

  1. You ship good product, repeatedly.
  2. You stay curious, and try and learn new things.
  3. You try really hard to surround yourself with people better or more experienced than you. Never be the smartest guy in the room.

Having your peers say that you are knowledgeable and experienced is probably what you want to achieve.

You are making it too complicated. There is a simple explanation. Programming is an art form, just like music and painting. Remember with programming you are creating something from nothing. Your only limitation is your imagination.

Work at a game company and find out. You start at the bottom and work your way up.

Other example:
You dream of being an AAA graphic designer. If you do not have skills, you start at the very bottom, doing the simple things, then going up, gaining more experience by handing more difficult work, and then after several years, reach the top.

That’s why a lot us become experts and specialized in one field that we’re passionate about instead of trying to be a jack of all trades.
It’s similar to being a Doctor, you could be a heart surgeon, brain surgeon or just a GP. You have to stay up to date on your field all the time and there is no “The Future-Proofed Game Developers Programming Guide”.

It’s not that one can’t use books, articles, lectures, samples etc to learn more and grow in the field, it’s that building a definitive list of those resources is very difficult compared to something like C++. In practice you don’t try to survey and capture the entire field like that. You focus on smaller parts of it and focus on what your current project needs you to do, and then it does become possible to find resources that will help you.

Also, in so far as there are books that “every game programmer should read”, none of them are specific to game programming; they’re general software engineering texts.

I’m not so convinced that a C++ list would be so short and simple. Sure, if we limit it to “knowledge about the language itself”. But that’s like limiting knowledge about creating furniture to how to use tools - it’s not at all the whole picture.

Er, it’s been done, though? Link in the OP…

Usually when you one skilled developer meets another skilled developer, they usually talk about their private coding libraries, favourite UI toolkit, favourite patterns library, last big projects you previously did.

You have the book. So what? Did you read the whole thing? Books are useless as they are not latest. If you want to read really good articles, go to Arxiv algorithms and read about the latest on computer algorithms.

When you talk about (library), what new practices did you learn or make use of, using (library)? Were you previously part of the ((name) development team)? Things that turns heads are you had access to (source code of this product) because you were part of their development team, you were granted access to (source code) or you were one of the project leaders for this large (product).

The other talking point is style of managements and practices. Are you able to instil those under you to code well, draw well, and model well?