Read my book

I wrote books about Webpack and React. Check them out!

Wednesday, May 8, 2013

Book Review - From Zero to the Appstore

Disclaimer: I received a free copy of the ebook and associated material. Olaf also contributed a guest post for JSter earlier.

In the past few years we've seen increasing interest particularly in mobile development and HTML5 technologies. These days it is possible to implement mobile games using HTML5 technologies even. Olaf Horstmann of indiegamr covered various approaches at JSter earlier.

He has also authored a book on the topic. This book, known as From Zero to the Appstore, delves further in the topic and shows you how to create a game and get it out there. You can try out the game in your browser. It is one of those sidescrollers with parallax and shiz. Click to jump (double jump works too).

The question is can the book live to its name? Let's find out!

Overview of the Book

The book is available in three configurations named as "Book & Resources", "Additional Material" and "Team License". The basic package costs $29 where as the the beefier ones $59 and $99 respectively. The more expensive options allow commercial usage of the source, assets and such whereas you may use the material included in the basic package for non-commercial purposes. "Additional Material" contains a bonus demo as well. Team license in particular seems quite benevolent for larger development teams interested in the topic.

The book, containing 129 pages, is provided in ebook format (pdf, epub, mobi). In addition source code, assets and final project files are included. The book itself has been split in two parts. The first one focuses on producing an actual game whereas the latter one discusses on how to publish it on mobile platforms.

Book Content

The first part has been written in iterative manner. You start out from the very basics and slowly but surely build the whole game on top of that. The author has chosen to use EaselJS and SoundJS of CreateJS suite. A good pick in my opinion. Particularly those with Flash background will appreciate this.

In addition some theory is covered including the basics of collision detection. I think this is a good idea and adds some depth to the book. It could have been nice to have even more theory available or at least links per theory topic covered. There is a list of these at the end but I feel something more specific could have been more appropriate.

The second part focuses on the workflow related to getting this game into various app stores (Apple and Google ones in this case). The author covers both PhoneGap Build and Cocoon in detail. It is definitely nice to have these sort of workflows covered.

You can get a better idea of the approach and writing style by checking out the sample chapters.


Overall the book reads quite well. The author goes through each line of code thoroughly in almost a literate programming kind of manner. Unfortunately there were some grammatical errors. The book could have benefitted from some editing. Given it's an ebook it isn't too late to do this and I hope the author continues to update the content.

There were various things I would've coded differently myself. To some extent this is more of a matter of style, though. For instance I prefer to use functional constructs when applicable and like to keep my code terse when possible. Instead of XAMPP I would have suggested Node.js and serve package instead. You will need Node.js anyway in case you wish to hook into tool infrastructure developed based on it.

It would have been nice if the author would have covered some module based approach. I have used Require.js with some success. Browserify could have been an interesting solution to cover as well.

I know it might a bit much to chew, especially for beginners, as you need to set up some infrastructure. Learning to use these kind of tools is very beneficial longer term as your project grows. The last thing you want to do is to have to fiddle with those script tags too much. And then there's the whole configuration management thing. What if you want different kind of builds for different platforms?

It would be very interesting to see the first part rewritten in a form which you can run through your browser. Something like ExplainJS would complement the approach taken really well. There is definitely room for introducing more interactive ways to go through the basic concepts. Games and interactive programming are a nice fit as demonstrated by Bret Victor.

It's a solid effort nevertheless. I found myself going through the book while examining the examples at a browser. Each step has source code and resources associated to it in a neatly arranged manner. Especially for beginners the combination of step-by-step sort of approach combined with some theory seems like a good idea. For more advanced people the beef might lie in part two in which the app store related workflow is covered in detail.

The value proposition of the lowest tier ($29) seems quite alright. Other books are in the same range although they will provide more content for the money. I think the strength of this offering lies within its relative simplicity. It all depends on how far in the rabbit hole you wish to go. There is also a money back guarantee which seems like a nice touch.


From Zero to the Appstore by Olaf Horstmann achieves what it promises. After reading the book and going through the associated material you should have a good idea of what it takes to get a game to an app store. It won't delve very deep into the rabbit hole but at least it's a decent starting point.

The book could have benefitted from some editing. The approach, step-by-step mixed with theory, seems quite valid. I would, however, consider porting the first part of the book into a more interactive form. Besides being cool that might make it easier to absorb the information.

If you dig around, you'll see there are a lot of game development related books out there. Especially if you are a beginner you will likely benefit from Olaf's offering, though. More advanced users familiar with the workflow already might want to pick up something else.