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

Articles

Retrouvez ici tous les tutoriels concernant la programmation avec XNA qui ne font pas parties des séries de tutoriels et qui se suffisent à eux même.

Fil des billets - Fil des commentaires

Sous-catégories

lundi, le 19 juillet 2010

L'algorithme de bruit inventé par Ken Perlin et présenté au SIGGRAPH il y a déjà de cela plusieurs dizaines d'années est un des algorithmes les plus utilisés dans le monde du graphisme temps réel, notamment grâce aux effets qu'on peut en tirer et grâce à sa relative rapidité.

Le bruit de Perlin permet de générer des textures procédurales utilisées comme effet visuel pour augmenter le réalisme apparent.

De nombreuses utilisations sont possibles, la plus connue étant certainement celle permettant de générer un terrain aléatoire (cet algorithme sert par exemple de base pour la librairie libnoise), mais d'autres effets peuvent être obtenu si l'on combine le bruit de Perlin avec d'autres fonctions mathématiques, comme dans les vidéos suivantes ci-dessous.

Lire la suite ...

dimanche, le 30 mai 2010

Les effets de "parallax side scrolling" (défilement parallaxe en français) son notamment utilisés dans les jeux vidéos (notamment les jeux de plate-forme et les shoot'em up) pour simuler un effet de profondeur tout en évitant l'utilisation d'algorithmes 3D.

Cet effet est obtenu en superposant plusieurs couches (calques) représentant des objets à plus ou moins grande distance, que l'on fait se mouvoir selon une même direction, mais à des vitesses différentes.

Lire la suite ...

samedi, le 3 avril 2010

Tutoriel: Les transitions avec XNA

La finition d'un jeu dénote souvent de sa qualité intrinsèque. C'est dans les petits détails que l'on reconnait qu'un jeu a été fignolé, et que ses développeurs sont des perfectionnistes. Par exemple, un jeu dont le menu fourmille de milliers de petites animations attirera bien plus l'œil qu'un jeu dont le menu est une liste classe d'éléments sans aucune vie.

Nous allons donc voir ensemble comment gérer ces animations ensemble, afin de pouvoir donner un peu plus de vie à notre jeu. Mais avant de commencer, il serait bon de prendre connaissances des tutoriaux "Gestion du temps - Chronomètre et décompte avec XNA", "Les horloges", "Rajout de méthodes et d'évènements pour la gestion du temps", car le code utilisé ici se base sur ces derniers. De plus, ce tutoriel abuse de la notion de génériques, dont vous pourrez trouver une introduction sur le site de la MSDN.

La première technique d'animation qui coute peu en développement est l'utilisation d'effets de transitions. Quand vous voyez un effet de fondu, un agrandissement d'un sprite au cours du temps, ce genre d'effets est réalisés grâce à l'interpolation de deux variables en fonction du temps.

Ainsi, un fondu est réalisé en modifiant une valeur d'opacité de 0 à 1 sur une certaine période de temps. Un agrandissement d'un sprite est réalisé en modifiant une valeur indiquant l'agrandissement du sprite suivant le temps passé.

Le système transitions que nous allons voir ici formalise ces effets dans une classe nommée Easing.

Lire la suite ...

lundi, le 29 mars 2010

Green Gears

Green Gears est un jeu indépendant développé à l'occasion du concours Imagine Cup 2010 par quatre étudiants français au sein de l'équipe GearsStudio, à Rodez.

Synopsis

À l'heure où la technologie évolue à grand pas, la petite île de Nazeth est confrontée à un comportement étrange de la part des machines. Cette petite île, autrefois un havre de paix, doit désormais faire face à des problèmes graves: pollution, maladie, faim... Nos trois héros, Brain, Tomy et Ivy vont combattre des problèmes grâce à leur compétence respective (ingéniosité, force et médecine).

Brain vient d'achever sa formation d'ingénieur dans les nouvelles technologies. Tomy est un ancien soldat pour qui l'affrontement avec les robots hostiles ne lui fait pas peur. Enfin, Ivy est l'ami d'enfance de Brain, pour qui la médecine et les plantes n'ont aucun secret. Ensemble, ils vont partir à l'aventure sur l'île pour trouver l'origine de ces comportements mystérieux...

Lire la suite ...

dimanche, le 28 mars 2010

Nous avons déjà vu dans les tutoriaux "Gestion du temps - chronomètre et décompte pour XNA" et "Utilisations d'horloges avec XNA" une première façon de gérer le temps sous XNA.

Nous allons aujourd'hui mettre à jour la classe TimerBase ainsi que la classe Timer vu dans ces deux tutos afin de les utiliser dans un système de transitions (easing en anglais) que nous verrons dans un tutoriel ultérieur.

Lire la suite ...

mardi, le 23 mars 2010

Les spécifications de XNA requièrent au minimum une carte graphique qui supporte le Shader Model version 1.1, et la plupart des exemples que vous trouverez sur le net (notamment ceux du creator's club) nécessitent un support du Shader Model version 2.0. Pour la Xbox 360, il n'y a pas de soucis, celle ci est équipée avec une carte graphique supportant le Shader Model version 3.0, et DirectX 10 défini le Shader Model version 4.0.

En théorie, vous ne pouvez pas faire tourner XNA sur des ordinateurs anciens qui n'ont pas la carte graphique nécessaire. Mais que se passe t'il quand vous vous retrouvez avec un vieux portable et une furieuse envie de compléter ce bout de code qui ne fonctionne pas depuis des jours, que vous avez une idée sur comment résoudre le problème, mais aucun moyen de le tester, car la carte graphique n'est pas assez puissante?

Lire la suite ...

jeudi, le 11 mars 2010

Cet article est une traduction/adaptation de l'article anglais de Michael Klucher "Achievement Unlocked - XNA Game Studio 4.0 for Windows Phone". Cet article a été publié avec l'aimable autorisation de l'auteur .

Alors que j'étais dans l'avion qui devait me mener à la Games Developer Conference (GDC) 2010, j'ai eu l'occasion de me rappeler la croissance exponentielle apparue ces dernières années dans le domaine du jeu vidéo mobile. Il n'y a pas si longtemps, il fallait se lever de bonne heure pour avoir une quelconque information sur le développement mobile. Cette année, toutefois, les développeurs sont prêts à s'y intéresser, car le jeu mobile est au centre de plusieurs conférences au GDC.

Lire la suite ...

mercredi, le 10 mars 2010

Ainsi fonds fonds fonds

Indie Fund, le fond d'investissement du jeu indépendantLa nouvelle a déferlé sur le net presque aussi vite que le gros buzz actuel de Valve : un fonds d'investissement dédié aux jeux indépendants vient de voir le jour aux États-Unis.

Indie Fund est le fruit de la collaboration de développeurs indépendants à succès (Ron Carmel et Kyle Gabler, Jonathan Blow, Kellee Santiago, Jenova Chen...) qui ont mis une partie de leurs profits durement gagnés dans un pot commun destiné à alimenter les productions indépendantes. Manne pour les jeunes développeurs en recherche de financement, ils garantissent en sus qu'ils ne toucheront pas à la propriété intellectuelle du jeu et qu'il n'y aura pas de procédure de recouvrement pour les jeux qui ne sortiront pas (et ne pourront donc rembourser l'investissement du fonds).

Les détails sont encore flous sur la façon dont ils comptent investir et se rembourser, mais a priori, le fonds récupère en premier son investissement puis les revenus sont partagés entre le fonds et le développeur pendant une période donnée. Un système assez classique donc, sans doute aménageable par des couloirs de récupération.

Lire la suite ...

mardi, le 2 mars 2010

C# et .NET Version 2.0 par Gérard Leblanc - Acheter ce livre sr Amazon.fr

Résumé

Apprenez à développer en C# dans l'environnement .NET ! Grâce à ce livre, apprenez à écrire vos premières applications en C#. Ce nouveau langage de programmation développé par Microsoft est présenté comme la pierre angulaire de la solution .NET. Rassurez-vous, on ne vous assommera pas avec toutes les subtilités du langage, mais vous posséderez les bases nécessaires pour utiliser la panoplie d'outils du parfait programmeur C#.

Quatrième de couverture

Nouveau langage phare de Microsoft, C# combine les meilleurs aspects des langages C++, Visual Basic et Java, et s'avère en effet d'une facilité incomparable pour créer des applications Windows et Web, même pour des programmeurs non chevronnés. Ce langage a été spécialement conçu pour la plate-forme .NET qui, outre Visual Studio.NET, regroupe l'interface ADO.NET simplifiant l'accès aux bases de données et la technologie ASP.NET permettant d'implémenter des services Web.

Lire la suite ...

Nous avons vu dernièrement comment créer des classes utilitaires pour nous faciliter la tâche de la gestion du temps, en permettant l'utilisateur d'appeler une fonction après n secondes. Toutefois, ce tutoriel n'est pas complet, et il est tout a fait possible de créer d'autres classes qui s'occupent de gérer le temps, basées sur le code écrit la dernière fois. Nous allons donc voir aujourd'hui comment appeler une fonction à intervalles régulier grâce à notre classe Timer.

Ceux d'entre vous connaissant le monde du développement web pourront faire l'analogie entre la classe Countdown et la méthode setTimeout de Javascript (dont il n'existe malheureusement pas d'équivalent en C#) et la classe Timer que nous allons écrire avec la méthode setInterval du même langage.

Lire la suite ...

dimanche, le 28 février 2010

La gestion du temps dans un jeu vidéo est une chose que l'on retrouve partout. Que ce soit évident, comme un décompte avant un check-point dans un jeu de voiture, ou plus subtil, comme le temps d'un fondu progressif, la notion temporelle est utilisée intensément, et il en va de même pour un jeu XNA.

Heureusement pour nous, la méthode Update() et son objet GameTime passé en paramètre nous simplifie bien la vie, mais ce n'est pas suffisant pour faire du code propre. Après m'être renseigné sur le canal IRC #xna sur EFNet (qui rassemble une grande partie des développeurs XNA d'outre-manche et d'outre-Atlantique), je me suis rendu compte que la plupart du temps, les utilisateurs géraient le temps via des variables flottantes dans les GameComponent; cette méthode, très simple, a déjà fait ses preuves. Mais l'on peut mieux faire que:

  • Mode texte
  • Copier
  1. /// <summary>
  2. /// Allows the game to run logic such as updating the world,
  3. /// checking for collisions, gathering input, and playing audio.
  4. /// </summary>
  5. /// <param name="gameTime">Provides a snapshot of timing values.</param>
  6. protected override void Update(GameTime gameTime)
  7. {
  8. time += gameTime.ElapsedGameTime.TotalMilliseconds;
  9.  
  10. if (time >= 60000)
  11. {
  12. DoSomething();
  13. }

Nous allons voir dans cet article deux petites classes, qui seront extensibles à souhait, pour gérer le temps. Nous commencerons avec la classe TimerBase qui représente une implémentation abstraite de base de gestion du temps, et une classe Countdown, qui représente un décompte temporel, et qui permet d'appeler une méthode à la fin de ce décompte.

Lire la suite ...

vendredi, le 12 février 2010

Développement XNA pour la Xbox et le PC par Léonard Labat - Acheter ce livre sur Amazon.fr

Résumé

Ce livre accompagne le lecteur dans la conduite d'un projet en C#, qu'il s'agisse de programmer des événements, l'environnement sonore, ou de créer les moteurs graphique et physique. L'auteur fait le point sur les bonnes pratiques de développement propres au jeu vidéo.

Quatrième de couverture

Grâce au tandem Live et XNA, la programmation de jeu vidéo pour PC et Xbox 360 est accessible au plus grand nombre : il n'est plus nécessaire d'investir dans de ruineux outils pour donner libre cours à ses idées de jeux et les réaliser. Cet ouvrage permettra au lecteur de s'approprier le framework XNA 3.0, mais également de comprendre comment s'organise un projet de développement de jeu vidéo.

Lire la suite ...

jeudi, le 11 février 2010

Quand on développe un jeu sur Xbox, on n'a pas trop besoin de s'inquiéter des options de configuration; en effet, la Xbox étant une machine fermée, l'utilisateur final n'ira jamais changer de carte graphique, pour avoir une meilleure résolution ou de plus joli graphismes. Toutefois, avec les PC, c'est une autre galère: chaque utilisateur dispose d'un matériel différent, et même la configuration du clavier et de la souris peut changer suivant les pays (qui se souvient encore devoir taper le texte en "qwerty" parce que le jeu était programmé pour un clavier américain, laissant des souvenirs impérissables comme le "j'te niaue q lq kqlqsh111" de Counter Strike?)

Le but de notre tutoriel aujourd'hui est donc de pouvoir rajouter un système de configuration à notre jeu XNA. Par chance, sous Windows, nous ne sommes pas limité à la version compacte du Framework .Net, et nous pouvons donc utiliser toutes les classes fournies par Microsoft dans le Framework .Net pour arriver à nos fins. Par chance, il se trouve que la version 2.0 du framework .Net implémente déjà un système de configuration très (voire trop...) complet via l'espace de nom System.Configuration contenu dans la librairie du même nom (qu'il faudra donc ajouter à votre projet avant de continuer).

Lire la suite ...

mercredi, le 10 février 2010

S'il y a bien une chose qui manque dans les dizaines d'implémentations de collections du Framework.Net, c'est bien une implémentation de tableau circulaire; cela n'aurait pas été si grave si cette structure n'était pas si souvent utilisée dans la création de jeux-vidéos: en effet, l'on peut utiliser ce genre de structures pour différentes raisons:

  • Historique d'états: parfois, il est nécessaire de maintenir l'état de certaines variables sur la durée, comme par exemple, les positions du curseur de la souris, afin de lisser les mouvements de la souris (l'option "smooth moves" disponible dans la configuration de FPS) pour éviter, notamment, les saccades d'un capteur optique parfois un peu sensible
  • Historique d'état simplifié: souvent utilisé en conjonction avec les touches claviers, cet historique d'état ne stocke en fait que l'état courant et l'état précédent, mais est néanmoins très utile pour détecter des changement d'états du clavier; il est en effet parfois utile de détecter juste le changement d'état. Par exemple, imaginez un jeu ou l'on pilote un chasseur F-16; vous ne voudriez quand même que à chaque boucle de jeu, le F-16 lance un de ses missiles! Il est donc important de pouvoir capter le moment ou le joueur appuie sur une touche, mais de ne rien faire si la touche reste enfoncée. L'on obtient cet effet si la touche à vérifier est appuyée sur la frame courante, et qu'elle ne l'était pas sur la frame précédente. L'on peut comparer ce genre de choses à l'équivalent d'une détection d'un front montant ou descendant en électronique.
  • Les fenêtres de visualisations glissantes: ce sujet est beaucoup plus complexe et fera le sujet d'un autre article beaucoup plus développé.

Avant d'entreprendre ce tutoriel, le lecteur aura pris soin de se familiariser avec la notion de génériques si cette notion ne lui est pas familière. En effet la totalité des exemples cités dans la suite de l'article abusent de cette notion.

Lire la suite ...

Tutoriel: Composant de statistiques de rendu pour XNA

Il est utile, lorsqu'on développe un jeu vidéo, d'avoir des informations en temps réel sur l'état des périphériques internes (utilisation de la mémoire, utilisation du GPU et autres données); ces informations aident souvent le développeur à s'y retrouver lorsque des optimisations doivent être apportées à une partie ou un modèle du jeu.

Cet article vise donc à créer un Service qui nous fournira différentes statistiques sur l'état du GPU. Nous commencerons petit, en analysant le nombre d'image par secondes (FPS en anglais, pour "frame per second") affichés par notre jeu. Comme à notre habitude, nous utiliserons le paradigme Modèle - Vue - Contrôleur et nous séparerons le fournisseur de données de l'affichage de celle-ci (voir l'article correspondant), chose déléguée à un autre composant, que nous verrons dans un autre article.

Lire la suite ...

dimanche, le 24 janvier 2010

Tutoriel de gestion de la souris avec XNA

Il y a peu de temps, nous avions vu ensemble comment gérer les entrées clavier avec XNA. Pour cela nous avions créer un composant qui était implémenté en tant que Service. Nous allons aujourd'hui utiliser le même paradigme pour contrôler un autre périphérique utilisé sur le PC, à savoir la souris.

Nous utiliserons de nombreux concepts vu lors de la conception du composant clavier, il sera donc bon d'y jeter un coup d'œil pour faire le lien avec ce code.

Lire la suite ...

mardi, le 19 janvier 2010

Que serait un jeu si le joueur n'avait aucun moyen d'interagir avec lui? Une simple démo tournante, qui serait lancée deux, maximum trois fois n'est clairement pas intéressante dans la plupart des cas. C'est pourquoi nous allons aujourd'hui nous attacher à créer un composant, qui implémentera un service, capable de nous fournir l'état des touches du clavier.

Un tel composant aura besoin de plusieurs classes fournies par le framework XNA, à savoir la classe Keyboard et la structure KeyboardState, dont nous étendrons les possibilités via notre classe BufferedState que nous avions codée il y a quelques temps.

Lire la suite ...

mardi, le 5 janvier 2010

Un mot à propos du Xbox Live Community Games/Indie Games

Cet article est une traduction de l'article anglais de Ska Software "A word about Xbox Live Community Games/Indies Games". Cet article a été publié avec l'aimable autorisation de l'auteur.

Je n'ai pas eu affaire au Xbox Live Community Games depuis un certain temps (cela va bientôt changer; j'ai juste besoin d'une pause sur mon Super Projet XNA 2.0 Secret), mais cela ne m'a pas empêché de lire quelques articles amusants fustigeant le service pour avoir promis amour, gloire et richesse sans fin, pour au final, enlever le pain de la bouche.

Lire la suite ...

mercredi, le 9 décembre 2009

Démarrer un programme externe avec Visual Studio Express

Il est parfois utile de démarrer un programme externe lors de la création de librairies de code, notamment lorsqu'il s'agit de tester ses librairies de gestion de contenu (content pipeline). Malheureusement, les versions Express de Visual Studio ne permettent pas d'effectuer ce genre de choses; en effet l'option "Démarrer un programme externe" ("Start external program" en anglais) n'est pas disponible pour ces versions.

Il existe toutefois quand même une astuce pour bénéficier de cette option avec les versions Express de Visual Studio, mais il faudra mettre un peu les mains dans le cambouis.

Après moult tests, il semblerait que cette fonctionnalité ne soit disponible que avec Visual Studio Express 2008. Nous cherchons encore un moyen de faire fonctionner cette astuce avec Visual Studio Express 2005.

Lire la suite ...

Comme les projets de librairie de classe, les projets d'extension du Content Pipeline de XNA ne peuvent être lancés directement. Toutefois, il est possible de les déboguer, après avoir suivi quelques étapes simples décrites ci-dessous.

Note: La boîte de dialogue "Démarrer un programme externe" ("Start external program" en anglais) située sur l'onglet débogage des propriétés de votre projet n'est pas accessible sur les versions Express de Visual Studio. Il est par contre possible de régler cette valeur manuellement avec Visual Studio 2008 Express (voir l'article à ce sujet).

Lire la suite ...