Books For Game Developers
mrelusive.com
mrelusive.com
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.
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.
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?
- A Theory of Fun http://theoryoffun.com/ (Raph Koster's blog is also excellent: http://www.raphkoster.com/ )
- Level Up! http://eu.wiley.com/WileyCDA/WileyTitle/productCd-047068867X...
- Game Design Theory http://www.crcpress.com/product/isbn/9781466554207
- Game Design Workshop http://www.crcpress.com/product/isbn/9780240809748
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 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.
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.
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!
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.
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.
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.
The second thing I'd do is participate in a game jam, once you've had time to mess around a bit:
http://www.ludumdare.com/compo/ http://globalgamejam.org/
If you need more information there are communities out there. Here's a short list:
http://gamedev.stackexchange.com/ http://forums.tigsource.com/index.php#2 http://www.gamedev.net/page/index.html http://forum.unity3d.com/forum.php
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).
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.
SDL is C, has lots of language bindings, is well-tested, and has lots of extensions (of vastly differing quality).
Also, if people are looking for an even bigger list of graphics books the Real-Time rendering blog has a comprehensive list:
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.
[0] http://www.amazon.com/Game-Engine-Architecture-Jason-Gregory...
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.
-GPU Gems http://http.developer.nvidia.com/GPUGems/gpugems_part01.html
-GPU Gems 2 http://http.developer.nvidia.com/GPUGems2/gpugems2_part01.ht...
-GPU Gems 3 http://http.developer.nvidia.com/GPUGems3/gpugems3_part01.ht...
The source code in the following books can be pretty dated (assembly level shader language) but the actual articles can be valuable.
-Direct3D ShaderX: Vertex and Pixel Shader Tips and Tricks http://tog.acm.org/resources/shaderx/Direct3D.ShaderX.Vertex...
-ShaderX2: Introductions and Tutorials with DirectX 9.0 http://tog.acm.org/resources/shaderx/Introductions_and_Tutor...
-ShaderX2: Shader Programming Tips and Tricks with DirectX 9.0 http://tog.acm.org/resources/shaderx/Tips_and_Tricks_with_Di...