17jan 2009
Passage en revue de trois livres sur XNA
21:01 - Par Helmut - Articles - un commentaire
Le net regorge de ressources pour les développeurs et XNA n'est pas une exception. Par contre, on a tendance à oublier d'autres média, tels que les livres. Je vous propose de passer en revue les quelques livres dont je dispose, certains proposant des informations intéressantes que l'on ne trouve nul part ailleurs. Notons déjà que ces livres ne sont pas destinés à vous apprendre à programmer en C#, donc si vous êtes un total débutant en quête d'XNA, il va d'abord falloir passer sérieusement par la case C#.
Quant à l'article, c'est dans la suite que cela se passe.

Avant de commencer ce petit tour, plusieurs constats sont à faire, histoire de ne pas vous effrayer. Premièrement, si il existe des dizaines de livres sur XNA en anglais, il n'en existe absolument aucun dans la langue de Molière, au grand damne des anglophobes. Ceci est surement du à la popularité plutôt faible d'XNA dans les communautés de développement francophones, aucun auteur/éditeur n'étant assez aventureux pour publier en français.
Autre point : il existe parfois 2 à 3 éditions pour un même livre. Il faut donc prendre garde. Ceci est du à la rapide évolution qu'a eu XNA avant d'arriver à l'aboutissement qu'est la version 3. Certains livres sont donc éditer pour chacune des versions d'XNA, voir parfois des versions intermédiaires comme des beta ou CTP. Si cela ne posera aucun problème pour des livres focalisés sur XNA 2 ou 3, les projets XNA 2 fonctionnant normalement avec XNA 3, ce n'est pas le cas de XNA 1, et encore moins des betas de celui ci. En effet, des changements majeurs ont eu lieux, et certains livrent sont basés sur des pré-versions, afin de pouvoir sortir en même temps que la version finale du framework (c'est un fait courant dans la publication de livres, les éditeurs de logiciels fournissant d'ailleurs souvent ces pré-versions aux auteurs lorsqu'elles ne sont pas publiques).
Dernier point : qui dit livre en anglais, dit importation nécessaire. Les livres techniques en import ont parfois une place dans les grands magasins, mais ce n'est pas le cas pour XNA, la meilleure solution étant de les commander, notamment en ligne. Et pour cela, rien de mieux que amazon.fr qui propose la grande majorité de ces ouvrages (les plus importants en tout cas) et à des prix qui n'ont rien à envier leur équivalent en dollars.
Trêves de commentaires, passons donc à ces livres.

Professional XNA Programming: Building Games for Xbox 360 and Windows with XNA Game Studio 2.0
Par Benjamin Nitschke
ISBN-13: 978-0470261286
Il s'agit de la seconde édition de ce livre. Pas de troisième édition envisagée.
Un petit mot sur l'auteur : Benjamin Nitschke est un développeur d'origine allemande, MVP DirectX/XNA. Il fait parti des fondateurs du studio exDream dans lequel il exerce la fonction de Lead Programmer. exDream est à l'origine de la série de jeux de stratégie Arena Wars, dont le premier a la particularité d'avoir été le premier jeu commercial réalisé en code managé (C# via MDX). Benjamin a également réalisé les starter kit 3D (racing et shooter) du Creator Club.
Le contenu du livre : ce livre se concentre essentiellement sur la 3D, mais consacre quelques chapitres à la 2D et d'autres aspects d'XNA, histoire de couvrir tous les aspects du framework. Il commence donc avec une mise en bouche sur la 2D, et propose de réaliser un Pong et deux casse-briques en 2D, en passant en revu les aspects nécessaires. Avant de passer à la programmation, l'auteur discute de problèmes de conception, tels que d'imaginer un gameplay et de mettre à plat ses idées. Concernant la façon dont la programmation est abordée, elle est faite suivant une méthodologie agile, principalement via des tests unitaires omniprésents dont l'auteur est très friand. Ce livre n'est donc déjà pas adressé aux débutants, mais plutôt aux professionnels et il faut adhéré aux tests unitaires. Tout le code n'est pas expliqué et certaines parties sont présentées comme des challenges à réaliser soi-même, même si le code source du livre est disponible au cas où. Le livre passe ensuite à la 3D et se concentre sur la réalisation d'un moteur 3D réutilisable, et qui sera d'ailleurs réutilisé et enrichi au fil des chapitres, passant par un shoot'them up à un jeu de course (très similaire aux starter kit d'XNA, normal, c'est Benjamin qui les a fait). Une bonne partie du livre est consacrée aux effets (shader), notamment en expliquant le principe de bump mapping et ses différentes techniques, pour ensuite attaquer des effets de post-processing (flou artistique etc). Dans sa seconde édition, le livre est désormais compatible XNA 2 (contre la beta du 1 pour la première édition, donc attention) et présente des chapitres additionnels pour réaliser un jeu de rôle, mais pas d'un point de vue programmation, ce sont plus des chapitres sur le design.
Critique du livre : le livre se veut abordable pour tout développeur, mais il rentre très vite dans des détails où la connaissance des API 3D est parfois requise. De plus, il ne couvre pas tous le code nécessaire, demandant au lecteur de ne pas être passif. Si cela est un plus pour ceux qui veulent apprendre d'eux mêmes sur les bases du livres, c'est un véritable frein aux débutants ou ceux qui ont besoin d'un code commenté pour le comprendre. Ces derniers seront d'autant plus freinés par la légion de tests unitaires que l'auteur emploi, ce qui peut devenir vraiment très lourd pour qui n'adhère pas aux méthodologies agile (la réalisation de jeux ne s'y prêtant pas toujours). Ceci rend l'exploitation du livre par des débutants complètement contre intuitive. Pour le reste du contenu, XNA est couvert dans tous ses aspects (son, réseaux, contrôle, composants, ...) ce qui rend le livre plutôt complet et intéressant à réaliser, notamment pour qui aimerait programmer le jeu de course ou le shoot'em up (ou un moteur réutilisable, tout simplement). Toutefois, les points expliqués précédemment demandent au lecteur d'être véritablement motivé et compétent pour venir à bout de tous ses chapitres.

XNA 2.0 Game Programming Recipes: A Problem-solution Approach
Par Riemer Grootjans
ISBN-13: 978-1590599259
Première édition, la seconde devant arriver fin mars 2009 (ISBN-13: 978-1430218555) et sera conforme à XNA 3.
Un petit mot sur l'auteur : Riemer Grootjans est un thèsard à l'Université de Bruxelles (en Belgique donc) en ingénierie électronique. Il a réalisé beaucoup de tutoriels autour de DirectX, qu'il a ensuite porté sur XNA, ce qui lui a valu le titre de MVP. A ce titre, son site web est une mine d'or avec beaucoup d'articles sur des concepts de base de la 3D (génération de terrains en autre). Son livre reflète beaucoup son passé actif sur Direct 3D.
Le contenu du livre : 100% consacré à la 3D, principalement aux méthodes de base de rendu, le livre ressemble étrangement à un livre Direct 3D. Normal pourra-t-on dire, étant donné l'actif de l'auteur. On se retrouve donc avec un contenu qui n'est pas vraiment focalisé sur XNA en lui même. Pour ce qui est de la 3D, tout comme le site de Riemer, les infos sont très complètes et intéressantes pour qui souhaite réaliser un moteur 3D propre et comprendre toutes les ficelles derrières des rendus efficaces. On passe donc par des rendus de base en 3D, à la génération de terrain (via heightmap et avec interpolation de vertices), en passant par des algorithmes de culling, de calcul de collision entre triangles, etc. Les shader ne sont pas laissés en reste mais se concentrent surtout sur l'éclairage de votre moteur de rendu de terrains fraîchement créé, en y ajoutant lumières et ombres. A la fin du livre, vous vous retrouverez avec un moteur de rendu de terrains complet d'un point de vu technique, mais vous n'aurez pas réalisé un jeu. A vous de voir comment y intégrer des modèles, et surtout le design du jeu. L'auteur fait aussi un petit effort pour couvrir quelques aspects d'XNA, et faisant deux chapitres plutôt maigres sur le son et le réseau.
Critique du livre : Son principal atout en fait peut être aussi sa faiblesse. Il est consacré uniquement au rendu de terrains, et il le fait très bien. De ce point de vu, il est complet et intéressant en présentant des algorithmes efficaces. Mais malheureusement, cela n'en fait pas un livre sur XNA a proprement parlé, mais un livre plus ou moins général sur la 3D. Le livre ne couvre pas vraiment les autres aspects du framework et ce n'est pas la timide tentative des deux derniers chapitres qui y changera quelque chose. On se retrouve donc avec un bon bouquin sur le rendu de terrain, mais aucunement sur le développement de jeu (aucune programmation de design n'étant traitée) et encore moins un vrai livre sur XNA. Ce livre sera donc intéressant pour tout développeur intéressé par la 3D et ses secrets, mais il ne le sera pas pour les débutants ou ceux qui pensaient qu'ils auraient réalisé un jeu à la fermeture du livre.

Building XNA 2.0 Games: A Practical Guide for Independent Game Development
Par James E. Silva
ISBN-13: 978-1430209799
Première édition, seconde en approche pour avril 2009 (ISBN-13: 978-1430218692).
Un petit mot sur l'auteur : James est un ingénieur logiciel diplomé de New York. Dans l'univers du jeu vidéo, c'est un développeur amateur. Sa popularité a explosé lorsqu'il a gagné le concours de développement de jeux Dream Build Play de Microsoft en 2007 avec son jeu The Dishwasher: Dead Samurai qu'il a développé en solo (seul les musiques ont nécessité une intervention externe). Son jeu sortira sous peu sur le Xbox Live Arcade.
Le contenu du livre : ce livre vous propose tout simplement de réaliser le moteur de The Dishwasher. Pas en aussi poli et complet, mais déjà un moteur 2D très moderne, loin des sprites et autres tileset. Avant tout, ce livre se veut "clé en main" pour XNA. C'est à dire qu'il est sensé se suffir à lui même pour apprendre à programmer un jeu avec XNA. Il commence donc par une introduction au langage C#, pour les débutants les plus complets. Attention toutefois, cette introduction est assez light (un seul chapitre ne pouvant être suffisant) et demandera donc des notions de programmation, et surtout de développement orienté objet. Passé cela, le livre propose donc de réaliser un moteur 2D, en passant d'abord par un éditeur de cartes. Cet éditeur pourra gérer plusieurs couches de rendu, des collisions basées sur une grille, mais aussi basées sur des lignes, afin de ne pas être limité à des carrés. Puis les choses deviennent sérieuses, avec la réalisation d'un éditeur de personnages, permettant de créer des animations basées sur un squelette 2D, très intéressant. Le tout sera appuyé par le moteur 2D en lui même. Animation interpolées, nombreux shader pour des effets en tout genre (tout en restant simple), moteur de particules, IA, scripts et réseau ! Tous les aspects d'XNA, en dehors de la 3D, sont couverts et à la clôture du livre, vous avez un jeu 2D très au point techniquement. L'auteur a une approche assez différente des autres livres. XNA étant destiné aux développeurs amateurs souhaitant avant tout se divertir, l'auteur prend le point de vu de l'amateur, reniant donc tout aspect professionnel dans le livre. Exit donc toutes méthodologies, ou approche rigide. A ce titre, la lecture en devient parfois humoristique et relève parfois du "cowboy-coding", tout en restant propre et efficace.
Critique du livre : le livre idéal pour les débutants, mais aussi une lecture très agréable pour les autres, de par le parti prit de l'auteur. Complet par rapport à XNA (3D exceptée), sa lecture se fait avec plaisir et son contenu est très abordable tout en proposant la réalisation d'un moteur 2D pointu aux standards d'aujourd'hui. Ce livre montre bien que l'on peut réaliser des jeux très simples mais très efficaces en tant qu'amateur et sans grande ambition. Une lecture vivement recommandée pour qui est motivé à faire de même, sans prise de tête.
un commentaire
Salut,
Voulant m'instruire à XNA je viens de lire et pratiquer le bouquin de Raron Reed Learning XNA 3.0. Rédigé en anglais mais se lisant facilement de plus les exemples fonctionnent et pallient les insuffisances de la langue. Il couvre le 2D - 3D, propose une introduction aux collisions, à la génération des particules, HLSL et au jeu en réseau. Il m'a permis en tant que débutant de comprendre les codes d'exemple du net plus facilement. Bref j'envisage de me perfectionner à partir du livre de GROOTJANS dont la table des matières semble intéressante.
cdt
JAN