jeudi 28 octobre 2010

23 - Effets et Animations des Capacités (suite)

Je ne blogue plus trop ces derniers jours, mais rassurez-vous : Le projet avance bien.

J'ai par exemple créé aujourd'hui la capacité "Black Hole 3" ; cette dernière a pour effet de diviser par 2 (en arrondissant en dessous) toutes les stats du Héros et de l'ennemi qui sont des multiples de 3.

J'ai par la même occasion créé les capacités "Black Hole 4" et "Black Hole 5" qui marchent sur le même principe et utilisent la même animation : La journée a donc été productive, avec 3 capacités créées en moins de 2 heures !

Allez, je tiens le bon bout...

mardi 19 octobre 2010

22 - Effets et Animations des Capacités, Affichage des Dégâts

Je suis actuellement en train de programmer les effets des différentes capacités : Certaines font perdre des PV aux ennemis, mais d'autres permettent de modifier les stats des personnages (de manière positive ou négative suivant les cas). Ça me fait près d'une vingtaine de capacités à programmer, heureusement certaines reposent sur un modèle similaire, ce qui me fera gagner du temps...

Parallèlement à ça, je travaille aussi sur les animations de ces capacités ; bien qu'elles se résument à des effets visuels relativement simples, elles nécessitent malgré tout la création de nombreux éléments graphiques, ce qui va donc m'occuper encore quelques jours...

Bref, beaucoup de boulot, mais ça avance : J'ai entre autres mis au point aujourd'hui l'affichage des dégâts.
J'avais une idée bien précise de l'aspect des nombres, je voulais qu'ils soient composés de multiples carrés, et j'ai donc effectué une recherche de typos sur Dafont en espérant en trouver une qui corresponde à ce que j'avais en tête : Mon dévolu s'est finalement jeté sur Looksky Font par Espen Morten Kvalheim. Voici ce que ça donne :


samedi 16 octobre 2010

21 - Ordre des Actions en Combat, Écran de Victoire

Une fois que le joueur a sélectionné la capacité qu'il souhaite utiliser lors de ce tour de combat, on détermine qui va agir en premier.
En règle générale, si la stat Vitesse du Héros est supérieure ou égale à celle de l'ennemi, c'est le Héros qui agit en premier ; néanmoins, l'utilisation de certaines capacités a pour conséquence de faire jouer le Héros avant ou après l'ennemi, quelles que soient leurs Vitesses.

Une fois que le Héros et son adversaire ont effectué leur action du tour, un nouveau tour démarre : Les deux personnages récupèrent une quantité de MP égale à leur Niveau, puis la fenêtre de sélection des capacités s'affiche à nouveau.

Si le nombre de PV de l'un des personnages descend en dessous de 0, le combat s'arrête.


À l'heure actuelle seule la capacité "Attack" est utilisable : L'ennemi subit un nombre de dégâts égal à la valeur de la stat Attaque du Héros moins la valeur de la stat Défense de l'ennemi (si le résultat de cette soustraction est inférieur ou égal à 0, le nombre de dégâts est fixé à 1).

Le Héros est donc en mesure de diminuer les PV de l'ennemi, qui pour l'instant se contente simplement de sauter son tour (je m'occuperai des capacités des ennemis plus tard, quand toutes les capacités du Héros auront été programmées). Une fois les PV de l'ennemi descendus à 0, l'écran de victoire s'affiche :


En fin de combat, le Héros gagne des points d'expérience (XP) et des Pièces d'Or :
  • Le gain de Pièces d'Or dépend du niveau de l'ennemi et est tiré au sort entre deux valeurs seuil.
  • L'XP de l'ennemi s'ajoute au score du Héros ; Si ce score dépasse un certain seuil, le niveau du Héros augmente et il apprend un nouveau sort.

mercredi 13 octobre 2010

20 - Affichage et Sélection des Icones de Capacités

J'ai finalement réussi à régler les problèmes de la dernière fois, et j'ai donc pu un peu avancer sur la programmation du mode "Combat"...

Math & Magic est un RPG dont les combats se déroulent au tour par tour ; au début de chaque tour, une fenêtre représentant les icones des différentes capacités utilisables s'affiche.
Ces icones sont toutes blanches, à l'exception de la capacité sélectionnée qui apparait en couleur ; une simple pression sur une des 4 touches de direction permet de déplacer la sélection.
Le nom de la capacité sélectionnée ainsi que son coût en PM (s'il y en a un) sont affichés en dessous de cette fenêtre.


dimanche 10 octobre 2010

19 - Contretemps

Hier, après avoir mis au point l'affichage des différentes icones d'actions utilisables en combat, j'ai eu droit à ce charmant message d'erreur.
Il semblerait que mon code soit trop long et que je sois obligé de le découper en sous-fonctions, car il existe visiblement une taille limite 32k que doit respecter chaque section de code.

En fait mon jeu peut très bien tourner dans le lecteur Flash malgré ce souci, c'est juste que tant que j'ai ce message d'erreur je n'ai pas accès à la fenêtre de débogage (qui est quand même bien pratique pour vérifier l'évolution de mes variables et traquer les bugs).

Me voilà donc parti pour créer des tas de sous-fonctions à coups de copier-coller (avec au passage le risque de générer d'autres erreurs, en particulier à cause des variables locales que je vais sûrement devoir transformer en variables globales).


[edit] : Après quelques tests, il s'avère que le terme "section de code" ne désigne pas uniquement les instructions entre deux accolades (au sein d'une function ou d'un onFrame event), mais aussi l'ensemble des instructions au sein de ma scène "donjon" ; donc même si je découpe mes fonctions en sous-fonctions, du moment qu'elle sont toujours définies dans la scène "donjon", elles sont prises en compte et continuent à me faire dépasser la limite de 32k !
Mais j'ai trouvé la parade : Définir mes fonctions dans des Movie Clips ! Même si ces Clips sont présents dans la scène "donjon", leur code n'est pas considéré comme faisant partie du code de la scène.
Bref, j'en suis au même point : Copier-coller des portions de code ailleurs... -_-

vendredi 8 octobre 2010

18 - Initialisation des Stats des Ennemis

Comme je le disais la dernière fois, les stats des ennemis sont tirées au sort entre 2 valeurs prédéfinies. Mais pour certains ennemis les choses ne sont pas aussi simples...

Ainsi, la stat Magie de l'un des monstres du jeu est comprise entre 66 et 99 ET doit être un multiple de 3.
Un autre monstre donne un nombre d'XP compris entre 1 et 25 003 ET ce nombre se termine forcément par 0, 1, 2 ou 3.

La raison pour laquelle j'impose de telles contraintes aux stats des ennemis est intimement liée à la manière dont ces derniers peuvent être vaincus...

Bref, j'ai été confronté à de nombreux cas particuliers, et cela m'a réclamé un peu plus de temps que de simplement déterminer des valeurs maximales et minimales... Mais ça y est, le bestiaire est prêt !

samedi 2 octobre 2010

17 - Affichage du Pop-up de Combat

Lorsque le Héros entre en contact avec un ennemi, le jeu passe en mode "Combat" : Une fenêtre pop-up représentant le lieu du combat se superpose à l'écran d'exploration, et on affiche dessus les deux combattants ; les stats de l'ennemi sont elles aussi affichées et remplacent l'inventaire du Héros (en bas à droite).
Mais avant d'afficher ces stats, il me faut les déterminer : En fonction du type de l'ennemi, je fixe une valeur minimale et maximale pour chaque stat, puis je tire au sort un nombre dans cet intervalle.

À titre d'exemple, voici les stats du premier monstre du jeu, le Goblin :
  • Points de Vie : entre 7 et 12 ;
  • Points de Magie : entre 5 et 10 ;
  • Attaque : entre 13 et 17 ;
  • Défense : 1 ;
  • Magie : entre 3 et 7 ;
  • Vitesse : 6.
Voici ci-dessous deux exemples mettant en scène des Héros différents, des monstres différents et un décor différent :


(pour info, le nombre indiqué en bas à droite du monstre représente l'XP, c'est-à-dire l'expérience gagnée en fin de combat ; je n'en dirai pas plus pour l'instant, mais les actions du Héros peuvent fortement influencer cette valeur... )