I’ve always been a big fan of Eric Lengyel, from both his work on the C4 Engine (and now the new Tombstone Engine) and his previous math book, Mathematics for 3D Game Programming and Computer Graphics, which is on it’s 3rd edition and is one of the definitive texts in the genre. This latest book, Foundations of Game Engine Development, Volume 1: Mathematics, I feel does it again and is well worth reading.

The text, which clocks in at around 200 pages (short for a technical book) actually has a decent amount of information crammed into those pages. Lengyel breaks it up into 4 chapters, each focusing on a different aspect. Chapter 1 starts with vectors and matrices, then continuing to transformations, next to geometry and the finishing chapter on advanced algebra. The first 3 chapters are about what you’d expect from a game math book, but explained clearly and succinctly. Early in the book, when discussing vectors, the author states: “Loosely speaking, the dot product provides a measure of how much one vector is like another.” Though it seems obvious now, I’m not sure I’ve ever heard it explained quite as clear before. Much of the rest of the coverage in the first 3 chapters feels like this. While it may be a refresher to many, it’s like seeing some of these concepts in a new light just from the stellar delivery.

As I mentioned, chapters 1 through 3 cover the basics, that most game programmers are likely familiar with. Vector and matrix operations, transformation spaces, finding relations between points, lines, and planes, etc. I’d consider this to be a good refresher for people at least somewhat familiar with game mathematics. Though I could also see it as an decent introduction for some, there may not be enough hand holding for a complete novice.

However, in chapter 4, Lengyel dives into new territory with Grassmann algebra. Though the math is very old, I’m not sure I’ve ever seen it covered or mentioned in any of the popular game math books I’ve read. The concepts are actually quite interesting, and seem to tie together some different areas that originally seem disparate. To be honest, I think I’d have to read this chapter a second time for the concepts to really sink in. It did make some sense but, being somewhat new material to me, I wasn’t sure how I’d immediately apply the knowledge. That said, I applaud the author for bringing something new to the table and I can’t imagine it being described better.

One part I really did appreciate were the code listings, shown in real C++ code that, while I did not type them in a computer and compile, seem like they would be ready to basically lift off the pages and use in a project. I also very much liked the coding style, which felt clean and modern, unlike some other books I’ve seen where it looked like the code came from a 1980’s mainframe.

Overall, I very much enjoyed this book. It was able to cover basic game mathematics in an extremely clear and concise manner, and introduce new concepts along the way. I think this would make an excellent edition to any game development library. While the book was refreshing at only 200 pages, that brevity meant that some concepts could have been in more depth, and other topics weren’t covered at all. For more thorough coverage, I’d look to 3D Math Primer for Graphics and Game Development by Fletcher Dunn or to Lengyel’s prior book, Mathematics for 3D Game Programming and Computer Graphics. That said, whatever your skill level, I think Foundations of Game Engine Development is a worthy read.

As always, great book review! I picked up the book myself and am working my way through it. It doesn’t cover everything like random numbers and splines (which’ll be in the animation volume) but hey, no book is meant to be complete – although many try to be! Eric has a campaign up for his next book on rendering!

Thanks for your support, Simon. There were two things I think I missed in the review. One being that this book is only one part of a series, and I’m sure the subsequent chapters will fill in the gaps of coverage I mentioned compared to other math books. The other is that I don’t think I properly explained the new material in this book (Grassman algebra) as that is a key feature not found elsewhere. I also contributed to Eric’s new campaign. Thanks.

Yeah, patience isn’t my strong suit. I always think “Just show me how to implement this already!”. I’m still trying to teach myself to just READ and take it in, because once you understand everything, coding it will become easy instead of turning into a trial and error fest.

I’ve followed all your reviews and posts, very nice stuff to read before work :P Keep up the great work!