I recently purchased Jason Gregory’s book Game Engine Architecture, which is a widely acclaimed overview of creating massive game engines. I’m in a phase of my education where I am absorbing everything I can possibly think of when it comes to game engine design, so it was a no-brainer to order the book. So far it has proven to be a great find, though I have enough other books to keep me busy in the meantime…
Jason has maintained a blog where he posts and answers some of the questions that he gets from readers. It’s a terrific read, some of the answers are more technical than a new student may be ready for, but overall, there are some good discussions that go on. There are a couple especially interesting posts on assembly language, which go to show that while programming in assembly isn’t all that necessary anymore, understanding what is going on at an architecture level is ESSENTIAL for making solid game engines.
A couple other interesting notes to make….
-Jason stresses the importance of understanding 3D math, especially vector math. He actually goes so far as to say his company, Naughty Dog, tests interviewees on 3D math first, and if they clearly don’t understand it, then they don’t even ask for their software engineering background. It makes sense, really. Naughty Dog is a AAA video game company that creates cutting edge 3D games. It makes sense they would want all of their programmers to be well-versed in 3D math. It’s like an engineer who doesn’t know physics – you want ALL engineers to understand physics.
-Instead of learning DirectX and trying to build your own game engine, Jason suggests taking an already-existing engine and using it to create your own gaming experience. This was very insightful to me. Sure, if you really like back-end work and intend to spend your career getting every cycle out of your engine that you can, then this is going to be useful, but that’s just a small subset of game programmers. Instead, why not take an engine like Ogre3D and build something where you can practice creating gameplay, and not just another derivative graphics demo? Or even look at the Half-Life engine and create a mod? This way you will be focusing on the game experience, and not getting lost in the minutiae of a complex game engine. After all, you’re going to be working with many other programmers, so even if you do end up working on a game engine, you will never be asked to try and understand the whole thing at once.
There is also a good amount of errata listed in the various posts, and on the website for the book as well. Overall, this is a great resource, both the book and the website. If you’re a budding game programmer this is a great resource for an overall look at what you will be building.