This list is interesting, but it sort of feels like missing the point for a list of books for game developers--that is, people making games, not people making game engines--to be ignoring anything to do with characterization, storytelling, linguistics and spoken construction, cultural dynamics, psychology, sociology, history...the stuff that turns a game from Shootzombiebecauseitsthere to something like The Last of Us. Eye candy is nice, but you don't need a hell of a lot of technical proficiency if you can make people care. Papers Please isn't pulling every last bit of oomph out of your GPU, but it's pulling strings in tons, tons of players. Saints Row The Third and Saints Row IV look 2-3 years old even with all the dials cranked all the way up, but I'm playing the hell out of them (and not even looking at Grand Theft Auto 5) because they're smart games with great dialogue and the self-awareness that makes not having a fully-standing third wall, let alone a fourth, completely work.
To me this list is like giving an aspiring writer a copy of Warriner's. Sure, that's part of it, but there's so, so much more important about making games than being a math grognard.
I'd rather game developers get--and understand--Shakespeare than Graphics Gems.
> Perhaps a separate list of books for "Game Designers" rather than developers would be helpful?
I contend that the difference is rapidly shrinking except in the superbloat of AAA studios. The sort of person who is going to read this list strikes me as much more likely to be an indie developer.
(That said, I've read all those books you mention and they're fantastic.)
I would put "The Art of Game Design" at the front of the bookshelf of anyone that does game design work: http://www.amazon.com/The-Art-Game-Design-lenses/dp/01236949.... To me, this is the most valuable book I have on my bookshelf. Every time I pick it up, I scarcely read more than a few pages before I'm setting the book down to make a bunch of notes for new ideas I've had. The book is truly outstanding and practical, and will help give you a framework for figuring out what you want our game to be.
I've been developing games independently now for several years. Easily the most difficult part is the design. Merely implementing the game-- if only that was my biggest challenge!
You're right to point out that this list is targeted towards game engine programmers and not people who want to make games in general, but really, "characterization, storytelling, linguistics and spoken construction, cultural dynamics, psychology, sociology, history" are important skills for turning generic shootemups into generic Hollywood blockbusters, not interesting games. There are a lot of elements that come together in a good game, and I'd rank 'quality of writing' far at the bottom of an ordered list of them. Aspiring game developers should be playing through the NES canon long before reading that of Shakespeare, so that they can learn to produce interesting games with unique challenges and experiences, rather than slop to intersperse segments of their Hollywood-dropout fanfiction-quality storytelling.
I sometimes rewatch movies for the sole reason that I like their soundtracks and think the visuals fit them well. I would never suggest that sound is the most important element of film, or respond to a novice looking for direction in their career as a film director by waxing lyrical about music theory. You can fit an excellent soundtrack into a terrible movie just as well as you can stick one into a terrible game (try Verytex[1] for the Sega Genesis sometime), and neither ceases to be a failure of a production when you do so.
> Aspiring game developers should be playing through the NES canon
Sure, but, dude. These are books we're talking about. Playing games is a given, to the point where if you're not, just go away.
The humanities, as I listed, are extremely valuable because they, too, show where we as people, not merely we as gamers, have been before--the tools we have developed that are put in the part of your toolbox for making people feel. Calling what it produces "fanfiction-quality" is silly and shortsighted and you're clearly wiser than that.
Story in games is like story in a porno--sure, it's nice to have and expected to be there, but if people were there for something other than the intended purpose they wouldn't be watching porn.
Devs (especially those playing at a level where they want books, as opposed to being jaded and just smashing more Unity/UnrealScript together) are better served by understanding software development and tools than by messing around with that other crap.
You can always backport story onto a game, add fluff, whatever, but if your core mechanics aren't tight and your code doesn't run nobody will play your masterpiece of storytelling.
Anybody who is willing to forgive bad, boring gameplay because "the story was soooo gooood" is a dolt, least of all because the first person to summarize it on TV Tropes or Wikipedia will obviate the need to actually play the game.
Games do remarkably well without much in the way of story: for example Doom, Minecraft, Angry Birds, Bejeweled, and Sim City. There are good games that have excellent stories, but the only reason we care about them is because they were paired with equally compelling gameplay.
I'm not sure I entirely agree with you. How do you define gameplay?
By personal experience, I was never able to finish games like Quake and Doom because I found them incredibly boring. The first FPS I finished was Deus Ex, which featured a storyline the likes of which I haven't encountered since.
What's more, I played the game at least five times, and haven't yet tired of it. I've discovered new elements nearly everytime - like a passage from a book lying around - that neatly ties into the theme of the game. The ambient music and the settings - although several years behind the cutting edge now - still makes for an incredible playing experience.
So, Deus Ex had a wonderful story and world, but you could have changed a lot of the items and themes around and still gotten the core gameplay: explore a place, solve puzzles, shoot enemies, navigate areas stealthily. The fact that it had a really solid story behind it and lots of fluff was icing on top--had the gameplay (the combination of movements, game rules, and objectives) been lackluster, you would've stopped playing (probably).
Compare this with games like Tetris, Mario, or even Starcraft: there are people that will wank on and on about how great the stories are, how rich the worlds are, how awesome the symbolism is--but the core act of playing the game is what makes them last for so long.
From the FPS genre, we see that Half-Life and its sequels had pretty flimsy stories (despite being regarded for having such great cinematic experiences for the time); however, their use of tight, solid gameplay (both in combat and in puzzles) are why they're loved so much today. Indeed, the better storytelling in Portal 2 was greatly offset by the more-restrictive gameplay it had compared to its predecessor: Portal was much more free-form in portal placement, and did less to hint what the obvious move was.
Bioshock Infinite was a masterpiece of storytelling, and had a genuinely thought-provoking ending and plot. Yet, the actual gameplay was not crazy far ahead of what we've seen in its contemporaries, and that's why it's probably not going to go down as one of the classics of gaming for this era.
~
The big problem with emphasizing story and narrative over gameplay is that it is very easy and seductive to write a rich game world with lots of symbolism and all the rest--but it's hard to see when you're not good at it, and you end up creating kitsch intellectual garbage. Gameplay, though, is easy to test, harder to create, and is what actually ends up immersing your audience and bringing them into your game.
I myself am making a distinction between game developers and game designers.
Also, I don't think you are making a proper analogy. I'd put DTP dudes, print people and so on as analogous to game developers, and writer as game designer. And it would still be stretching it.
> I myself am making a distinction between game developers and game designers.
How? There are rather few engine guys outside of Big Developers these days. I haven't read about 3/4 of that list but I've been perfectly capable of slamming together a cross-platform engine that completely meets my needs, using OpenGL/GL ES and OpenAL. Most of the people likely to read this sort of thing are going to be looking at the indie side of things where you wear all the hats.
And specialization is still kind of shitty even in the large. You don't want your programmers knowing how the things players really care about work?
I don't quite understand why somebody compiles a list of books that is less informative than the results list of a book search engine -- no reviews of the books, no personal remarks etc.
Yeah I wish there was some actual information, now it seems like you're expected to read every book on the list in some order or something? Just searching on Amazon gives you more info.
Are there good resources out there for experienced programmers who want to write games for fun? As someone who last wrote simple games 20 years ago, I'm a little bewildered as to where to begin - should I study OpenGL? Some kind of engine/toolkit above it? What do people use for sound? The world is all different and the past is another country etc.
Depends on what you want. If you just want to make games, you might be best off looking into an engine that supports the kind of game you want to make and start with that. Haven't gone down that road, so I cannot recommend anything.
If you want to learn the minutiae of game programming, I recommend getting a book that goes over all the relevant maths, in a practical way. I have "Mathematics and Physics for Programmers", and it's pretty good. (Do not be fooled by the title, it's a very hands-on game maths book.)
Learning about OpenGL, the graphics pipeline, complex transformations and all that is fascinating, but I'd put it off for now (most game math books, e.g. the one above, do cover it in the later chapters). Back in the day, I started by making really simple 2D games and worked my way up from there. 2D game development is very similar to 3D, just easier - in regards to both programming and game design.
I can recommend SDL 2 to anyone who wants to make 2D games. It now supports hardware rendering and Android/iOS, and generally doesn't leave much to be desired (like SDL 1, image loading, font loading, audio, joystick input etc. are all in there).
If you actually want to make games, as opposed to a game engine, I would pick an existing engine. I use Unity3D, which is becoming a standard. It uses Mono (mostly C# or Javascript). It has enough tutorials and documentation to get you started. If you're already familiar with another language/environment you can see what is available for that, but Unity is both more accessible and featureful than most other options.
The second thing I'd do is participate in a game jam, once you've had time to mess around a bit:
We have some tutorials that may be helpful if you want to make iOS games at https://www.makegameswith.us/tutorials/learn/. They guide you through learning Obj-C, Cocos2D (a game engine for 2D games), building an iOS version of Conway's Game of Life, and then cloning Angry Birds.
It depends on what you're interested in. If it's creating a engine from scratch then C++ and OpenGL or DirectX but if you just want to start programming games from day 1, I recommend getting the free version of Unity3D.
Even if you're not interested in creating an engine from scratch for a production game, I recommend you spend a few weeks learning OpenGL (modern OpenGL--not the fixed-function pipeline). Unity3D is great for some stuff, but understanding the core of what you're doing is valuable.
Haha...that's the hard part. I wish I had a good source for this, but, honestly? I learned through the guidance of a good friend (ex-nVidia). I wouldn't have gotten there without it, but at this point I can reason about (parts of) OpenGL as it "should" be reasoned about. Not all of it by any means--there is a lot of deep magic there--but I have the foundation to understand what other engines and tools are doing.
You can get remarkably far using SFML or SDL, or even just a tiny wrapper over OpenGL.
Using OpenGL 2.0 with some simple "Draw yourself" objects for sprite rendering works nicely--it'll be tricky enough to teach you something, but not hardcore enough to sidetrack you from making a game.
I cannot speak more highly of Game Engine Architecture by Jason Gregory[0] as an introductory text.
It's extremely readable for an 800 page textbook (I actually read it cover to cover), and covers a wide range of topics including basic software best practices and challenges unique to game development, introductory 3D math, rendering, animation, collisions / physics, and basic gameplay. The author speaks from a wealth of experience from having built several real game engines in the industry.
Interestingly, the most recent books mentioned in the list are from 2007 (e.g. GPU Gems 3)! What are some of the latest books in game programming that are really good, especially for mobile?
I've read or owned several of those books at one point or another. Some opinions:
The Game Programming Gems series has a wonderful variety of articles, and even though many of the graphics tricks are no longer super useful the software engineering and exposure to how other people think about systems is very useful.
The O'Reily Physics for Game Developers is kind of lacking--it's more a cookbook than anything else; the Eberly books are a much better use of time, and actually explore the math much better.
Computational Geometry in C by O'Rourke is wonderful, but a bit academic for almost any game development purposes.
Geometric Tools for Computer Graphics has a permanent place on my desk, and was very useful when doing graphics work as well as CAD software stuff. It actually bothers with some of the rigor of the linear algebra you'll use in graphics. Not listed but An Integrated Introduction to Computer Graphics and Geometric Modeling by Goldman does a superb job of the mathematics behind projective geometry for graphics, and is probably one of the best ways I've ever read for getting the real reason why we do the math we do. He's referenced in the Geometric Tools book.
Write Portable Code has some great insights, but if you've had to deal with cross-platform code for more than a couple of years you probably won't find too much new. For a beginner it's invaluable.
CLRS Introduction to Algorithms is very cool and all, but as Johnathon Blow pointed out in a talk the fact is that for game development you are better off using the dumbest, most straight-forward data structures you can. There are a lot of great things in there, but the sort of workhorse stuff you'll use in games (BSPs, quad- or octrees, hash tables, A-star, etc.) is either already made for you or is better covered elsewhere. Looks impressive on the bookshelf though.
AI Game Development was a very long, very interesting read, but tended to be somewhat academic. Programming Believable Characters For Computer Games is much better from a practical standpoint, surveying a large number of AI techniques and the implementation of examples for each one (very much a sort of "Seven AI Architectures in Seven Weeks" kind of affair).
~
Not on the list, but two I'd really recommend:
Game Scripting Mastery by Varanese is basically "Compiler and Interpreter Design and Implementation for High Schoolers". It's a massive tome, and covers both Lua integration and then rolling a scripting engine from scratch (lex and yacc and all).
Game Coding Complete by McShaffry is utterly fantastic. Another tome (just shy of 1000 pages), it goes over how to structure a game, covering a lot of important but banal stuff like resource management and passing Microsoft Windows certifications and project management and the like. It's also written in a very entertaining manner, and has lots of helpful anecdotes about why things should be done a particular way--often by counterexample of what happens when they weren't.
~
In general, the various Gems series are all worth reading. Morgan Kaufmann does a pretty solid job, and tends to have a lot of math (if that's your thing). Charles River Media is mostly good.
Premier Press Game Development varies widely in quality--some of the books are amazing, many are meh, some are garbage.
To me this list is like giving an aspiring writer a copy of Warriner's. Sure, that's part of it, but there's so, so much more important about making games than being a math grognard.
I'd rather game developers get--and understand--Shakespeare than Graphics Gems.