A-RPG

Publié le par Cidragon6

(Je tiens à préciser que ce n'est pas moi qui a fait ce tuto)

Création de A-RPG

Ce tuto est destiné à la création d'un système de combat en temps réel, comme dans un Zelda. Ceci est une base que vous pourrez modifier et/ou améliorer comme vous le souhaitez.

Tout d'abord, chaque monstre est caractérisé par DEUX événements : un visible (le monstre lui-même) et un autre invisible (qui représente l'"intelligence artificielle" du monstre et qui lui sert à taper le héros).

Juste après : créez un switch qui s'appelle HFP, pour "Héros Frappe Pas". Ce switch est ON tout le temps sauf pendant que le héros va être en train de frapper pour des raisons que nous allons voir plus tard.

On commence par créer un événement pour le monstre. Mettez-le en "Appui touche", au même niveau que le héros. Choisissez le charset qui vous plaît et donnez-lui un déplacement Vers le héros pour qu'il ait un comportement "offensif". La condition de départ est : une variable que nous appellerons HPMonstre a une valeur de plus de 1 (pas plus de 0 car ici "Plus de" sigifie "Supérieur OU EGAL"). Ses commandes sont assez simples :

- D'abord, créez une condition de branchement : [0001:HFP]-ON. ainsi le héros ne peut frapper que s'il n'est pas déjà en train de frapper. Sinon vous auriez juste à vous mettre juste à côté du monstre et mitrailler la touche pour le massacrer en moins de temps qu'il n'en faut pour le dire. Tout ce qui suit (toutes les commandes de l'événement) est dans cette condition de branchement.

- Première chose à faire : bien sûr mettre le switch HFP sur OFF pour que vous ne puissiez pas frapper le monstre pendant que les instructions s'exécutent comme je viens de l'expliquer.

- Ensuite, il va falloir comparer les positions respectives du héros et du monstre pour faire une animation sur le héros (le voir en train de tirer son épée est bien plus amusant...). Pour cela on crée 4 variables : XMonstre, YMonstre, XHéros, YHéros, qui s'ajustent sur les coordonnées des deux personnages. (Conseil : Quand vous réglez les variables des coordonnées du monstre, hoisissez "cet événement" et pas "monstre", comme ça il y aura moins de choses à modifier quand vous ferez des Copier/Coller pour avoir plusieurs monstres sur la map...).

Ensuite il y a 4 conditions de branchement à faire, une pour si le héros est à droite du monstre ([XMonstre]<[XHéros]), une pour s'il est en-dessous, etc. Dans chacune, mettez l'animation de combat qui vous convient.

- Après la dernière de ces quatre conditions de branchement (vous êtes toujours dans la grande du début), ajoutez au choix parmi un flash sur le monstre, un effet sonore, etc. Pensez bien à faire descendre les HP du monstre.

- Enfin, remettez le switch HFP sur ON si vous voulez pouvoir frapper le monstre plus d'une seule fois. Ca serait bête de devoir faire tout le jeu en ayant tapé une fois un monstre. Ca c'est du Héros avec une grande hache ! Bon, j'arrête les jeux de mots pourris comme celui-là.

Voilà pour l'instant. Maintenant, nous allons nous occuper de l'événement invisible dont je vous parlais au début.
Celui-là est un peu plus long. Prenez une grande inspiration. Il est recomandé de faire des pauses d'un quart d'heure toutes les heures afin de ne pas devenir sujet à des crises d'épilepsie. J'ai dit les jeux de mots pourris, pas les blagues pourries !

- Créez donc l'événement en processus parallèle, sous le héros, transparent et sans condition initiale. Et puis on va encore faire une grande condition de branchement où on va tout mettre dedans ; mettez-lui un ELSE. Elle s'ouvre si HPMonstre est supérieur ou égal à 1.

- Dans la première partie de cette condition de branchement, mettez les switch Cado sur ON et le switch Mort sur OFF. Ensuite demandez à l'événement d'attendre 0.5 seconde, sinon le monstre va vous toucher dix millions de fois et vous arracher tous vos points de vie avant même que vous n'ayez le temps de le frapper, ce qui est plutôt peu encourageant pour réussir le jeu...

- APRES ça, il faut regarder les positions respectives des deux personnages comme dans l'événement du monstre. J'insiste sur le "après" parce que si vous le faites avant de faire attendre l'événement, le monstre se sera peut-être décollé de vous et pourra quand même vous frapper.

- Bon, la suite je ne l'écris pas en RPG Maker parce que d'une, c'est trop chiant à faire, et de deux parce qu'il faudrait que je mette des commentaires en plus... je vais l'écrire dans un mélange d'algorithmique et de C++. Ne vous inquiétez pas, normalement vous allez tous comprendre tout de suite, et je vais quand même mettre des //commentaires//, mais il y en aura moins à écrire qu'en RPG Maker. Avant cela, je vous rappelle les variables qu'on utilise : XHéros, YHéros, XMonstre, YMonstre. C'est tout. Je vous rappelle que tout ça est encore dans la condition de branchement du départ.

SI (XHéros=XMonstre) //en fait le SI c'est une condition de branchement//
{
Faire diminuer YMonstre de 1
SI (YMonstre=YHéros)
{
Déplacer l'événement : Monstre, Direction H //on fait que le monstre regarde le héros quand il le frappe c'est plus réaliste//
Diminuer les HP du héros sinon ça sert à rien
//mettez autant d'effets spéciaux que vous voulez : sons, animations de combat, flashes, etc.//
}
SINON //ELSE, quoi...//
{
Faire augmenter Ymonstre de 2 //parce qu'il était pas au-dessus, mais peut-être en dessous, le monstre...//
Déplacer l'événement : Monstre, Direction B //pareil//
Diminuer les HP du héros sinon ça sert à rien
//mettez autant d'effets spéciaux que vous voulez : sons, animations de combat, flashes, etc.//
}
SI (YHéros=YMonstre)
{
Faire diminuer XMonstre de 1
SI (YMonstre=YHéros)
{
Déplacer l'événement : Monstre, Direction G //on fait que le monstre regarde le héros quand il le frappe, c'est plus réaliste//
Diminuer les HP du héros sinon ça sert à rien
//mettez autant d'effets spéciaux que vous voulez : sons, animations de combat, flashes, etc.//
}
SINON
{
Faire augmenter Xmonstre de 2 //parce qu'il était pas à droite, mais peut-être à gauche, le monstre...//
Déplacer l'événement : Monstre, Direction D //pareil//
Diminuer les HP du héros sinon ça sert à rien
//mettez autant d'effets spéciaux que vous voulez : sons, animations de combat, flashes, etc.//
}

Voilà. Ca va ? Tout compris ?

Bon, là, normalement, on arrive dans le ELSE de la condition de branchement qu'il y avait au tout début. Le ELSE signifie le contraire de la première partie de la boucle, à savoir HPMonstre est négatif ou nul. Dans ce ELSE, on met le switch Mort sur ON, puisque le monstre est mort. Cet événement est réglé, on n'y touche plus.

Maintenant, retournez éditer votre événement Monstre parce qu'il ne donne toujours pas de cadeau.

- Créez une nouvelle page qui aura pour conditions initiales que les deux smitchs Mort et Cado soient ON. Cet événement fonctionne au contact du héros et doit être sous le héros. Son charset sera une pièce d'or ou un coeur ou tout objet qui vous plaira. En tous cas, c'est ça le cadeau. Il n'y a que 4 commandes dedans :
- Augmenter l'argent (ou les HP, ou tout ce que vous voulez... ou même donner un item de votre choix) du héros ;
- Déplacer l'événement, cet événement, changer le graphique pour le rendre transparent ;
- Jouer un effet sonore qui fait blouink ou mettre un petit message pour informer le joueur qu'il a ramassé quelque chose ;
- Le plus important : mettre le switch Cado sur off. Comme ça on ne peut pas ramasser le cadeau plus d'une fois.

Dernière chose à faire : c'est un petit réglage de rien du tout mais pensez-y : si on ne demande rien à RPG Maker, tous les switchs sont sur OFF et toutes les variables sont à 0. Pensez dès le début du jeu à régler le switch HFP sur ON sinon vous ne pourrez jamais frapper personne.


Maintenant vous pouvez tester et ça marche. Si, si.

Je sens la question arriver : oui mais alors le monstre il apparaît qu'une fois dans le jeu et après qu'on l'ait tué on e voit plus jamais ! Eh ben non. Parce que vous allez modifier tous les événements qui téléportent sur la map où il y a ces monstres de façon à ce qu'ils réinitialisent les HP des monstres de votre map (Je jure que cette phrase a un sens). Si la map est très grande, créez des événements faits exprès pour cette réinitialisation, par exemple dans un couloir de la map. Comme ça, si le héros s'éloigne trop de l'endroit où les monstres étaient, et qu'il retourne à cet endroit, il va les rencontrer à nouveau et ils lui donneront aussi un cadeau. Attention : essayez de faire en sorte que les monstres ne puissent pas suivre le héros jusqu'à ces événements-là. Parce que sinon, le joueur risque de voir les monstres réapparaître (pouf !) ou les cadeaux se retransformer en monstres (tu croyais m'avoir comme ça ?). Et ça, ça s'appelle un bug.

Trucs et astuces :

¤ Pour faire un monstre plus coriace, vous pouvez :
- Augmenter sa vitesse de déplacement pour qu'il revienne plus vite après vous avoir frappé ;
- Réduire le temps d'attente dans l'événement invisible pour qu'il frappe plus souvent ;
- Ou même carrément enlever la condition de branchement qui vérifie si HFP est bien ON (là, le monstre peut vous frapper même si vous êtes en train de le frapper !).
- Pire encore : juste au début de l'endroit où l'événement voit que le monstre est à côté de vous, mettez le switch HFP sur OFF (il vous sera alors impossible de le frapper pendant qu'il vous frappe mais ne faites ça que s'il y a un seul monstre sur la map du genre un petit boss, sinon la situation où vous êtes à côté de deux monstres ou plus vous empêchera de frapper quiconque même si seulement l'un d'entre eux vous frappe, vu qu'il n'y a qu'un seul switch HFP pour tous les monstres...).

¤ Pour faire de l'exprérience, vous pouvez :
Rajouter, au moment où le monstre meurt, un switch [EXP] sur ON. Créez ensuite un évènement en processus parallèle, invisible, avec comme condition de déclenchement, le switch [EXP]. Dans les cet évènement mettez les commandes suivantes :
-Changer expérience, rajouter ce que vous voulez.
-Switch [EXP] OFF (de façon à ce que l'expérience n'augmente pas indéfiniment...).
Si vos monstres donnent tous la même quantité d'exprérience, cet évènement suffit. Au contraire, si vous voulez faire des expériences différentes, utilisez différents évènement en processus parrallèle similaires à celui décrit plus haut, avec un ajout d'exprience différent, et bien sûr, le switch qui le déclenchera sera différent lui aussi. Pour que cela soir plus pratique, si par exemple, un switch sert pour un ajout d'experience de 20 points, appelez-le [EXP 20] comme ça vous vous y retrouverez très facilement, et lorsque vous le réutiliserez vous gagnerez du temps.

Limites et défauts de ce système :

- Il ne faut pas avoir peur d'utiliser des milliers de variables parce qu'il va vous en falloir beaucoup pour faire plein de monstres sur la même map.
- Le pire est d'être obligé de changer toutes les variables dans un monstre que vous venez de coller dans la même map que le monstre original, mais je n'ai pas trouvé de solution à ce problème...
- Un autre petit truc aussi : si la durée d'attente de l'événement invisible est trop courte (ou même si vous le boostez d'une autre manière), il se peut que le monstre puisse se déplacer d'une case ou vous frapper une fois pendant qu'il est en train de se transformer en cadeau. Je n'ai pas encore trouvé de solution à ce problème.

Mes plus grands remerciements à Osiris qui m'a aidé dans la réalisation de ce système.

 

Tutorial écrit par Killer777.
Publicité

Publié dans Tutoriaux Rpg makers

Pour être informé des derniers articles, inscrivez vous :
Commenter cet article