lundi 20 décembre 2010

Première image du jeu

C'est partit pour la présentation de BombGirl, elle se déroule en deux parties :

  • La première image du jeu avec explications
  • L'envers technique

ATTENTION : Le design des personnes et des décors sont temporaires, ils nous permettent simplement de pouvoir travailler, nous aurons de vrais graphismes lors de la sortie du jeu.

Le personnage a posé ses deux bombes.

On voit sur cette image les éléments du décors :
les blocs non destructibles (gris) et les blocs destructibles (marron).

Le personnage se déplace "normalement", pas de case en case et son pseudo est inscrit au dessus de lui.

Et les bombes sont déposées avec la touche espace.


Partie technique :

  • Les outils
Bombgirl est programmé en C++ avec la SFML, une bibliothèque de graphismes 2D qui permet entre autres de créer des jeux vidéo.
Pourquoi le choix de ce langage ?
  • C++ est un langage orienté objet, indispensable dans le domaine vidéo-ludique car il permet une grande modularité, et une meilleure structuration du programme que les langages procéduraux (C, Pascal, etc.).
  • Quant à la SFML, c'est simplement le pendant objet de la SDL qui inclue la gestion du son, du réseau, des threads et bien d'autres choses.

  • La Map
La map est représentée par un tableau d'entier à deux dimensions map[15][15] où chaque entier représente quelque chose. Le 0 signifie case vide, le 1 un bloc du décor, le 2 un bloc destructible, etc.
Au chargement du jeu, une fonction est appelée pour parcourir ce tableau et mettre à l'écran les sprites qui correspondent aux chiffres : on a ainsi une jolie map prête à l'emploi.

  • Les collisions
Le second avantage à utiliser un tableau de chiffres réside dans les collisions.
Lors d'un déplacement, on vérifie si l'endroit où l'on veut aller est bien vide, c'est-à-dire s'il correspond à une case égale à 0 dans le tableau. On obtient un système de collisions robuste qui permet de modifier facilement la tableau d'entier pour ajouter ou retirer des éléments du décor car le système d'affichage de la map et le système de collisions sont entièrement dynamiques.

  • Les bombes
En ajoutant le système de bombes, un problème s'est présenté à nos yeux : "Comment à chaque instant, mettre à jour l'état de chaque bombe, et comment gérer les explosions bombes/personnages?"

Nous avons donc créé une "super classe" qui contient tous les personnages et toutes les bombes du jeu.
On stocke ces objets dans des vector, ce qui permet de connaître à tout moment et surtout dans n'importe quelle partie du code, l'emplacement des personnages, des bombes et l'état de ces dernières.
Lors de l'appui sur la barre d'espace, une bombe est instanciée et ajoutée dans le vector de la "super classe" et à cet instant un timer propre à la bombe est déclenché.
Dans la boucle du jeu (là où l'on intercepte les évènements clavier et où l'on affiche la map) on appelle pour chaque bombe contenue dans la "super classe" leur fonction afficher().

  • Conclusion
Le début du développement d'un jeu vidéo est rarement passionnant, il faut d'abord mettre en place le moteur du jeu, le chargement de la map, les collisions, les déplacements, etc.
Près de la moitié de ce moteur est maintenant réalisé, dans le prochain article on vous parlera de la création d'un système de largage d'item (il y aura des proba à la clé ^_^).
Si vous avez des suggestions ou des questions, n'hésitez pas à le faire dans les commentaires ou par mail.
Restez connectés ;-)

Aucun commentaire:

Enregistrer un commentaire