❤ 0 Jauge ATB
Ce tutoriel est censé aider à créer une jauge du style "ATB" pour les CBS. Il y a deux difficultés quant à la création d'une jauge ATB : la création et le fonctionnement de cette dernière, mais aussi son adaptation tout au long du jeu.
J'ai remarqué dans bien des tutos du genre que ce dernier aspect n'était pas traité. Ceci étant à mon sens l'aspect le plus important, je m'empresse de corriger cet oubli.
Je précise que ceci n'est pas la méthode absolue, c'est juste ma manière de procéder, à vous d'y apporter vos modifications.
Création de la jauge
Dessiner sa jauge
Il faut d'abord créer la jauge (logique). C'est assez simple: il suffit de dessiner des barres (plus ou moins moches selon vos compétences graphiques^^). Une barre pleine, une autre vide, ainsi que des barres intermédiaires représentant les différents niveaux de remplissage de la jauge en question.
Ex: Votre jauge ATB fait 50 pixels et se remplit en 10 phases. Dessinez donc 10 barres plus ou moins longues (et plus ou moins moches^^) avec respectivement: 5, 10, 15,...,50 pixels de longueur.
Déterminer le tour du héros
Maintenant, sachez qu'en gros le fonctionnement est assez simple: On utilise une variable qui va symboliser la vitesse du héros (agilité) et une condition qui va vérifier le remplissage de la jauge. Donc si la variable arrive à une certaine valeur donnée (jauge pleine) le tour commence, sinon on continue à rajouter la valeur de la vitesse.
Ex: Si la variable [ATB héros] est supérieure ou égale à 100, déclencher l'interrupteur "tour héros", sinon rajouter [vitesse héros].
Afficher l'image de la jauge
Dans le deuxième événement on affiche tout simplement l'image de la barre qu'il faut en fonction de la variable [ATB héros].
Ex: Si la variable [ATB héros] est égale à 0, afficher l'image: "celle de la jauge vide"
Si la variable [ATB héros] est supérieure ou égale à 5, afficher l'image: "celle de la jauge de 5 pixels".
Et ainsi de suite: 10 pour 10, 15 pour 15 etc...
Jusque là rien de bien diable et la jauge fonctionne nickel. S'arrêter ici serait néanmoins une erreur...
Si vous utilisez la vitesse du héros pour remplir la jauge, il ne faut pas perdre de vue que ce dernier monte de niveau. Et si monsieur se trimballe avec 5 de vitesse au niveau 1, il peut très bien se retrouver avec 500 de vitesse au niveau 99. La jauge devra-t-elle se remplir 100 fois plus vite? Sûrement pas! (pfiou, l'hallu !).
Adapter la vitesse de sa jauge tout au long du jeu
Voilà donc l'aspect le plus intéressant de ce tuto : arriver à ce que la jauge se remplisse toujours avec la même vitesse malgré l'évolution du héros tout au long du jeu. Et toutes les autres vitesses seront recalculées en fonction de celle du héros (alliés comme ennemis).
Trouver l'équation de vitesse du héros, et la manipuler pour que la vitesse de défilement de la jauge soit toujours la même (théorie)
Pour y arriver, nous allons utiliser une équation (attendez partez pas! C'est super simple).
Pour ceux qui s'en souviennent encore allez dans la base de données et trouvez l'équation selon laquelle évolue la vitesse du héros (indice: équation à deux inconnues). Pour ceux qui ne s'en souviennent pas (soyons polis^^) c'est pas grave, construisez simplement votre courbe selon une équation simple. C'est peut être même mieux car vous aurez une équation propre et simple.
Prenons une équation simple et pratique: Agilité= 5xniveau du héros + 45.
Si le héros est au niveau il a donc 50 points d'agilité (5x1+45), s'il est de niveau 99 il en a 540 (5x99+4).
Maintenant, pour trouver un chiffre constant (car la vitesse de remplissage de la jauge est constante) il suffit d'utiliser l'équation à l'envers. Puisque que l'équation est : Agilité= 5niv + 45, à l'envers on doit soustraire 45 à l'agilité, puis diviser par le quintuple du niveau.
Ex: Au niveau 15, le héros a 120 d'agilité. Utilisons l'équation à l'envers: 120-45= 75, 5x15=75, 75/75=1. Ca marche ! Quel que soit le niveau du héros, on trouvera toujours 1 en utilisant cette méthode, la jauge se remplira donc toujours avec la même vitesse. Un ennemi plus rapide se retrouvera avec 1 virgule quelque chose et un plus lent avec zéro quelque chose. J'espère que vous me suivez toujours car il y a une petite difficulté: Rpg Maker ne prend pas en compte les chiffres décimaux, il arrondit tout à l'entier le plus proche. Résultat tout le monde risque d'avoir la même vitesse. Pour pallier à ce petit problème il suffit de tout multiplier par 10 avant la division.
Récapitulons : il faut donc rendre une variable égale à la vitesse du héros et effectuer les calculs suivants sur cette dernière:
1_ soustraire 45 à la variable
2_la multiplier par dix pour régler le problème des valeurs entières
3_La diviser par le quintuple du niveau du héros
On se retrouvera donc toujours avec 10.
Manipuler l'équation pour que la vitesse de défilement de la jauge soit toujours la même (pratique)
Passons donc à la pratique et créons un mini CBS faisant intervenir notre méthode pour les jauges ATB. Nous avons 3 héros de niveau 1: Arshes qui a 50 d'agilité, Basil avec 51 et Sirus avec 49
Créons un événement qui déclenche le combat (apparence de monstre, suit le héros et se déclenche à son contact) et mettons y ce code: (je n'écrirai que le code de Arshes, faites de même avec les deux autres)
Citation: <>Variable[vitesse Arshes]: rendre égale à Arshes---> agilité |
Là je rend la variable égale à la vraie valeur de la vitesse du perso.
Ensuite Je recalcule la vitesse d'Arshes selon l'équation.
L'équation est: agilité= 5Xniv + 45. Donc il faut:
1_ soustraire 45 à la variable
2_la multiplier par dix pour régler le problème des valeurs entières
3_La diviser par le quintuple du niveau de Arshes
Je commence donc par créer une variable égale à cinq fois
le niveau actuel de Arshes.
Citation: <>Variable[5x niv Arshes]: rendre égale à Arshes---> niveau
<>Variable[5x niv Arshes]: multiplier par 5
Ok, recalculons la vitesse d'Arshes:
<>Variable[vitesse Arshes]: retirer 45
<>Variable[vitesse Arshes]: multiplier par 10
<>Variable[vitesse Arshes]: diviser par valeur de la variable[5x niv Arshes] |
Faites de même avec vos deux autres persos...
Ca y est, c'est fait ? Vérifions: Basil était le plus rapide avec 51,
suivi de Arshes avec 50 et Sirus avec 49.
Basil reste le plus rapide avec 12, Arshes a 10 et Sirus 8. C'est
bon, le ratio est préservé.
Créez un interrupteur nommé Temps et activez-le. Téléportez-vous à la map de combat.
Intégration de cette nouvelle équation dans le système de combat : déterminer le tour du héros
Créez y deux événement : un qui gère le déroulement du temps et l'autre qui gère l'affichage de ce dernier via l'ATB. Appelez les respectivement "déroulement temps" et "affichage temps".
Allez dans l'événement "déroulement temps", on va agir selon le principe que je vous avais expliqué auparavant.
Créez y deux pages: la première vide (si la jauge d'un autre perso est pleine, il ne se passe plus rien, les autres ne bougent plus pour éviter de superposer les tours) et la deuxième avec comme condition de déclenchement l'interrupteur "temps" activé et en processus parallèle. Mettez y ce code :
Citation: <>Condition: si la variable [Atb Arshes] est égale à 100
<>interrupteur [Tour Arshes] activé
<>Sinon
<>Variable[Atb Arshes]: ajouter valeur de la variable[Vitesse Arshes]
#Faites de même pour les autres et ajoutez en fin de code ceci:
<>Attendre 20 frames |
Donc si la variable arrive à 100, on active le tour de Arshes (créez un événement qui gère les tours et faites votre jeu), sinon on ajoute la valeur de la vitesse (en l'occurrence 10). Étant donné que 20 frames égalent une seconde, en gros on ajoute 10 chaque seconde. Or on vise les 100. La jauge de Arshes se remplit donc en 10 secondes.
Intégration de cette nouvelle équation dans le système de combat : afficher la jauge
Attaquons donc l'événement "affichage temps" (processus parallèle too)
Notre jauge s'affiche en 10 étapes. Let's go ! (je la joue ricain là^^)
Citation: <>Condition: si la variable[Atb Arshes] est égale à 0
<>Afficher image: jauge étape 0
Fin
<>Condition: si la variable[Atb Arshes] est supérieure ou égale à 10
<>Afficher image: jauge étape 1
Fin
<>Condition: si la variable[Atb Arshes] est supérieure ou égale à 20
<>Afficher image: jauge étape 2
Fin |
Et ainsi de suite jusqu'à l'étape finale et avec tous les persos.
Placez un bon "attendre 1 frame" en fin de code pour allége le travail de votre processeur qui n'a pas encore droit aux 35 heures.
Et ne pas oublier de rembobiner le système
Pfiou ! j'ai failli oublier. C'est peut être pas nécessaire de le préciser mais sait-on jamais.
Lorsque la jauge se remplit et que vous créez l'événement où se déroulent les commandes et actions de votre CBS, il ne faut pas oublier de désactiver le déroulement du temps au début de l'événement, de le réactiver à la fin et de désactiver cet événement du tour du héros.
Ex :
Citation: #(processus parallèle)
<> Interrupteur[temps] désactivé
<>( Les actions, les commandes, bref votre Cbs quoi! je vais pas le coder non plus^^)
<>Variable[Atb Arshes] rendre égale à 0 (le tour de Arshes achevé, sa jauge doit se vider)
<> Interrupteur[temps] activé
<> Interrupteur[tour Arshes] désactivé. |
Conclusion
Ca y est, c'est fini. C'est peut-être un peu plus chiant que les jauges ATB truquées mais là vous n'aurez plus besoin d'y toucher. Le code se gère tout seul jusqu'à la fin du jeu !
En plus, vu que ce code utilise les valeurs "réelles" de vitesse, vous n'avez pas besoin de faire un CMS spécifique pour camoufler le "trucage", il s'adapte très bien au menu de base.
Voilà ! Maintenant il faut savoir que c'est comme ça que je code les CBS, mais vous pouvez bien n'utiliser que la méthode de l'ATB et fonctionner comme vous le voulez. Je vous conseille cependant cette méthode : la prog est propre, pas gourmande en puissance, et elle permet de mettre des commandes de combat différentes pour chaque perso si vous voulez (chacun a son tour et son code). Cela évite les gros pâtés de code où on n'arrive même pas à se retrouver pour faire des modifications.
Pour la petite histoire j'ai déjà fait un CBS avec une énorme prog en un seul événement. Bah un jour j'ai voulu... Ah ! Ca vous intéresse pas ?... Bon d'accord...
Tutoriel réalisé sur RPG Maker XP. L'utilisation sur d'autres logiciels peut demander une légère adaptation, mais le principe de fonctionnement reste le même.
Ecrit vers le 2 février 2006.
Mis à jour le 21 avril 2020.
|