This week I am trying something new, and reviewing a book that I recently finished reading. As you can see from the title of this article, the book I am going to look at today is Game Programming Patterns, Written by Robert Nystrom.
This week is also a bit different from my usual articles in another way – while I usually focus more on game design, this books is actually much more focused on game development. If you are only interested in game design in the abstract, or in designing for tabletop games, this book really won’t apply. However, if you are interested in learning how to develop video games, this book might be of interest to you.
What Is This Book About?
Game Programming Patterns Is about ways to improve your video game programming abilities by using existing patterns and technology. Game Programming is a very specialized field, and traditional programming techniques are generally going to be less effective. They can lead to overly complicated code that is difficult to understand or modify, and can also lead to poor run-time performance.
Since the naive programming approach is generally ineffective for game programming, a number of techniques have evolved over the years to make video game programming more efficient, more readable, and more maintainable. Rather than reinvent the wheel, this book shares some of these techniques that now form the core of most games including things such as component systems, game loops, and update methods.
This book is not about teaching how to use any particular programming language or game engine. Instead, its goal is to teach the underlying programming concepts that can be used in any language. The author does provide examples of code snippets in C++, but the code snippets are all very simple and try to be as general as possible.
This book is also not designed to teach you how to program a game from start to finish. The book does not even necessarily need to be read from beginning to end – each section focuses on a single design pattern, and can be read in pretty much any order. This book is more like a tool-box than a blueprint – it won’t tell you all the steps that you need to make a game, but after reading it you will have all the tools that you need.
Who Is This Book For?
This book is certainly not for everybody. This book does NOT teach you how to program, and expects that its readers will have at least a basic understanding of programming already. This book is also not for those who are only interested in game design – it actually barely touches on game design at all. This book will not teach you how to make your game better, it will only teach you how to make the code for your game better.
The target audience for this book is people who already know how to code (at least somewhat), but want to specifically get better at programming games. This was my situation when I started reading the book – I had already had several years of Computer Science study under my belt, but I found myself having trouble with my game programming.
I naively believed that the skills I had learned programming other types of projects would carry over directly to games, but I was very wrong. I found that the Object-Oriented approach that I had learned throughout my college experience had not prepared me for the unique challenges of programming a game. This made my development process slow, and my end result was a confusing tangle of interconnected parts that was difficult to modify.
While reading this book my various mistakes and naive assumptions became apparent, and I now have a much firmer grasp on what is necessary to program a game efficiently. Even when working with a game engine such as Unity, this book has helped me to understand how the engine works and why it is structured the way that it is.
Review and Conclusions
Overall, this book is quite well written. The examples that the author chooses to illustrate their points are both interesting and informative, and the book is written with enough humor to keep from getting overly dry and technical, which is a major problem with a lot of programming books.
This book also has a number of very useful features that I would like to highlight. The first is the price – while you can order this book on Amazon or get it in a traditional e-book format, this book is also available for free on the author’s website. This makes it a very handy guide that can be consulted and read without having to commit anything other than your time.
In addition, the online version of the book is probably the best way to consume it. While the book itself is very informative, it also provides links and references to various other sources around the web that you can consult to learn more about a particular topic. These links definitely helped enhance my understanding of the material, and while I’m sure the physical version of the book is great, having these additional resources certainly improved the experience.
Unfortunately, this book’s biggest weakness is the narrowness of its scope. If you are in it’s target audience – people with some coding experience who want to understand programming games better – this book would be a very valuable resource. However, that target audience is pretty narrow – it excludes programmers who are not interested in games, gamers who aren’t interested in programming, and programmers who already have a background in programming games.
For these reasons, I give this book 4 Inkies out of 5
Until Next Time!
That is all I have for this week. I know that today’s article was a big departure from my usual articles, so I would really appreciate any feedback. Would you be interested in seeing more book reviews? Would you be interested in seeing articles that have more of a technical / programming focus? If so, let me know. And if you prefer the usual style of game design focused articles, let me know that too!
If you enjoyed this article, check out the rest of the blog and subscribe on Twitter, Youtube, or here on WordPress so you will always know when I post a new article. If you didn’t, let me know what I can do better in the comments down below. And join me next week for a look at the human aspects of gaming!