- Paperback: 960 pages
- Publisher: Cengage Learning PTR; 4 edition (March 5, 2012)
- Language: English
- ISBN-10: 1133776574
- ISBN-13: 978-1133776574
- Product Dimensions: 7.8 x 1.8 x 6.5 inches
- Shipping Weight: 3.4 pounds
- Average Customer Review: 61 customer reviews
- Amazon Best Sellers Rank: #185,061 in Books (See Top 100 in Books)
Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
Game Coding Complete, Fourth Edition Paperback – March 5, 2012
Customers who bought this item also bought
Customers who viewed this item also viewed
About the Author
Mike McShaffry, aka "Mr. Mike," began programming games as soon as he could tap a keyboard. After graduating from the University of Houston, he worked for Warren Spector and Richard Garriott, aka "Lord British," at Origin Systems on Martian Dreams, Ultima VII: The Black Gate, Ultima VIII: Pagan, Ultima IX: Ascension, and Ultima Online. Seven years later he formed his first company, Tornado Alley. Mike later accepted a position at Glass Eye Entertainment, working for his friend Monty Kerr, where he produced Microsoft Casino. Ten months later, Monty asked Mike and his newly assembled team to start their own company, called Compulsive Development, which would work exclusively with Microsoft on casual casino and card games. Mike served as the Head of Studio, and together with the rest of the Compulsive folks, produced three more casual titles for Microsoft until August 2002. Compulsive was acquired by Glass Eye Entertainment to continue work on Glass Eye's growing online casual games business. Mike was later recruited to start an Austin studio for Maryland-based Breakaway Games. Mike is currently self-employed, helping teams build a positive, creative and energetic environment so they can do what they do best--make great games.
David "Rez" Graham is a self-taught programmer who has been writing games in his basement since 1996. In 2005, he landed a programming job at Super-Ego Games where he worked on mini-games and AI for Barbie Diaries: High School Mystery for the PC. He also worked on a comedy adventure game called RatRace for the PlayStation 3. In 2008, Rez went to work for Planet Moon and worked on Brain Quest for the Game Boy DS and Drawn to Life: The Next Chapter for the Wii. Rez went to PlayFirst in 2010 where he worked on Diner Dash: Grillin' Green for the iPad and was the lead engineer for Wedding Dash for the iPhone 4. Rez currently works at Electronic Arts as an AI programmer for the Sims division. He has shipped two titles there, which include The Sims Medieval and the Pirates & Nobles Adventure Pack. He is currently the lead AI programmer for an upcoming Sims title.
61 customer reviews
Review this product
Read reviews that mention
Showing 1-4 of 61 reviews
There was a problem filtering reviews right now. Please try again later.
Long story: There are few textbooks required by the Digipen Institute, one of the best game programming schools in the country. It emphasizes working together with your classmates to actually learn how to create games, so there is not a lot of actual book work to be done. This is one of those few books required. That alone should be enough to convince you it is worthwhile.
Let's go into a bit further though. The game industry has been alive for decades now, and that has led to standards and styles of programming that proves more effective than other methods. It is accepted that C++, and object-oriented programming in general, is the way to go. Event-driven programming is common in large titles. Resource management is a common theme in a game with gigs of data that needs to be continually streamed in. Multiple controller schemes need to be supported.
The authors of this book have worked in the industry, and this book is their offering to help teach you how modern games are made. Other books will manually load in individual resources, or will read the state of the keyboard directly in their examples. This is fine when you are first learning DirectX, for instance. But if you plan to work with a team, and you have tens of thousands of lines of code to debug, much of which you may not have actually written yourself, you need a better structure supporting your game, or it will become top-heavy and impossible to finish. This is what they are focusing on getting across.
As good as the book is, even more valuable is the sample game that has been built and evolved since the first edition of this book. Teapot Wars is freely available on Google Code, and it is a working example of everything they are trying to get across. It actually has more complex examples of the topics discussed in the book, and internally it is a basic version of a AAA title. Understand its structure and you will have a massive leg up in your quest to become a game programmer.
So this should be the book to buy right? Just understand it and you will be good to go, right?
Well.... yes and no. This book assumes several things, without really saying them outright. It assumes you have proficiency in object-oriented programming, especially in C++ programming. They assume you are comfortable with the concepts of inheritance, using abstract interface classes, overloading, encapsulation, and all those fun names you see thrown around in the Wikipedia definition of OOP. They build some fairly complex abstract factories and just throw them at you in the book. It took me months upon months of carefully reading C++ books and going through their code to finally really start to get it. I bought this book right when it came out, and I only now feel comfortable to write this review.
So this absolutely should NOT be your first book. You must study OOP and C++ first. Another book that Digipen uses, C++ for Game Programmers by Noel Llopis, may be a good start. I went through Thinking in C++ by Bruce Eckel years ago, as it is freely available online, and it's a great start too.
This book uses the DXUT framework, which has been deprecated by Microsoft and stripped from their MSDN online documentation. No big deal, it still works fine, but the main function may seem tricky to you because of it. They do not use DirectInput which is good, as Microsoft is no longer supporting it and it doesn't seem to work in 64-bit code. It assumes you understand how DirectX works when you get to the graphics chapters, so understanding the graphics pipeline is a good idea.
So you see, this is not the kind of book that says it's the only resource you need. In fact, it's probably the third or fourth resource you probably need. There's a steep learning curve, though kudos are due to the authors for being extremely available on their forum at [...] Seriously, they respond within 24 hours to any question anyone has.
However, if you understand everything in this book (a process that could easily take a year or more), you will have a clear idea of how a modern AAA game is created. It's just a framework, but you will probably be ready to start taking on major game programming projects. And that is a compliment that no other book on the market likely can boast of.
So in conclusion, I think any budding game programming will be doing themselves a HUGE advantage by making sure they understand everything this book is talking about. It is the more Complete book I have ever read on game programming, and is 100% essential to anyone taking themselves seriously. Just make sure you understanding object-oriented programming in and out before you begin, or you will be very lost very quickly.
The authors, both seasoned game developers, working on the Ultima series and various Sims games, have a lot of collective knowledge and it comes through in the book. There are a lot of snippets and stories about things the went right (or wrong) on the production of some of the games they worked on. I found these insights to be refreshing, and certainly interesting to read about. It also helps to teach people what professional game development is like, and things to expect if you are looking for a job in the industry.
Aside from the stories, there is a lot of topics covered in the book. They go over game loops, component architecture, process system, an event system, 3D math, DirectX, audio, collision and physics, scripting with Lua, AI, a game editor in C#, debugging, version control, multi-threading, etc. Really almost everything you would need to know. They weren’t joking when they said “Complete.” Although the book is long, it’s really amazing what they managed to cram in there. Granted, most topics only get one chapter, which isn’t really enough to fully cover everything. But it’s a great overview on a ton of stuff.
I found the coverage of the event and process system to be every insightful, and I will probably be using a variation of these in my own engine. The event system basically allows different objects to fire events at key points, and then have other objects respond without tight coupling. The process system allows objects to spawn logic loops, that will be updated along with the rest of the engine. So, for example, the player can hit a key to throw a grenade. That would fire an event, which would spawn a grenade with the proper velocity. The grenade itself would have a process, that would count down a few seconds and then explode. At the time of explosion, this could fire another event, which would then cause the audio system to play a sound and the particle engine to create a visual effect. This is a very clean way of handling events and processes, and this is probably the single more useful thing I found in the text.
If you are looking at creating your own game or engine, or just want to see what goes into a commercial title, Game Coding Complete may be one of the best resources to do so. While there is a good amount of C++ code in the book, it is not so much of a “cookbook”, it is more of an overview of architecture. The writing style is casual and friendly, and I really love all the stories told throughout the book. This is a great resource, and should not be missed. My only regret is that I did not read this book sooner. Highly recommended.
It goes through the process of making a "game engine on training wheels" throughout the book, giving hints and tips as to best practices and industry standards. The authors "MrMike" and "Rez" write in a very easygoing manner, which makes picking up some of the tougher topics much easier. They speak from experience; they will tell you what has worked for them and what is expected from anyone trying to make it as a developer.
The book is focused on programming primarily (other topics come up but they are generally related to the engineering involved) and you should be comfortable with C++ to get the most out of this.
Another big selling point is the online forums; the authors regularly post there and will answer questions and give advice to those asking. The community there is great and there are a lot of people of varying skill levels who post regularly.
The best part? You get access to the source code for the engine they make so you can mess with it and make your own games with it! The code is purposely made to be easy to understand and learn from.
I would recommend this to anyone who desires to learn about game and game engine development!