I looked long and hard at this book before deciding to review it. There are three different aspects that I wish to touch on; who is it for, what does it cover and how good is it technically.
Here are a couple of quotes from the books single page Introduction:
This book will take you from novice programmer with no terrain programming knowledge at all to a fully informed terrain programmer who can implement some of the most complex algorithms around. What exactly is this book about? Well, I'll you.
This book moves at a fast pace, but nothing that any C/C++ experienced programmer with some slight knowledge of basic 3D theory will have trouble understanding.
The second quote makes it clear that the author is not addressing novice programmers but programmers who are novices in the problem domain. It also suggests that he lacks a clear idea about what is C and what is C++.
That last sentence of the first quote shows just how little care his publisher took. My copy editor and proofreader would never have let me so embarrass myself so early in a book.
It comes as no surprise to discover that the author is still in High School. I give him all credit for attempting a book such as this one, but he needs to select his publisher with more care because he needed much more support than he clearly got. All authors need good editing teams giving support, but young, technical enthusiasts need it more than most.
The book covers various programming algorithms to deal with terrain generation. Good, reasonably realistic, terrain is needed in many modern games. This means that those who aspire to trying their hands at game programming need a book such as this one. As far as I can see (and this is not a problem domain in which I have much expertise) the author covers a range of suitable algorithms with sufficient detail so that those willing to work diligently will come to understand them.
However the quality of the source code is much what we might expect from an enthusiastic but largely self taught young programmer. The class design leaves much to be desired and the low-level implementation code is a confused mish-mash of C and C++. Perhaps this can be turned to advantage in that the diligent reader with any genuine programming expertise will wish to redesign the code and develop a quality implementation. There will be no intellectual property right issues because the code will be brand new.
So who might get good value from this book? Well you need to be a confident and competent C++ programmer (or a programmer in some other language who can read poor quality C++ and re-implement the ideas.)
What disappoints me is the contribution made by the series editor, AndréLaMothe, who should be doing more to ensure that young contributors to this series are given proper support.