Author: Vladimir Silva
Publisher: Apress, 2012
Aimed at: C and Java developers
Pros: An indispensable book if you want to work on games like Doom and Quake
Cons: Lacks explanation - relies instead on reading code.
Reviewed by: Harry Fairhead
Some books that claim to be "Advanced" only go a short way beyond "Beginner". Not so in this case - prepare to be stretched.
You could write a book about advanced Android 4 games and just describe some clever ways of working with sprites or organizing things. This is not what this particular book is all about. It really does get advanced and explains how to use the native code, i.e. C and Java, to create 3D programs. If you aren't interested in using native code together with OpenGL then this is not the "advanced" you are looking for.
The book starts with a completely dispensable Introduction on the history and importance of Android. It does, however, contains a short summary of what you need to know to get anything out of the book. If anything it is on the easy side and I'd say that this is the least you need to know.
Chapter 1 is where the book starts properly and it tells you how to set up your machine - Eclipse, JDK, SDK and so on. If you really need to be told this stuff you probably aren't going to cope with the rest of the book.
Chapter 2 is about getting started with native code and it takes you though the basics of using JNI to mix Java and C. The examples are a bit on the long side and the explanation of what is going on are inadequate. Basically you have to read the code to understand. There are lots of helpful comments but no in-depth explanation. Later in the chapter the subject shifts to using audio and video in native code and multitouch. There is a lot of useful information lurking in between the examples.
Chapter 3 is more of the same but now we have OpenGL in the mix. This takes you through some basic 3D tasks by creating a cube viewer in Java. Then the example is converted into native code.
Chatper 4 explains how to work with OpenGL ES 2.0. It opens with a look at shaders but to be honest if you don't know about shaders already this isn't going to help much. The chapter closes with an example and the shaders are simply introduced without any explanation. At best you will learn how to build an app using shaders but you wont discover the how or why of actually constructing useful shaders.
With Chapter 5: 3D Shooters for Doom things become more specific as the author explains how to work with the Doom code. Chapter 6 does the same job but for Quake and Chapter 7 deals with Quake II. While there is a lot that is generally useful in these three chapters they really are focused on getting the software working on a mobile device and then on extending it.
This isn't a very good book in the sense that it doesn't do a good job of explaining the many difficult techniques it makes use of. While there are lots of really helpful and useful asides, comments and boxouts the book mainly tells you what you want to know by presenting long code examples.
However this doesn't mean that this is a book you can ignore.
There are very few books available at this level and if you want to know about using native code and the 3D engines under Android you probably need to get a copy. If you want specific information about Doom or Quake programming on Android then you have a second reason to buy a copy.
Even though this book could be a lot better, I can still recommend it because it has a really good interpretation of "Advanced". As long as you are up to the challenge of reading it, this is a really worthwhile book.