Affichage des articles dont le libellé est donjon. Afficher tous les articles
Affichage des articles dont le libellé est donjon. Afficher tous les articles

lundi 22 novembre 2010

32 - Le Sort "Bomb"

Le sort "Bomb" (Bombe) fait partie des rares capacités pouvant être utilisées aussi bien en combat que lors de l'exploration :
  • En combat, ce sort inflige d'importants dégâts magiques non élémentaires ;
  • Dans le donjon, ce sort permet de détruire des éléments du décor afin de créer de nouveaux passages.
C'est pour cette raison que la sélection des objets s'effectue à la souris et non au clavier : Après avoir cliqué sur le parchemin du sort "Bomb", il suffit de cliquer sur les briques que l'on souhaite détruire (à condition bien sûr d'avoir suffisamment de PM ! )...

Outre le sort "Bomb", j'ai aussi permis l'utilisation hors combat du sort "Whirlwind" (Tourbillon) et de la Clé du Temps ; cette dernière permet de retourner à l'entrée du Donjon et de récupérer tous ses PV et PM.


Pour finir, un peu de teasing sur un des secrets du jeu :

Où se trouve ce coffre ? Comment y accéder ? Que contient-il ?

dimanche 14 novembre 2010

28 - Étages particuliers : le Premier, le Dernier

Le premier et le dernier étage sont un peu différents des autres en terme de structure : leur tracé ne correspond pas au Score, il n'y a pas d'ennemis, et ils contiennent un trésor spécial qui déclenche une cinématique lorsqu'on le ramasse.

Voici une petite preview de l'ultime étage du jeu :

Qu'y a-t-il tout à gauche de l'écran ? Ça sera à vous de le découvrir...

dimanche 5 septembre 2010

04 - Jonction des salles - Position initiale du Héros

Aujourd'hui j'ai poursuivi la création du Donjon en me penchant sur la résolution du problème évoqué la dernière fois : Comment joindre les différentes salles entre elles ?

Chacune de ces salles est séparée par une colonne de briques. Ce que je souhaite, c'est assurer la jonction entre deux salles en remplaçant une de ces briques par une dalle.
J'ai suivi la méthode suivante : Pour chaque colonne de séparation de salles, j'étudie ligne par ligne la colonne précédente et la colonne suivante ; si, pour une ligne donnée, il y a une dalle dans la colonne précédente ET dans la colonne suivante, alors il est possible de joindre ces deux salles en remplaçant une brique de la colonne de séparation par une dalle. J'ajoute donc les coordonnées de cette brique à la liste des jonctions potentielles. Une fois toutes les lignes possibles étudiées, je tire au sort une valeur dans la liste des jonctions potentielles afin de déterminer quelle brique je vais remplacer par une dalle.

Exemple :
  • Pour la colonne 4 il n'existe qu'une seule possibilité : remplacer la brique de la ligne 3 par une dalle ;
  • Pour la colonne 8 il y a 2 possibilités : la ligne 1 et la ligne 3 ;
  • Pour la colonne 12 il y a 4 possibilités : les lignes 1, 3, 4 et 5 ;
  • Pour la colonne 16 il y a 3 possibilités : les lignes 1, 3 et 5.

Après tirage au sort, j'obtiens le tracé suivant :

Si j'effectue un nouveau tirage au sort, il y a de grandes chances pour que je tombe sur un tracé différent, comme celui-ci par exemple :

La question des jonctions entre les salles semble donc réglée... Pourtant, il reste encore un cas à envisager : Et si le nombre de jonctions potentielles entre deux salles est égal à zéro ?

L'image ci-dessus présente plusieurs paires de salles pour lesquelles la jonction sera impossible si on applique la méthode que je viens de vous présenter.

Il existe en fait 4 paires de salles concernées par ce problème : -1, -7, 14 et 17.
Pour ces 4 cas particuliers, je décide que la jonction s'effectuera selon un chemin bien précis que j'aurai déterminé à l'avance et qui nécessitera de transformer deux briques en dalles et non une seule.

Ce qui donne au final le tracé suivant :


La question du tracé est maintenant quasi réglée : Il ne reste plus qu'à s'occuper de la position initiale du Héros.
Quand le Héros arrive dans un nouvel étage, on est confronté à une des deux situations suivantes :
  • La position du Héros est la même qu'à l'étage précédent ; dans ce cas on doit s'assurer que la tile sur laquelle il se trouve n'est pas une brique, et pour ce faire on impose qu'elle soit de type dalle.
  • Le Héros commence son exploration dans la salle la plus à droite de l'étage ; dans ce cas la position initiale du Héros dépend de la nature de la salle (j'illustrerai ce point dans le billet suivant).

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