[Book Review] jQuery Game Development Essentials (English)

[Versión en Español aquí]

A few days ago Paushali Mandal gave me the chance to review a book: “JQuery Game Development Essentials” by Selim Arsever (@SelimArsever) and I couldn’t let go the chance of getting into a field that was almost unknown to me: videogames programming for web.

The author

Selim Arsever is a Senior Software Engineer working as a consultant in Switzerland. Over the last 4 years, he has been developing an open source game engine based on jQuery called gameQuery.

The reviewer (that’s me)

My web development experience is pretty low (I do still think that “table border=1″ makes a pretty good design…) so I think I’m a good measure for the instructional power of this book.

Introduction

jQuery Game Development Essentials Cover

jQuery Game Development Essentials

Selim’s first advise is to have some experience working with JavaScript and jQuery, but not on game development. This disappointed me a bit at first because I was hoping to read a little introduction to jQuery. Anyway, as the book progressed it was obvious that thanks to the efforts of Selim one could completely understand everything by reading any jQuery introductory tutorial.

The book starts with the making of a little Frogger clone just to start getting into the use of jQuery for this kind of projects. Selim does not beat around the bush and saves us  long boring lectures by directly introducing code samples from the game. Here comes my first and only complain about the book’s style: I enjoy when books contain the full source code for a project. Some people find this tedious and are thankful for only having to read some snippets that are relevant for understanding the concept, but in my case I prefer to have a full image of the code I’m writing. The truth is that the full source code for all the examples from the book are available for downloading, but that prevents the constructive task of having to really read and write (aka, copy) the code from the book which, in my opinion, improves the learning experience and the understanding of the subject.

Concepts

Regarding game development concepts, Selim makes a great work introducing concepts like  sprites, spritesheet, animations, mainloop, etc. I have to take my earlier rant back, as sometimes the code for a potentially unknown concept (e.g. a mainloop) is not complete and can lead to confusion to a nobel reader.

Anyway those explanations are not limited to introducing concepts purely practical but they are also optimization tricks, which are really helpful in a development environment that right now is not known for its performance: HTML fragments, CSS transformations, and methods like requestAnimationFrame  that are not always known and that can make a really important difference for our game performance.

Evolution

The second game mimics a classical platformer where Selim applies concepts like groups, hierarchy and tiles by importing files from the well-known map editor Tiled.

This is the moment when the differences between developing a game with a “classic” language like C++ or Java versus the JavaScript/jQuery duo are more patent. Most developers coming from a classic developing environment, like myself, will not only start to see the peculiarities of working “à la JavaScript” but will also learn concepts and working methods that will clash at the beginning but will become a nice surprise later on.

From this simple game, Selim develops a series of examples based on the classic Zelda. Every chapter progresses with the game evolution by adding elements like levels, enemies, asynchronous level loading, multiplayer and the integration of social websites like Twitter and Facebook for leaderboards and score publishing.

Style

All these elements are explained with a direct and easy to understand language that engages the reader, encouraging him to get deeper into the subject thanks to the multiple links and references that the author includes into the text. This is something the reader will be thankful for, as some books just quote references, leaving the reader with the task of finding out where to find the referred information.

Advanced Topics

One of my favorite chapters because of its content and description is the one related to multiplayer programming,  touching different subjects such as leaderboards and cheating prevention. Also, the source code for the server software is also shown, written in PHP and MySQL as database. In spite of the complexity fame that multiplayer game programming has, Selim manages to explain in an easy and simple way those concepts, making it understandable even to the novice developer.

Nowadays, a game programming book can’t allow to skip is a chapter about mobile devices, with its touch controls and device detection. Seilm makes a great job by abstracting touch controls and making them compatible with the existing code that uses classic keyboard controls. Also, his explanations about touch input controls that are usually complex to understand for non-mobile developers as screen touches with its various states (begin, move, end) and multi-touch detection make the text a breeze to read.

The last chapter of the book talks about sound, an aspect that is often forgotten or is even relegated during game development, but that actually has a great amount of responsibility in user experience. Selim analyses 4 techniques currently available for playing and managing music and sounds, summarizing its advantages an disadvantages and finally writing an abstraction layer above two of the technologies so the code can be used in every modern web browser.

Summary

Althought at the beginning I was a bit sceptical about the teaching method of the author because of the lack of full source code, the author’s pleasant and direct style made me forget this so I started to see the benefits of jQuery game development. Something that, honestly, I had not even thought about until I read this book.

Definitely, a recommended reading. Even if you are not a jQuery developer, this book will surprise you.

You can get the book from this sponsored links:

Un pensamiento en “[Book Review] jQuery Game Development Essentials (English)

  1. Pingback: [Book Review] jQuery Game Development Essentials | David Erosa

Dime algo...