[Book Review] jQuery Game Development Essentials

[English version here]

Hace unos días Paushali Mandal me dió la oportunidad de escribir una reseña sobre el nuevo libro “JQuery Game Development Essentials” de Selim Arsever (@SelimArsever) y no pude dejar escapar la ocasión de adentrarme en un terreno que me resultaba desconocido: la programación de videojuegos para la web.

El autor

Selim Arsever es Ingeniero Senior de Software en una consultora Suiza. Durante los últimos 4 años Selim Arsever ha desarrollado un motor de juegos open source basado en jQuery llamado gameQuery.

El revisor

Mi experiencia en desarrollo web es bastante escasa (aún pienso que “table border = 1″ es un buen diseño) así que creo que soy un buen baremo para medir la eficacia instructiva del libro.

Introducción

jQuery Game Development Essentials Cover

jQuery Game Development Essentials

Lo primero que nos advierte Selim es que necesitamos al menos experiencia básica con JavaScript y jQuery, pero no en desarrollo de juegos. Esto me ha decepcionado un poco al principio porque pensaba que haría al menos una pequeña introducción a jQuery, pero a lo largo del libro ha quedado patente que los conocimientos que podamos adquirir en una tarde de estudio de jQuery son más que suficientes para seguir el libro sin perdernos.

El libro comienza con la elaboración de un pequeño clon del clásico Frogger para comenzar a saborear las virtudes de usar jQuery para este tipo de proyectos. Selim no se anda por las ramas y nos ahorra largas lecturas al introducir directamente ejemplos del código que forma parte del juego. Aquí viene mi primera y única queja del libro: personalmente me gusta que los libros recorran el código completo de los ejemplos que se desarrollan. Algunas personas encuentran esto tedioso y agradecerán que solo se repliquen los trozos de código relevantes para el tema en cuestión, pero en mi caso prefiero tener una imagen completa del código que estoy construyendo. Es cierto que el código fuente de todos los ejemplos del libro están disponibles para descargar, pero eso evita la constructiva tarea de tener que leer y escribir (aka copiar) el código del libro, lo que en mi opinión potencia el aprendizaje y la comprensión del tema.

Conceptos

En cuanto a los conceptos necesarios para entender el desarrollo de juegos, Selim hace un gran trabajo explicando conceptos tales como sprites, spritesheet, animaciones, mainloop, etc. De nuevo enlazo con mi queja anterior, ya que hay ocasiones en las que el código de algo que puede desconocer el lector (un mainloop, por ejemplo) no está completo y puede confundir.

Estas explicaciones no se limitan a introducir conceptos eminentemente prácticos sino que también resultan de gran ayuda los trucos de optimización, muy útiles en un entorno que en estos momentos no se caracteriza por su velocidad: fragmentos HTML, transformaciones CSS y métodos como requestAnimationFrame que no siempre son conocidos y que pueden suponer una diferencia importante en el rendimiento de nuestro juego.

Evolución

El segundo juego es un clásico plataformas donde se aplican los conceptos de grupos, herencia y tiles mediante la importación de ficheros del conocido editor de mapas Tiled. Es en estos momentos cuando las diferencias entre el desarrollo de un juego con un lenguaje “clásico” como C++ o Java y el dúo JavaScript/jQuery se hacen más evidentes. A cualquier desarrollador que provenga de este entorno clásico, como yo mismo, empezará a ver no solo las peculiaridades de trabajar “a la JavaScript” sino que descubrirá conceptos que le chocarán al principio y le sorprenderán después.

A partir de este juego sencillo, Selim desarrolla una serie de ejemplos basados en el clásico Zelda. Cada capítulo avanza un poco más en la evolución de juego añadiendo elementos tales como niveles, enemigos, capacidades multijugador, carga asíncrona de niveles y elementos sociales tales como integración con Twitter y Facebook.

Estilo

Todos estos elementos son explicados con un lenguaje directo y sencillo que engancha al lector, animándole a profundizar en la temática tratada gracias a los múltiples enlaces y referencias para ampliar la información. Esto es algo que se agradece, ya que muchos libros de desarrollo se limitan a citar referencias, dejando al lector con la tarea de averiguar dónde se encuentra dicha información.

Cuestiones avanzadas

Uno de los capítulos que más me ha gustado en cuanto a su contenido y descripción es el dedicado a la implementación de capacidades multijugador, tratando temas tan dispares como tablas de clasificaciones y prevención de trampas. Asimismo se muestra el código asociado con el servidor, escrito en PHP con MySQL como almacenamiento de datos. A pesar de la fama de compleja que tiene la programación de juegos multijugador, Selim explica de una forma sencilla y asequible estos conceptos haciéndolos entendibles incluso al desarrollador más novato.

No podía faltar en un libro sobre desarrollo de juegos una de las características que ya resultan casi imprescindibles en cualquiera de ellos: control táctil y la detección de dispositivos. Selim hace un gran trabajo abstrayendo estos controles y compaginándolos con los clásicos controles de teclado y explicando los conceptos sobre entrada táctil que normalmente resultan más complejos de entender para el programador nobel, como son los estados del toque en pantalla (begin, moved, end) y la detección de múltiples dedos.

El último capítulo del libro trata el tema del sonido, aspecto muchas veces olvidado e incluso despreciado durante el desarrollo del juego pero que tiene una importancia capital en la experiencia del usuario. Selim analiza las 4 técnicas que existen actualmente para la reproducción y gestión de música y sonidos resumiendo sus ventajas e inconvenientes y finalmente escribiendo una capa de abstracción para poder utilizar dos de las técnicas y cubrir todo el espectro de navegadores webs actuales.

Resumen

Aunque al principio fui un poco reacio al método de enseñanza del libro por la falta del código fuente completo de los juegos, el estilo ameno y directo del autor me ha hecho olvidar esa  carencia hasta hacerme ver las bondades del desarrollo de juegos con jQuery. Algo que, sinceramente, hasta la lectura de este libro ni siquiera se me hubiera pasado por la cabeza.

Definitivamente una lectura recomendada. Incluso si no eres desarrollador en jQuery, este libro te sorprenderá.

Podéis comprarlo a través de estos enlaces:

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

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

Dime algo...