mardi 21 décembre 2010

Avancée destructrice

Cette fois c'est à mon tour de vous faire une petite présentation. Je sais que vous aimez particulièrement l'humour de Thomas, c'est pourquoi je me permets de mettre un petit extrait de son code :



Et oui, on s'éclate bien dans la programmation ;)

En exclu :
  • Nouvelles images du jeu
  • Explications plus ou moins techniques sur l'avancée


Pour le personnage, veuillez remercier Thomas pour ses exceptionnelles qualités de designer ... bref passons.

Bon un peu de sérieux. Comme vous pouvez le remarquer, les images suivent une chronologie de gauche à droite.


L'explosion s'arrête sur les cases destructibles et les détruits.
L'explosion est bloquée par les blocs indestructibles (gris).
L'explosion, tout comme le placement des bombes est géré par un système de "cases".

L'aspect technique et esthétique du jeu ne change guère depuis le post précédent à l'exception du codage de toute la partie concernant les bombes, qui est assez importante.
Ainsi il nous a fallu tester depuis quand étaient posées les bombes afin de savoir si elles devaient exploser ou non.
Enfin il a fallu tester les collisions avec le décor ainsi qu'avec notre personnage pour effectuer les actions nécessaires.

Comment ça marche ?

Comme l'a dit Thomas dans le post précédent, nous utilisons un vecteur qui nous permet de stocker les bombes de manière dynamique. C'est automatique et ça simplifie la vie !

A chaque affichage, nous testons le timer de chaque bombe afin de vérifier si elle doit exploser ou non. On gère ensuite l'affichage en conséquence et on détruit la bombe ainsi que les blocs destructibles, une fois l'explosion terminée.
Pour détruire les blocs, nous changeons simplement la valeur de la case correspondante dans le tableau qui correspond à la map.
Quand la bombe explose il faut tester : si elle s'arrête avant un bloc indestructible, sur un bloc destructible ou si le personnage est situé dans la zone de l'explosion afin de le tuer.


Objectifs :

Dans une prochaine publication, bientôt je l'espère, nous aimerions avoir mis en place le système d'items, générés aléatoirement en détruisant des blocs.
Nous avons également pour objectif proche d'inclure un menu de jeu.
Vous aurez peut être même droit à une petite vidéo du jeu ! Alors soyez patients :)

Si vous avez des suggestions ou des images bien meilleures (on en serait ravis) faites le nous savoir.

Nous vous souhaitons à tous de bonnes fêtes de fin d'année !

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 ;-)

mardi 7 décembre 2010

Ouverture du blog de dev'

Bienvenue sur le blog de développement de BombGirl !
(nom de code, donc non définitif)
Ici je posterais plusieurs articles sur l'avancement du projet, avec screenshots et explications, pour détailler la formidable aventure qu'est la création d'un jeu vidéo :-D

Tout d'abord qu'est-ce que BombGirl me direz-vous ?
Et bien c'est un bomberman-like (poser des bombes et tuer vos adversaires), auquel on veut apporter un maximum de fonctionnalités et de fun en plus.
Dans un premier temps, le jeu sera exclusivement multijoueur, le développement d'une IA étant bien trop complexe. Nous envisagerons sa création pour une version future.

Je dis "nous" pour une bonne raison : je ne suis pas seul sur le projet, c'est connu plus y a de fou, plus y a de code ! (euuh ça rime pas, mais c'est quand même vrai ^^).
J'ai avec moi Guillaume, (grand roux sexy* cherche compagne, n'hésitez pas x) ), et on a pour objectif de sortir une version utilisable** dès la rentrée des vacances de Noël.
* ou pas
**Version Utilisable : version avec laquelle on peut jouer (sans le réseau encore) et sans bugs (connus :-p).

Nous sommes tous les deux dans des études d'informatique donc à ce niveau ça va, une fois le moteur du jeu en place ainsi que l'éditeur de niveaux, nous aurons bien besoin d'un ou plusieurs graphistes dévoués pour réaliser plusieurs sortes de map afin de diversifier les parties.
Nous vous en reparlerons en temps voulu =)

Dans le prochain post, on vous dévoilera les premières images du jeu !
Restez connectés ;-)