mardi 31 août 2010

03 - Inventaire (suite) - Génération du Donjon

Hier je n'avais pas tout à fait fini l'Inventaire ; je m'étais occupé des objets consommables, mais il me restait encore une catégorie d'objets : ceux à usage multiples.
Contrairement aux consommables, ces objets n'existent qu'en un seul exemplaire. Par conséquent il n'y a pas de compteur de quantité dans le coin supérieur gauche de l'icone.

L'ajout de ces 4 derniers objets a été très rapide, et je me retrouve donc avec un Inventaire opérationnel, à un détail près : Les objets sont affichés, certes, mais pour l'instant inutilisables ! Néanmoins je n'ai pas l'intention de m'occuper de ça pour l'instant. Non, aujourd'hui j'ai décidé de m'attaquer à un gros morceau : La génération des donjons !

Chaque étage du donjon est composé d'un assemblage de tiles (des blocs carrés de 16 pixels de côté qui représentent soit les dalles sur lesquelles les personnages peuvent marcher, soit les murs qui les empêchent de passer) formant un grand rectangle de 34 tiles de long et 7 tiles de haut.

L'étage est représenté par une variable de type tableau à 2 dimensions (un indice pour indiquer la colonne, et un pour indiquer la ligne) : chaque case du tableau représente une tile, et possède soit la valeur 0 (mur) soit la valeur 1 (dalle).

Chaque étage peut être vu comme une succession de salles ayant une forme prédéfinie qui sont reliées entre elles par des couloir.
Dans un premier temps j'ai rempli toutes les cases du tableau avec des 0. Puis, en fonction du type de salle que je souhaite avoir, je modifie les cases pour faire apparaitre les dalles qui donneront à la salle la forme souhaitée.

map[c]=[0,1,0,0,0,1,0];
/*
la première colonne est remplie comme suit, de haut en bas:
brique, dalle, brique, brique, brique, dalle, brique.
*/
map[c+1]=[0,1,1,1,1,1,0];
// on fait de même pour la colonne suivante...
map[c+2]=[0,0,0,0,0,1,0];
//... et pour celle d'après.
/*
on obtient donc une salle ayant cette forme :
XXX
OOX
XOX
XOX
XOX
OOO
XXX
*/

Une fois mon tableau rempli, je n'ai plus qu'à dupliquer mes Clips en les plaçant au bon endroit et en affichant la frame adéquate (brique ou dalle). J'ai ainsi obtenu le résultat suivant :

Comme vous pouvez le constater, les différentes salles sont bien affichées, mais il y a un léger souci : Elles sont toutes séparées par des colonnes de brique !
La prochaine étape consistera donc à relier les salles entre elles...

Le jeu propose 7 environnements graphiques différents, c'est à dire 7 paires "brique-dalle" de couleurs et d'aspects différents.
Lors de la phase de recherches graphiques j'avais réalisé le design de ces 14 éléments. Cependant, une fois assemblés sous forme de donjon, j'ai pu constater certains défauts qui m'ont poussé à modifier légèrement l'apparence et les couleurs de mes sprites afin d'avoir un rendu visuel plus agréable à l'oeil.

Ancienne version (trop terne) :

Nouvelle version (plus colorée) :

3 commentaires:

  1. Et pour quand est prévue la sortie d'une release jouable ? :)

    RépondreSupprimer
  2. Oh, des commentaires ! (désolé, je pensais que je serais prévenu par mail comme pour mon autre blog, du coup je les découvre seulement maintenant ; visiblement j'ai dû oublier de paramétrer un truc... ^^)
    Pour l'instant, aucune date de prévue, même si j'espère ne pas passer plus de 2 mois dessus ; je nourris même l'espoir insensé d'avoir un truc à peu près jouable d'ici fin septembre (je sais, je suis un grand rêveur... ).

    RépondreSupprimer