Guelnika, le site d'E-magination

 

Tutoriaux

Comment faire un A-RPG (en événement)

Comment faire un A-RPG (en événement)

Date : 13/01/2009
Auteur : coco
D'abord quelque ressources :

Image illustrativeImage illustrative



Ces ressources ne sont pas obligatoires c'est juste pour que vous n'ayez pas à les faire vous même

Tuto a-rpg



I) Les coordonnées

Une map est en fait comme une grille de bataille navale Hihi
Avec un côté chiffre et un côté chiffre ^^
Exemple :
Image illustrative
Les coordonnées des évènement sont notées sous la forme (x,y)
Elles permettent de savoir où est le héro
On peut donc savoir si le héro est sur un autre évènement.
On peut mettre les coordonnées du héro dans des variables.
Exemple :
Image illustrative
On peut faire de même avec n'importe quel évènement.
Mais pour que l'on sache en permanence où est le héro, il faut mettre l'évènement en processus parallèle.
Mieux vaut de plus en faire un évènement commun pour ne pas surcharger les maps d'évènement ne servant à rien.
Il faut enfin mettre un attendre de 1 ou 2 frames pour ne pas faire lagger le jeu.
Voici donc la prog pour calculer où se trouve le héro en permanence.
Image illustrative
Avec les conditions,on peut savoir si le héro est sur la même case qu'un autre évènement (par exemple un flèche tirée par un monstre).
Où alors si un monstre est sur la même case qu'une flèche tirée par le héro ^^
Bref on peut avec les coordonnées, on peut savoir où sont les évènement et le héro.

II) Les projectiles

A) Le principe
Il faut mettre l'event du projectile au même endroit que le héro, le décaler pour qu'il sois en face de lui.
Afficher le projectile, le faire avancer tout droit en calculant sa position pour savoir si il est au même endroit qu'un monstre.
Si oui c'est comme la bataille navale : quand on tire en B;4 et qu'il y a un bateau en B;4 , on dit "Touché" et on enlève le bateau. Angel
Donc on fait disparaitre le monstre et on rend ses coordonnées égale à -1 pour ne pas que le monstre sois touché après disparition (car les dernières coordonnées seront prises en compte dans le cas contraire)

B) La programmation
Tout dabord il faut créer un évènement commun (que l'on va parler dans chaque map, donc en Appel )
On commence par faire deux variables (pour les coordonnées du projectile) et les rendre égale aux variables des coordonnées du héro.
On change l'apparence de cet évènement en l'apparence de votre projectile.
Il faut ensuite mettre des conditions pour savoir de quels côté le héro regarde (voir la prog en dessous) pour pouvoir placer le projectile devant le héro.
Image illustrative

Ensuite il faut déplacer l'évènement devant le héro (donc en se servant des variables que nous venons de modifier).

La manipulation qui suit est à répéter le nombre de fois que vous voulez (le projectile se déplacera d'un carreau de plus à chaque nouvelle manipulation).
Mettre un attendre (entre 2 et 5 frames suivant la vitesse de projectile voulue).
Déplacer cet évènement d'un pas un avant.
Rendre les variables de coordonnées du projectile égale aux coordonnées du projectile.
Image illustrative

Il faut en fin mettre un attendre de 2 frames (pour permettre au jeu de calculer si le projectile est sur un monstre).
Rendre cet évènement transparent.
Puis rendre les variables de coordonnées du projectile à -1 (pour que les monstres ne soient pas blessés par un projectile disparu).
Image illustrative

Maintenant sur chaque map où vous voulez que le joueur puisse tirer un projectile, placez un évènement en processus parallèle et traversable qui comprend :
Condition la touche que vous voulez est enfoncée ( C correspond à entrée et espace ).
Appeler un évènement commun (celui que nous venons de créer).
Et tout en bas un attendre de 2 frames pour éviter les lag.
Image illustrative

Si vous voulez tester tout de suite, n'oubliez pas d'activer l'interrupteur qui enclenche l'évènement commun qui calcul les coordonnées du héro.



Il vous faut maintenant un monstre sur lequel tirer.
Pour cela créer un évènement sur une map, en processus parallèle, avec l'apparence que vous voulez.

Le principe :
On calcule les coordonnées du monstre et on les compare à celles du projectile, si elles sont égales, le monstre est sur la même case que la flèche, donc il meurt.

La programmation :
Calculer les coordonnées du monstre.
Condition les coordonnées du monstre sont égales à celles du projectile.
Alors activer l'interrupteur qui contrôle la mort du monstre.
Puis un attendre de 2 frames à la fin pour les lags
Image illustrative

Dernière étape, faire une deuxième page à l'event et mettre l'interrupteur de mort du monstre comme condition de déclenchement.

Si vous voulez que votre monstre revive à chaque entrée dans la map, désenclencher l'interrupteur de mort du monstre à la sortie de la map (sur l'event de téléportation).


III) Le corps à corps

On fait comme pour les projectiles mais sans se servir d'un évent sur la carte (et donc sans le déplacer ni lui donner une apparence) pour le reste c'est grosso modo la même chose. On peut aussi ajouter un bruit pendant l'attaque ou changer la touche à appuyer.

La programmation :
Image illustrative
Image illustrative

Il faut ensuite modifier le monstre pour qu'il prenne les dégats.
Comme pour les projectiles on compare les coordonnées du monstre et ceux de l'attaque :
Image illustrative

IV) Les monstres

A) L'octorock

Image illustrative

Ce monstre se déplace et tire un projectile aléatoirement.
Il suffit de cocher déplacement aléatoire sur l'évent du monstre et de rajouter quelques commandes et un évent pour le projectile reprenant le principe de celui du héro.

Le principe :
Une variable se lance et choisis un nombre aléatoirement, si ce nombre et 1 , on active un interrupteur qui active évent de projectile.
Rendre la variable à une valeur aléatoire entre 1 et 25, et mettre un attendre de 10 frames à la fin c'est déja beaucoup.

La programmation :
Image illustrative

Ensuite faire un évènement comme les projectiles du héro, en changeant bien sur les variables.
Mettre l'image du projectile en apparence.

La programmation :
Image illustrative
Image illustrative
Image illustrative

B) La vie du héro

Il faut enfin faire en sorte que le héro puisse perdre de la vie, pour cela créer un évènement commun en processus parallèle.
Dedans mettez une condition pour savoir si le héro se trouve sur la même case un projectile ou une attaque de monstre.
Si oui, enlevez un à la variable de vie du héro (à créer, elle servira de PV au héro)
Si cette variable est égale à 0, soit mettez un game over, soit téléporter le héro sur une map prévue à cet effet.
On peut aussi mettre un son pour faire comprendre au joueur qu'il vient de perdre de la vie.
Et enfin mettre un attendre pour donner une invulnérabilité au héro après s'être pris un coup.

La programmation :
Image illustrative
Ne pas oublier de mettre une valeur à la vie du héro au début du jeu pour ne pas avoir de game over.

Il faut en fin afficher la vie du héro sur la carte.
Pur cela, on va mettre un évènement commun en processus parallèle, qui comporte une condition pour savoir à quelle valeur est la vie du héro.
En fonction de cette valeur, on affiche un nombre de coeur ou une barre de vie.
Ne pas oublier le traditionnel attendre pour éviter le lag.

Exemple de programmation :
Image illustrative

Pour faire un objet qui rajoutent de la vie ou des cœur à la Zelda (des objets sur les maps), il faut faire un évènement commun en appel avec une condition pour savoir si la vie du héro est au maximum (dans l'exemple, le maximum est 3)

Exemple de programmation :
Image illustrative




Demo : ici


C'est fini pour maintenant mais si vous voulez que je rajoute des monstres ou autre chose, dite le moi

Coco le nerd

Trobien ! (2)

Commentaires

madmanu

je n'utilise pas le A rpg en évent mais bravo,j'ai rarement vu d'aussi bon tutoriel. C'est important de mettre les screens des évents. encore bravo Bravo

Xiaoxiao53

Est-ce que cela marche sur RM2K3? Car j'essaie de reproduire cela puis... CÀ NE MARCHE PAS!! (Désolé si j'ai fais peur aux personnes qui regardais mon commentaire... ¬¬)

Alex RoiEsper

Ça devrait marcher aussi, vu que ça n'utilise que les évènements (et pas les scripts). Je vais demander à Coco, mais n'hésite pas à préciser à quelle étape ça ne marche pas. Wink

(par contre faut que tu modifies l'image des flèches car elle n'est spécifique qu'à RPG Maker XP)

coco

En effet ça devrait marcher sur 2003, je te conseille de faire le plus de test possible pour identifier le problème (les coordonnées ne sont pas mises à jour par exemple ) et de remédier à la source d'erreurs identifiées Wink
Écrire un commentaire

Pour pouvoir poster un commentaire, vous devez être connecté sur votre compte. Si vous n'avez pas de compte, vous pouvez en créer un très rapidement.