Vous aimez ce que vous lisez sur ce blog ?
Envie d'aller plus loin avec véritable formation d'expertise en Java ?
Venez suivre ma formation Masterclasse Expertise Java !

"Même un développeur experimenté a besoin de continuer à apprendre. Et dans cette formation... j'ai appris beaucoup !" - A.G., Java Champion

Prochaines sessions inter-entreprises : 28-31 mars 2017 / 13-16 juin 2017
Sessions intra-entreprises sur demande.
Inscrivez-vous vite !

Critique de livre : AndEngine for Android Game Development cookbook

Book cover [ Préambule Mes chers amis et lecteurs, une fois n'est pas coutume, j'ouvre mes colonnes à un collègue. Hadrien Pierart, qui travaille pas mal sur Android, va vous entretenir ci-dessous d'un livre sur AndEngine, qui a suscité son enthousiasme. Je n'ai plus qu'à vous souhaiter une bonne lecture !]

Il y a quelques semaines, Olivier m'a annoncé qu'il avait à nouveau eu vent d'une recherche de reviewers par Packt Publishing pour faire la revue de leur dernier livre AndEngine for Android Game Development cookbook par Jayme Schroeder et Brian Broyles.

Heureusement pour moi, j'avais récemment parlé à Olivier de mon projet de jeu Android, et il me recommanda de recontacter Packtpub.
Après quelques emails échangés et quelques heures d'attente, me voilà l'heureux propriétaire de cet ouvrage (en version ebook, comme ca, pas besoin d'attendre la poste) !

Ayant été un peu déçu par ma dernière lecture sur le sujet dont j'attendais beaucoup (je débutais alors tout juste avec AndEngine), j'espérais vraiment que celui-ci allait être à la hauteur de mes attentes. Je précise que ce livre se concentre sur la branche GLES 2 Anchor Center d'AndEngine donc pour ceux qui travailleraient en GLES 1, ce cookbook peut être l'occasion de se familiariser avec cette nouvelle branche.

A noter que toutes les recettes du livre sont accompagnées de bundles de code téléchargeable pour mettre la main à la pâte, mais que ceux-ci ne sont pas obligatoires à la compréhension du livre.

AndEngine

AndWhat ?

Tout d'abord, un petit rappel pour ceux qui ne connaîtraient pas ce magnifique framework. Pour les férus d'Android comme moi, il est fort probable que ce nom ne leur soit pas inconnu puisqu'AndEngine est apparu assez tôt (premiers commits début 2010) dans l'écosystème Android (Merci Nicolas Gramlich!).

AndEngine, comme son nom le suggère, est une surcouche du moteur (Engine) OpenGL (1 et 2) d'Android (And) qui offre de grandes facilités de développement de jeux pour la plateforme Android. Nous verrons dans cet article toute la richesse de ce framework, à la lumière des conseils des auteurs de ce livre et pourquoi il est utilisé par de nombreux jeux comme ceux-ci, ceux-là ou encore tant d'autres qui ont largement fait leurs preuves sur le Google Play Store.

AndEngine se consacre exclusivement au développement de jeux 2D, si c'est la 3D qui vous intéresse, jetez un œil à Unity.

AndEngine FTW !

Jayme Schroeder et AndEngine, le duo gagnant
Pour ceux qui auraient touché un peu à AndEngine, ce nom est sans doute familier puisque Jayme est très actif sur les forums qui touchent à ce framework et est toujours prêt à distiller ses conseils aux nouveaux arrivants.

Dans le vif du sujet
Assez de bavardages et tournons la première page. Un coup d'oeil à la couverture nous annonce :

Quick answers to common problems.
...
Over 70 highly effectives recipes with real-world examples to get to grips with the powerful capabilities of AndEngine and GLES 2.

Pour les non-anglophones qui nous liront, une traduction rapide pourrait être :
« Réponses rapides à des problèmes courants.

Plus de 70 recettes des plus efficaces accompagnées d'exemples concrêts pour tirer parti de toute la puissance d'AndEngine et GLES 2. »

Les illustrations nous envoient également du rêve puisque 4 titres réalisés en AndEngine sont à l'honneur : MagneTank, Greedy Spiders, Kill the Zombies et Noogra Nuts, totalisant plusieurs millions de téléchargements à eux 4.

Qui n'a jamais révé, parmi nous développeurs, de publier un jeu (ou une application, framework, …) et d'avoir des milliers voir des millions de téléchargements ?
Ce livre nous prend par la main pour nous expliquer les clés d'un jeu bien construit en tirant le meilleur du framework sous jacent.

En route pour la célébrité

Chapitre 1 - AndEngine Game Structure

Je ne sais pas si vous avez déjà essayé de développer un jeu (ou n'importe quelle application en générale), mais au bout de quelques écrans / classes, la base de code peut rapidement devenir le bazar et restructurer tout ça peut devenir une belle galère (et un passage obligé). Ayant rejoint une bande d'amis pour notre jeu en cours de route et avec déjà une bonne base de code, je suis bien placé pour savoir que si on n'est pas parti en suivant les bonnes pratiques, on perd beaucoup de temps. Et ce chapitre est justement là pour vous éviter cela. (Ce n'est probablement pas le premier pour rien)

Ce premier chapitre pose d'ailleurs les jalons pour les suivants, il est donc à lire en prenant son temps car on y apprend beaucoup, en commencant par le cycle de vie d'un jeu AndEngine et son intégration dans le cycle de vie Android, comment choisir son moteur, gérer la fragmentation des résolutions, jongler entre les différents types de ressources, etc. J'ai particulièrement apprécié le temps passé à expliquer l'importance du choix de l'Engine et les différences entre les terminaux anciens / entrée de gamme et le matériel de compétition.

Chapitre 2 - Working with Entities

On entre déjà dans les entrailles d'AndEngine avec le concept d'Entity qui sert de base à tout ce qui est affiché à l'écran. Ce chapitre présente toutes les briques de base qui nous permettent ensuite de créer des écrans pour notre jeu. On démarre avec les primitives (lignes, rectangles, etc.) puis les layers, les sprites et les scènes avant de prendre en main les différents moyens d'interagir et modifier ces briques dynamiquement.
On entre alors dans la partie rotation, modifiers et onManagedUpdate pour altérer ou suivre nos différentes briques. Enfin, Jayme nous présente un sujet sur lequel j'étais curieux d'en savoir plus : les systèmes à particules. Cette recette devrait vous faire rêver d'ajouter des flocons de neige dans votre prochain jeu (et de savoir comment vous vous y prendrez) !

Chapitre 3 - Designing your Menu

Un chapitre plus classique que les 2 précédents puisqu'il nous décrit comment créer un menu intéractif et agréable à regarder. Puis il détaille des thèmes moins liés aux menus mais nettement plus intéressants : La gestion des backgrounds (normaux et parallax) et comment créer un gestionnaire de niveaux et de vues. Cela peut paraître assez évident pour la plupart des jeux d'avoir un menu et un écran de sélection de niveaux, mais lorsque cette tâche se répète dans votre jeu, c'est une bonne chose de savoir organiser correctement son code pour faciliter les ajouts et la relecture.

Chapitre 4 - Working with Cameras

Les caméras sont un sujet central d'AndEngine, et ce livre y consacre presque une trentaine de pages pour accompagner le lecteur dans les différentes utilisations de cet objet. A la sortie de ce chapitre, vous devriez avoir compris quelle caméra choisir en fonction de la situation, et jongler entre une Zoom, une Bound ou un Smooth, et savoir si vous devriez ajouter un HUD ou pas.

Chapitre 5 - Scene and Layer Management

Après les caméras, place aux scènes et layers. A première vue, ces objets sont très proches, au moins conceptuellement. Pour moi, avant de lire ce chapitre, la notion de "layer" ne faisait pas partie de mes développements avec AndEngine. Ce chapitre présente comment créer un "scene manager" et quels bénéfices cela peut avoir pour votre application. Même si ce chapitre est assez court (moins de 20 pages), le bénéfice en terme d'architecture pour notre application sera lui non négligeable.

Chapitre 6 - Applications of Physics

On arrive maintenant dans les chapitres un peu plus "poilus" du livre, mais qui sont également ceux qui apporteront la plus grosse valeur ajoutée à la qualité de votre jeu. De très nombreux jeux misent plus ou moins sur l'utilisation de la physique pour apporter du fun à leur gameplay. La physique, c'est en fait toutes les interactions entre différents éléments visuels comme de vrais objets. Cela peut être pour créer des projectiles, des objets se comportant comme des ressorts, ou simplement gérer la superposition d'objets et d'éventuelles collisions.
Normalement, il n'y a pas trop besoin d'être bon en math, les concepts sont bien expliqués et il y a suffisamment d'exemples pour comprendre.

Chapitre 7 - Working with Update Handlers

Les update handlers sont des éléments clés du fonctionnement d'un jeu AndEgine. En effet, on peut les enregistrer sur un entity et le code qu'ils contiennent sera exécuté à chaque fois qu'une frame est redessinnée. Un point important qui est également abordé est comment retirer proprement une entity du jeu sans prendre le risque de faire lever une exception. Un problème auquel nous avons fait face plusieurs fois lors de nos développements, sans vraiment comprendre ce qui se passait.

Chapitre 8 - Maximizing performance

Ce chapitre aborde toutes les petites (et moins petites) optimisations qui sont assez faciles à mettre en place dans un jeu et qui peuvent améliorer nettement le rendu sur les terminaux entrée de gamme et plus anciens. Un jeu moyennement bien codé fonctionnera sans problème sur un terminal récent (sauf si il y a des fuites mémoires), en revanche avec ces conseils, il sera possible de la proposer pour un plus large éventail de terminaux.

Chapitre 9 - AndEngine extensions overview

Les 2 derniers chapitres sont consacrés à aller plus loin qu'utiliser les fonctionnalités de base d'AndEngine (même si la physique et box2D ne font pas vraiment parti du framework). Il existe pas mal d'extensions du framework, et elles ne sont pas toutes abordées ici. Ce livre se concentre sur 3 d'entre elles qui sont les plus couramment utilisées, à savoir: Live Wallaper, Multiplayer et SVG. C'est d'ailleurs cette dernière partie qui m'a le plus intéressé car nous nous sommes beaucoup battus avec cette extension pour obtenir un résultat satisfaisant et fonctionnel. Au final, les conclusions de ce chapitre nous auraient été très utiles il y a quelques mois pour gagner du temps.

Chapitre 10 - Getting more from AndEngine

Ce dernier chapitre apporte quelques bonus à notre connaissance d'AndEngine et un petit plus qui peut apporter beaucoup dans certains jeux.
Les thèmes abordés sont le chargement de tout un dossier de textures, la création de mesh, comment appliquer des ombres, créer un pont de corde et créer une plateforme mouvante.
Pour ma part, j'ai surtout apprécié les 2 derniers cas concrets présentés, qui sont de vraies applications de tout ce qui a été vu auparavant, et qui permettent de se faire une vraie idée de ce que permet le framework pour quelqu'un qui débuterait avec celui-ci.

Appendice - Source code for MagnetTank

Pour finir, l'auteur met à notre disposition le code source d'un de ses jeux, MagnetTank ainsi qu'un lien de téléchargement vers le Play store. Les pages suivantes sont consacrées au descriptif et à des explications sur le fonctionnement de ce jeu qui est un exemple assez complet de tout ce qui est présenté tout au long du livre. Chaque classe du jeu est décrite et donne un référence vers les différentes recettes de l'ouvrage qui permettent d'obtenir ce résultat. C'est particulièrement intéressant pour se faire une idée concrète de ce à quoi l'on peut aboutir.

Conclusion

Bon alors finalement, maintenant vous vous demandez si je vous le recommanderais ? A-t-il été à la hauteur de mes attentes et vaut-il ses 55€ (version papier) ?

Effectivement, cela représente un investissement non négligeable si vous n'êtes pas sûr de vous engager dans le développement d'un jeu jusqu'au bout. En revanche, si vous m'avez bien suivi tout au long de la description des chapitres, vous aurez compris que si comme moi vous êtes très motivé par le développement de votre jeu et que vous voulez vraiment vous booster sur AndEngine, ce livre est fait pour vous.

Dans le détail, l'éventail des notions abordées dans ce livre nous donne une richesse de composants et de conseils d'une grande valeur pour avancer dans le développement d'un jeu. Par ailleurs, on se rend vite compte à la lecture de celui-ci que l'auteur a une grande expérience du framework et qu'il sait de quoi il parle pour s'être probablement lui même cassé les dents à de maintes reprises. Car il ne faut pas se méprendre, même si AndEngine apporte beaucoup de facilités dans le développement et qu'il y a beaucoup de forums et de discussions sur internet, la documentation du framework et des classes est en général assez pauvre et pas évident à prendre en main lorsqu'on débute dans le développement de jeux. Une petite déception quand même, les auteurs ont choisi de n'aborder que certaines des extensions d'AndEngine alors qu'il y en a beaucoup...

En tout cas, pour tous les conseils d'architecture et les retours d'expérience ainsi que les extraits de code bien choisis :
un 5/5 bien mérité pour le fond !

Coté organisation, je dois dire que la structure en mode recette m'a un peu dérouté au début, mais une fois qu'on s'y est fait, tout s'enchaîne bien : les concepts et les recommandations proposés sont vite compris.

Je n'en ai pas trop parlé auparavant, mais chaque chapitre se décompose en X recettes et chaque recette a une présentation, une partie code et une explication détaillant ce qui est fait dans le code. Parfois également, une partie bonus vient s'ajouter avec des conseils, des retours d'expériences ou des liens vers des ressources supplémentaires. A chaque recette, une référence vers un pack de code est recommandée pour permettre au lecteur de tester lui même les extraits de code qui lui sont proposés. Au final, chaque recette a sa propre logique et les chapitres ont une certaine continuité.

Cependant, je suis un peu déçu qu'on n'ait pas une sorte de fil rouge, comme une application que l'on construirait tout au long du livre, mais plutôt des classes indépendantes à chaque fois. (Mais on a tout le code de MagneTank à la fin, c'est vrai).
Donc un 4/5 pour la forme un peu déroutante

Difficile de raconter toute la richesse d'informations de ce livre dont les recommandations viennent de quelqu'un qui s'est heurté à tous les problèmes que chacun d'entre nous qui débute en AndEngine rencontrera un jour ou l'autre.

Ah! Et pour ceux qui auraient des doutes, le premier chapitre qui présente les concepts clés d'AndEngine est disponible gratuitement en lecture chez PacktPub !


Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.