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

Tag - Gestion du temps

Fil des billets - Fil des commentaires

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 2 mars 2010

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 ...