Tutoriels et actualités sur la programmation de jeux vidéos avec XNA

mardi, le 16 mars 2010

L'émulateur Windows Phone 7, tel que présenté grâce à Visual Studio 2010C'est Valentin Billotte, qui ouvre le feu le premier en France avec son tutoriel sur l'installation de l'environnement de développement Visual Studio 2010 et XNA 4.0 pour la création de jeu vidéos sur Windows Phone 7.

On remarque que XNA Game Studio 4.0 dispose d'un émulateur (à moins que ce dernier soit déjà fourni avec VS 2010? Valentin, si tu pouvais nous apporter des précisions là dessus...) pour le Windows Phone, et vous n'avez donc pas besoin d'avoir un téléphone pour faire vos premiers développements (surtout que... ce téléphone n'est pas encore disponible pour le grand public...)

jeudi, le 4 mars 2010

Tutoriel de dessin de lignes avec XNA

Dans la série "je suis pas en avance", je demande un nouveau tutoriel de David Amador. Cette fois ci, le développeur XNA freelance nous explique comment tracer des lignes basiques dans un jeu XNA grâce à sa classe statique LineBatch.

Comme à son habitude, David nous fourni le code source complet de sa classe dans un exemple fonctionnel de tracé de lignes, qui se trouve en fait être une toute petite application de dessin, comme le montre cette vidéo:

Pour dessiner ses lignes, David utilise en fait un objet Texture2D dans lequel il stocke ses lignes. Je n'aurai personnellement pas utilisé cette technique, et je pense que j'aurai largement préférer des VertexBuffer dynamiques contenant la définition des points, ainsi que leur couleur (j'avais déjà utilisée cette technique pour représenter des repères dans un monde 3D, et cela marchait plutôt bien, j'essaierai d'en faire un tutoriel complet un jour...).

Je sais que je suis un peu en retard, mais pour ceux qui n'auraient pas vu le tutoriel de gestion des écrans de jeu par David Amador, il se trouve à cette adresse.

David utilise une technique assez spécifique qui lui permet d'éliminer les tests conditionnels en gérant les écrans via un ScreenManager. Le principe est le suivant: le ScreenManager contient toutes les instances d'écrans du jeu, et il peut basculer l'écran principal via une méthode spécifique, qui effectue un Shutdown() sur l'écran courant et Initialize() l'écran suivant.

Le code source d'utilisation de sa classe ScreenManager, qui sert aussi d'exemple à son tutoriel, est disponible en libre téléchargement sur son site.

Il est à noter que cette technique peut être parfaitement utilisée pour gérer des états plus génériques que des écrans du jeu ( splash screen, qui donne ensuite accès au main menu, puis à un niveau etc... ) qui sera intégrée dans notre première série de tutoriaux consacré au développement d'un jeu 2D.

lundi, le 1 mars 2010

Le site Progware.com a publié quelques tutos sur XNA, dont notamment:

Visiblement ces articles forment une série sur la création d'un moteur avec XNA, et l'auteur devrait publier prochainement d'autres articles concernant la programmation de jeux vidéos avec XNA. Si d'aventure Progware.com venait à publier de nouveaux tutoriaux, comptez sur nous pour vous prévenir.

Mise à jour: Ajout de trois nouveaux tutos concernant la détection de collision de sprites.

mercredi, le 10 février 2010

Victor Porof, à qui l'on doit déjà quelques autres tutoriaux notamment sur la gestion de terrains, vient de publier un nouveau billet sur son blog. Il s'attaque cette fois ci à un effet de post-processing, le motion blur (flou de mouvement). Le motion blur est souvent utilisé pour rajouter une impression de fluidité dans les mouvements. et est notamment utilisé dans certains jeux de voitures (le premier à ma connaissance l'ayant utilisé intensivement est Need For Speed Underground).

Exemple de motion blur avec Need For Speed Underground

Victor explore les différentes manières d'effectuer le flou de mouvement, et se base au final sur la différenciation de la position de la caméra entre deux frames (chose qui peut être réalisée par la classe BufferedState) pour connaitre le vecteur de mouvement à appliquer à un point donné de l'écran.

mardi, le 9 février 2010

Tutoriel: grille géodésique générée procéduralement

JeBuS vient de publier un tutoriel en 3 parties sur la génération d'une grille géodésique générée d'une manière procédurale. A l'origine, l'auteur souhaitait créer un jeu de type "Civilizations" mais dont le plateau, divisé en tuiles hexagonales serait une sphère (après tout, une planète est bien sphérique, et l'utilisation de cartes en deux dimensions pour ce genre de jeu était du souvent à des limitations techniques, levées aujourd'hui par la puissance des machines modernes). Le genre de plateau que l'on souhaite obtenir est donc un plateau similaire au dessin ci-dessous:

Planète à tuiles hexagonales

Si la technique pour générer ce genre de plateau vous intéresse, vous pouvez consulter les tutoriaux de JeBuS aux urls suivantes:

lundi, le 1 février 2010

C'est connu, les développeurs font souvent de mauvais artistes; parfois, ils essaient de se cacher derrière des techniques de rendus procédurales (surtout quand il n'y a pas d'artiste pour les seconder), et avec un peu de chance (et beaucoup de tweaks) le rendu arrive à être correct pour être inséré dans un jeu. C'est le cas de Dave Bollinger, qui a inventé une technique pour générer des sprites de vaisseaux spatiaux et de robots, qu'il nomme tout simplement PixelSpaceShips et PixelRobots. Cette technique a ensuite été récupérée par le site XNAFan.net et implémentée en XNA. Le résultat semble relativement convaincant (surtout si on aime le style old-school).

Nous restons persuadés que quelqu'un trouvera un gameplay assez déjanté à calquer sur cette librairie. Après tout, Arkedo a bien créé un jeu basé sur des gros pixels...

samedi, le 30 janvier 2010

Daniel Saidi vient de poster un nouveau tutoriel sur son blog, qui nous explique comment charger toutes les ressources compilées au format XNB par dossier; en effet, il nous arrive souvent d'avoir besoin de charger de nombreuses ressources, et la gestion de ces chargement peut vite être fastidieuse, surtout lorsqu'on souhaite gérer un chargement asynchrone de ces dernières.

Pour cela, l'auteur a implémenté son code en étendant la classe ContentManager, classe de base qui s'occupe de charger les ressources dans le framework XNA, et implémente la méthode LoadContent<T> afin que celle ci renvoie un Dictionary (table de hashage) composée de clefs représentant le nom du fichier et de valeurs objets représentant la ressource elle même.

mercredi, le 27 janvier 2010

Neil Reed vient de publier un tutoriel sur deux articles sur son blog (l'article originel contenait un bug qu'il a corrigé dans un billet ultérieur): il nous explique comment afficher une barre de vie via un tutoriel assez complet.

Son code se base sur l'utilisation du SpriteBatch avec une utilisation du Color tinting pour effectuer un rendu 2D par dessus l'écran courant, via l'utilisation de RenderTarget2D (ce qui crée quelques soucis de rendus si l'ordre de rendu n'est pas respecté). Nous avons même pu récupérer une petite vidéo de démonstration de son helper:

David Amador vient de publier sur son site un nouveau tutoriel concernant la gestion des états des écrans de jeu avec XNA. Le code n'est pas bien expliqué, et l'on devra malheureusement se débrouiller avec le source fourni en annexe de son tutoriel...

mardi, le 26 janvier 2010

Cette fois ci, ce n'est pas Jamie McMahon qui s'y colle (on aurait pu le croire), mais edg3, qui vient de démarrer une nouvelle série de tutos sur la création d'un RPG avec XNA. Ses tutos pour l'instant ne couvrent que l'architecture et le squelette d'un RPG avec XNA, mais on suppose que sa série couvrira tout les aspects de développement du jeu sous XNA.

Les articles de la série de tutoriaux déjà publiés sont:

Nous vous tiendrons au courant ici même lorsque edg3 mettra à jour ses tutoriaux.

lundi, le 25 janvier 2010

Nouveau tutoriel d'utilisation de XACT par Offbyone

Offbyone, un membre de l'User Group XNA UK vient de mettre sur son blog un nouveau tutoriel d'utilisation du moteur de son de XNA et de XACT. Contrairement au précédent tutoriel que nous avions repéré sur XACT, celui s'attache plutôt au coté code du moteur de son, et explique l'intégration des banques de sons dans un jeu XNA. Le tutoriel montre peu de code, mais indique comment simplement jouer un son dans un jeu XNA; c'est donc une excellente base pour débuter.

samedi, le 16 janvier 2010

Quand on commence à créer un jeu vidéo, le moteur de son est souvent le parent pauvre de la création vidéo-ludique, et ce sujet n'est malheureusement pas souvent traité parmi la pléthore des tutoriaux XNA. Heureusement, Azerdark tente de combler ce vide, en commençant une série de tutos sur la création d'un moteur sonore. Son premier tutoriel concerne la prise en main de l'outil d'édition sonore fourni par XNA, Le XNA Audio Cross-platform Tool (XACT).

vendredi, le 15 janvier 2010

La série de tutos de Roecode de développement d'un moteur 3D avec XNA est assez ancienne mais elle a le mérite toutefois d'être très complète. Composée de 18 tutoriaux, divisés en 7 chapitres Roecode couvre les éléments les plus importants de la conception d'un moteur, d'un ShaderManager en passant par la gestion des contrôles, puis la gestion d'une scène grâce à un SceneGraphManager, pour finir par la gestion du ciel et du terrain.

Trois choses remarquables sont toutefois à mentionner dans cette série de tutoriaux:

  • Un des tutos parle de Test Driven Development (TDD) appliqué au développement de jeu vidéo avec XNA. De notre connaissance, Roecode est le seul qui applique la méthodologie TDD au développement XNA.
  • Un des tutoriaux explique en détail le fonctionnement du geometry hardware instancing, qui permet d'accélérer le rendu d'objets nombreux (arbres, foules, etc...)
  • Un système de plug-ins qui permet d'ajouter et supprimer des nouvelles fonctionnalités via un fichier de configuration XML.

mercredi, le 13 janvier 2010

Il est parfois utile de pouvoir faire de la gestion de collision parfaite au niveau des pixels entre deux sprites. Mykre nous propose une méthode sur son blog pour réaliser ce genre de tâches, mais, selon les dire de l'auteur, cette méthode atteint vite ses limites et il note une perte sensible au niveau de la vitesse de rafraichissement à partir de 300 sprites.

Michael Quandt vient de publier un nouvel article sur son blog ou il propose un moyen unifié de gestion des actions utilisateurs via un système d'actions. Le code source d'exemple est fourni.

Dans le principe, il s'agit de rajouter une couche supplémentaire au dessus des entrées utilisateurs fournies par le framework XNA, et de convertir ces entrées, en fonction de leur état et d'un fichier XML de configuration, en actions communes. Par exemple, si l'utilisateur appuie sur la flèche gauche, une action "Aller à gauche" sera émise, mais cette action pourra aussi être émise si le contrôleur directionnel de la manette est poussé à gauche.

mardi, le 12 janvier 2010

Joel Martinez se fend d'un article très intéressant sur la gestion de la mémoire par l'utilisation de pools, que l'on pourrait traduire en français par "ensemble d'objets réutilisables".

Le concept d'un pool est simple: imaginez un vaisseau qui tire des dizaines de balles par secondes. Au lieu de détruire l'objet balle dès que celui-ci sort de l'écran et d'en créer un nouveau à chaque tir, il est plus intelligent de réutiliser la balle (les opérations d'allocation et de destructions de la mémoire étant quand même relativement couteuses). Dans ce cas précis, le pool serait une classe manageant cet ensemble de balles réutilisables.

Le tutoriel peut se trouver sur le blog de Joel Martinez, qui passe aussi en revue d'autres implémentations de Pool faites par la communauté XNA.

Casey Young, plus connu sous le pseudo d'ElementCy vient de publier le premier article d'une série sur la création d'un jeu de plateformes avec XNA, sur le site du Sergeant Conker. Le premier tutoriel de la série rentre directement dans le vif du sujet, et suppose donc que vous ayez déjà une connaissance minimale de la plateforme XNA.

Cette première partie vise notamment a créer les classes nécessaire au chargement d'un fichier texte contenant les données d'un niveau de jeu, ainsi qu'à son rendu. ElementCy met d'ailleurs à disposition le code source de son projet de jeu, que vous pourrez retrouver en annexe de cette brève.

Scribble, un jeu de plateforme réalisé avec XNA

lundi, le 11 janvier 2010

Tutoriel de rendu de grille de déboguage par Vikram

Vikram vient de publier sur 8 bits memories un petit tutoriel qui dessine une grille en arrière plan du jeu. Cette grille dont l'utilisation est essentiellement vouée au débogage des jeux, permet de connaitre le placement approximatif des éléments (sprites, objets) à l'écran.

Le code génère à la volée les points nécessaires au rendu, qu'il faut ensuite appeler à coup de DrawUserPrimitive(). Malheureusement, l'auteur n'a pas jugé bon de compartimenter son code dans un GameComponent, ce qui aurait rendu l'utilisation de cette grille de débogage beaucoup plus pratique...

Pour obtenir un résultat de qualité professionnelle au niveau d'un jeu vidéo, il faut non seulement faire de jolis graphismes, mais aussi être capable de gérer le paramètre gamma de l'écran d'un utilisateur (dont les réglages de contraste et de luminosité sont différents du poste du développeur).

Comme le soulève Matt Pettineo dans son blog, la gestion du gamma dans XNA n'est pas triviale, chose due notamment aux différences entre Xbox et Windows; il existe toutefois une solution pour faire de la correction gamma, mais cette solution n'est malheureusement valable que sous Windows.

- page 1 de 2