XNA - Framework de développement de jeux vidéo

Informations sur l'article

Avatar de Gulix
  • Auteur : Gulix
  • Créé : le 20 Fév 2009 à 12:51
  • Modifié : le 20 Fév 2009 à 14:29
  • Visualisations : 3156

XNA est une des briques qui constitue aujourd'hui le framework .NET de Microsoft. Cet article a pour but de présenter de façon générale ce qu'est XNA, et ce que cela peut apporter dans le cadre du développement d'un jeu vidéo. Après une succincte présentation de XNA, je me pencherai sur les logiciels nécessaires à la création de jeux en XNA, ainsi que sur les jeux créés, qui ne peuvent être exécutés que sous certains environnements. Ensuite, je passerai rapidement sur les possibilités de XNA, en présentant des projets déjà réalisés, et en décrivant les gros morceaux de l'outil. Pour terminer, je présenterai la partie XBox 360 et Creators Club, qui sont un atout indéniable de XNA.

Image


Qu'est-ce que XNA ?

Le terme XNA désigne un ensemble d'outils dédié à la création de jeux vidéos, dans un environnement managé. L'acronyme XNA tient pour XNA's Not Acronymed, un acronyme récursif comme peuvent l'être Linux ou Winamp.

XNA a été annoncé en mars 2004. La première version stable est arrivée fin 2006, une version 2.0 voyant le jour un an plus tard. Et, en 2008, la version 3.0 est apparue. XNA a pour l'instant un rythme de développement assez rapide. Heureusement, le passage d'un projet d'une version à l'autre n'est pas trop compliqué, les nouvelles versions se contentant principalement de rajouter de nouvelles fonctionnalités.

Pour réaliser un programme en XNA, il faut passer par le langage C# (seul officiellement supporté, mais d'autres langages .NET sont possibles). Cela conduit à faire des programmes XNA des programmes en langage intermédiaire, contrairement par exemple à un programme réalisé en C++. Ce langage intermédiaire permet, en théorie, d'utiliser le même binaire sur différentes plate-formes. Actuellement, XNA peut être utilisé sur PC (Windows XP, Windows Vista), XBox 360 et Zune. La théorie s'arrête là, car chacune de ces plate-formes dispose de limitations propres au matériel (principalement). Ainsi, les périphériques XBox 360 ne sont pas tous compatibles PC, la souris n'est pas disponible sur la XBox 360, et le Zune ne permet pas d'affichage 3D.

Basé sur DirectX, dont il est une implémentation managée légèrement plus haut-niveau, XNA est limité aux implémentations Windows du framework .NET. Une implémentation Mono existe, mais est loin d'être complète.

Comment utiliser XNA ?

Produit Microsoft, XNA est parfaitement intégré dans les dernières versions de Visual Studio. Le site officiel propose une page indiquant les programmes à installer pour commencer à développer en XNA. Un bon point pour XNA vient de la gratuité des logiciels nécessaires pour le développement (hormis Windows). Si votre PC commence à se faire vieux, il est possible que XNA ne veuille pas se lancer. En effet, XNA utilise intensément les Shaders, et il est nécessaire de disposer d'une carte compatible avec les Shaders version 1.1, voire 2.0 si possible. Ce petit programme permettra de savoir si votre carte est OK.

L'installation de tous ces composants peut s'avérer fastidieuse, mais elle permet ensuite de travailler dans un environnement très stable, et très performant. Le framework .NET 3.5, nécessaire depuis la version 3.0 de XNA, vous permettra en plus de jeter un oeil au WPF, à Linq, et aux autres nouveautés du framework que vous pourrez intégrer à votre programme (les méthodes étendues par exemple, très utiles).

Tous les éléments de développement que nous avons installés, il faudra également les installer sur les postes des utilisateurs qui voudront utiliser nos jeux. C'est un des inconvénients, mais cela permet d'avoir un environnement plus homogène, et d'éviter en partie le DLL-HELL. les frameworks .NET 3.5 et XNA 3.0 sont donc à installer. Cela peut prendre pas mal de temps, et il n'est pas permis de distribuer les DLL en dehors de leurs installeurs respectifs. J'ai réalisé un script (en VBScript) qui détecte la présence de ces frameworks, et propose, le cas échéant, d'ouvrir la page de téléchargement des frameworks manquants. N'hésitez pas à vous en servir ou inspirer.

Une fois cette partie configuration réalisée, tout jeu XNA que vous créerez devrait être parfaitement exécutable sur ces machines.

Créer un jeu en XNA

XNA n'est pas un moteur de jeu, et ne facilite en rien la création d'un jeu vidéo. Voilà, c'est dit. XNA est une bibliothèque dédiée au jeu vidéo, comme peut l'être DirectX. D'ailleurs, on retrouve DirectX derrière. Ne vous attendez pas à pouvoir développer en XNA aussi facilement qu'avec un Game Maker, du Dark Basic, ou même un moteur type Ogre ou IrrLicht. Qui plus est, avant de se lancer en XNA, il faut déjà connaître (au moins) les bases de C# et de la programmation orientée objet.

XNA traite à la fois la 2D et la 3D. Les deux sont bien sûrs mélangeables (affichage d'un HUD dans un jeu 3D), mais on peut très bien choisir de ne faire que de la 2D. On a alors à notre disposition de nombreux éléments déjà très intéressants, comme la gestion par SpriteBatch, avec rotation, coloration, mise à l'échelle, gestion de la profondeur. Les RenderTarget, qui permettent de simuler des écrans dans un écran (multijoueur splitté, vue minimap), sont également très sympas, et faciles à utiliser. Pour la 3D, on se retrouve avec une gestion légèrement plus haut niveau que du DirectX pur, mais on est loin de l'abstraction des moteurs de jeu courants. Une spécifité de XNA, que j'ai déjà mentionnée, réside dans son utilisation intensive des Shaders. Tout l'affichage 3D, ou presque, passe par eux. Pour réaliser un jeu XNA en 3D, il faudra donc mettre les mains dans les fichiers .fx et le HLSL.

A côté de l'aspect graphique, XNA propose un ensemble de classes liées au contrôle utilisateur. Quasiment tous les périphériques XBox 360 sont compatibles XNA (Guitares, Batterie, Big Button Pad, GamePad). Sur PC, malheureusement, seule la manette XBox 360 pourra être directement utilisée, et uniquement la filaire en USB (pour la sans-fil, un adaptateur existe). Les autres manettes (non-XBox 360) nécessiteront de se connecter à DirectX, et supprimeront la possibilité de déployer sur XBox 360. Le clavier et la souris sont également gérés, mais la souris ne fonctionnera que sur PC (il est possible de brancher un clavier sur la XBox 360).

La partie sonore est également présente dans XNA. Avant la version 3.0, l'utilisation de XACT était nécessaire. XACT est un utilitaire permettant de créer et gérer des banques de son. Toujours utilisable, il peut s'avérer très utile pour réaliser une gestion du son très poussée (accélération, ralentissement, boucles, effets, ...), mais il s'avère trop lourd pour simplement jouer des effets. Depuis la version 3.0, SimpleAudio permet de faciliter cette gestion sonore en utilisant des fichiers basiques (mp3, wav).

Parler de ces fichiers audio me permet de mentionner un des avantages/inconvénients de XNA : le Content Pipeline. La documentation et les discussions sur ce sujet sont très nombreuses, je ne vais donc pas trop m'étendre. En gros, il faut savoir qu'un fichier de ressources (modèle 3D, texture, sprite, fichier audio, fichier xml de description) sera compilé pour être utilisé par XNA, et ne sera donc pas modifiable à la volée. Il faudra recompiler les ressources à chaque modification. Fastidieux, mais cela permet de vérifier à la compilation l'intégrité des ressources, et améliore la vitesse de chargement. Comme je l'ai indiqué, il y a du bon et du moins bon dans ce Content Pipeline. Mais son utilisation se fait sans douleur une fois assimilé son fonctionnement.

Pour terminer cette partie sur la conception, je souhaite signaler l'existence de plusieurs Starter Kits. Développés par les équipes XNA de Microsoft, ils proposent le squelette, jouable, d'un jeu parfaitement fonctionnel. Pour quelqu'un souhaitant se lancer dans un jeu de plate-forme, un RPG, ou encore un jeu de course, ils constituent une très bonne base. Ils permettent également de se faire une idée du potentiel de la plate-forme.

Image


Le XNA Racing Starter Kit propose un jeu de course déjà très complet, en 3D, avec de nombreux effets.

Image


Le RPG Starter Kit permet lui de partir sur un RPG type RPG Maker, avec gestion de quêtes, de combats, de maps.

Les Jeux de la Communauté

XNA dispose d'un atout indéniable par rapport à tous les autres acteurs du développement amateur : il permet de développer officiellement sur console. Comme je l'ai déjà dit, en suivant quelques règles, on peut développer en XNA sur XBox 360 et PC simultanément. Le développement sur PC est ouvert à tout le monde. Concernant la XBox, l'accès est limité. Il faut être membre Premium du Creators Club. Cela coûte 49€ les 4 mois, ou 99€ l'année. En tant qu'étudiant, on peut bénéficier de cet accès gratuitement.

Une fois l'accès autorisé, la XBox et le PC connecté entre eux, on peut choisir de débugger notre programme sur PC ou sur XBox 360. Le développement sur la XBox 360 se fait tout simplement, et il est possible de débugger, pas à pas, l'exécution sur la console. Aussi facilement que sur PC. Le développement console est cependant beaucoup plus restrictif que sur PC. Heureusement, le site officiel du Creators Club regorge d'informations sur les pièges à éviter, les éléments à vérifier. Le forum est également très actif et très complet, et ses membres très calés.

Votre jeu fonctionne à merveille ? Et vous aimeriez le distribuer sur XBox 360 ? C'est dans les cordes de XNA. Seulement, la facilité de déploiement des jeux XNA sur PC ne s'applique pas à la XBox 360. Le processus est tout autre. Il faudra passer par une validation, réalisée par les autres membres du Creators Club. Ceux-ci ne jugeront pas le jeu sur sa technique ou son intérêt, mais sur l'absence de bugs, et le respect des choix de classification (violence, sexe, ...). Une fois validé, votre jeu sera disponible sur le XBox Live, c'est-à-dire plus de 15 millions d'utilisateurs. Ceux-ci pourront tester une démo de votre jeu, et choisir (ou pas) de l'acheter, pour 200, 400 ou 800 MS Points (respectivement 2.40€, 4.80€ et 9.60€). Pour vous, jusqu'à 70% des revenus du jeu.

Liens et Ressources

Déjà mentionné, le Creators Club est indispensable, tout comme son forum. La partie MSDN consacrée à XNA est également nécessaire dans vos favoris. Ziggyware est également une mine d'or, remplie de tutoriaux et d'exemples de qualité. Au niveau des blogs, on peut suivre l'actualité du framework sur le blog de la Team XNA. Dans mes favoris, je consulte très souvent également les blogs de Shawn Hargreaves et Catalin Zima, remplis de très bons conseils et d'exemples très intéressants.

GameCorp - Site d'apprentissage et d'entraide à la création de jeux vidéo.
XHTML Valid 1.1 - Page générée en 0.028 secondes