Bonjour tout le monde,
Je vous propose aujourd'hui d'apprendre à créer des ponts réalistes en Event-making uniquement. Cela étant d'une relative complexité, je pense que ce tuto n'est pas fait pour les débutants.
De ce tuto vous pourrez retirer une méthode pour créer des ponts personnels dans votre jeu, je ne fais ici qu'expliquer au mieux la méthode à partir d'un exemple, à vous de la comprendre.
Les ponts au-dessus de la terre ferme
1ère Etape : MapperMappez votre map, comme à votre habitude en mettant vos ponts là où vous le souhaitez, comme dans ma map :
Ensuite, supprimez les morceaux où la map sous le pont est passable, ai-je omis de dire qu'il faut que les tiles correspondant aux pont soient tous entièrement passables ?
Donc, cela :
Si sous le pont on a ça :
alors il faudra mettre :
Au final, on aura donc :
Cette manipulation aura pour finalité de faciliter la construction du pont.
2ème Etape : La notion d'altitudeJe n'ai pas encore défini ce qu'est un pont réaliste, quand peut-on dire qu'un pont est réaliste dans un jeu vidéo ? Je ne me risquerais pas à rapprocher jeux vidéo et réalité mais si on peut passer sous un pont (être visiblement en dessous) et au-dessus (de la même façon) alors on peut dire qu'un pont est réaliste. Cependant, dans RPG maker, il n'y a pas d'altitude pseudo-physique. Si le héros monte un escalier, le logiciel n'aura pas détecter qu'il vient d'effectuer un dénivelé de 1m (ou plus). Cela peut tout changer car cela définira si le joueur passe sous ou sur le pont (graphiquement et pseudo-physiquement).
Si le joueur se trouve dans la zone verte, c'est qu'il est à une altitude de 2 par rapport à la zone bleu : il a monté 2 escaliers. Réciproquement, l'altitude de la zone bleu par rapport à la zone verte est de -2. Ainsi, tout dépend du référentiel choisi, c'est pourquoi je vous conseil de toujours choisir la zone la plus base comme référentiel afin de ne pas vous perdre dans les signes.
Note: Pour mon projet, je redéfini l'altitude à chaque fois que je rentre dans une map.
Comment définir l'altitude ? Et pourquoi pas simplement une variable ? Hé ! Oui ! Une variable que l'on incrémenterait ou décrémenterait quand l'on monterait un escalier, que l'on modifierait à chaque map selon l'endroit par lequel est rentré le héros ?
Bien, choisissez cette variable, moi je l’appellerais ALTITUDE dans mes évents.
Vous n'avez toujours pas compris ce qu'est l'atitude ?
Voyez ce schéma :
Vous avez compris ? Alors passons à la suite.
2ème Etape : Gestion de l'altitudePour gérer l'altitude il faut savoir à quelles zones de la map le joueur est à telle ou telle altitude, dans ma map on les reconnait facilement. C'est juste logique.
Voici donc les plateaux (zone à altitude égales) de ma map :
Note : faire une image des plateaux permet aussi de repérer les erreurs de mapping de votre map (au niveau organisation des rochers), par exemple j'ai du reprendre ma map 3 fois.
Une fois que l'on a bien en tête les plateaux, on peu regarder où sont les changements d'altitude : ici il n'y à que les escaliers mais on peut imaginer une pente glissante comme dans les jeu officiels (qui fait perdre deux niveau d'altitude au joueur).
¤ L’évènement escalier : il doit incrémenter l'altitude de 1 quand le héros monte, et la décrémenter de 1 quand le héros descend. En théorie c'est simple, mais si le joueur décide d’arrêter le héros sur l'escalier puis de repartir dans l'autre sens ça devient tout de suite plus compliqué --' Dommage pour les maker.
Faire un escalier gérant l'altitude n'étant pas le but de ce tuto je vous laisserais faire ça vous-même.
Il y a deux type d'escalier dans ma map : les verticaux (Nord-Sud) et les horizontaux (Est-Ouest).
Dans la couche Events, placer sur l'escalier l'évent suivant correspondant :
Oui bon les escaliers sont automatiques mais bon ... Ils sont difficiles à gérer, il peut trés facilement y avoir des bugs, je vous recommanderais donc te tester tout vos escaliers avant de râler après le pont. Aussi, préférez faire faire 2 pas aux héros dans un évent plutôt que d'empliler les escalier.
¤ Gestion spéciales :
Vous avez sans doute remarquez qu'il y a deux entrées de caverne sur ma map. Chacune téléportant vers l'autres, il faut modifier l'altitude, en effet si le joueur prend celle du bas en premier, il aura une altitude de 1 (car il aura monté un escalier) et arrivera dans l'autre grotte avec une altitude de 1, comme il va descendre de deux escalier il va atteindre l'altitude de -1 ... Il faut donc dans l'évent de téléportation modifier l'altitude et la mettre à 2, réciproquement dans l'évent de téléportation de la grotte du haut il faut mettre l'altitude à 1.
3ème Etape : Le pontJe vais maintenant vous expliquer comment faire le pont en lui-même, c'est sans doute la partie la plus compliquée alors soyez attentifs.
- 1 - CanaliserPrincipe : Visualisez un passage-à-niveaux, entre train et voiture. Si le train passe, les voitures sont bloquées. Si les voitures passent alors le train de passe pas (en supposant que ça se passe comme ça). C'est pareil pour notre pont, sur un pont horizontal, si le héros est en bas alors il pourra passer verticalement et pas horizontalement ; inversement, si le héros est en haut, il pourra passer horizontalement et pas verticalement.
En image :
Il va donc nous falloir gérer tout ceci, il y a évidement des dizaines de façon de faire. Par exemple, on pourra interdire l'appuie de la touche haut si le héros est sur le pont et sur la ligne de dessus du pont, puis interdire l'appuie de la touche bas si il est sur la ligne du bas. De même si le héros est sous le pont,... Ce serait interminable et rempli de bug... On peut aussi imaginer un script mais ce ne serait plus de l'évent-making.
Il faut donc canaliser les voies de passages avec des bloqueurs : je vous conseille de prendre cette ressource et de la placer dans les characters de votre jeu :
- Oui c'est vide, c'est juste pour bloquer le héros - Enregister ce vide dans vos characters, point c'est tout -
Ah oui, j'allais oublier. Prenez ces deux ressources, elles vous permettront d'afficher vos ponts sur la couche event :
Pont horizontal
Pont vertical
(Ces Chara pourront être mis à jour selon l'avancement du tutoriel)
C'est compliqué alors je vais procédé par étape.
A-Canalisation horizontale :Occupons-nous du passage par le haut, la ligne droite entre les deux bords de la mini-vallée.
Le moyen le plus facile d’empêcher le héros de passer sur RMXP est un évent.
Il y deux évènements bloqueurs :
L'évènement BLOQUEUR/NON-AFFICHEUR:
Il faut une première page vide, car l'évènement ne devra pas bloquer le héros quand il sera sous le pont.
Il faut une seconde page ayant pour apparence le bloqueur (que j'ai donné juste au-dessus), qui aura une direction fixe, cette page sera active si et seulement si l'altitude du héros est supérieur ou égale à celle du pont.
Il faut aussi une troisième page vide (par sécurité) avec une unique condition : l'altitude du héros est supérieure ou égale à l'altitude du pont + 1.
Ce qui nous donne l'évènement suivant :
Qui est à placer selon le schéma suivant (sur la ligne rouge) :
On remarque un léger problème avec l'escalier, cela pourrait poser un gros problème mais pas cette fois car il fait la transition entre l'altitude 0 et l'altitude 1, il suffit donc de copier-coller la page de l'escalier normal dans la page 1 du bloqueur.
Notez que ma map est mal faite car la plupart de mes bloqueurs ne servent à rien... On verra donc leur utilité plus tard --'
L'évènement BLOQUEUR/AFFICHEUR :
Je ne vais pas refaire le détails mais voici sa fiche :
-NOTE : La troisième page est là pour respecter la méthode de construction du pont mais pourra être utile si un deuxième pont vient se superposer à celui-ci -
Cet évent permet d'afficher le pont et de gérer son affichage. Si le héros est dessous le pont est au dessus sinon c'est le héros qui est au-dessus (on verra plus tard). Il est à placer selon la ligne violette du schéma suivant (ailleurs, le pont est déjà affiché et les mur se chargent de bloquer le joueur) :
B-Canalisation verticale :Nous avons fini de canaliser le joueur horizontalement, il faut maintenant le canaliser verticalement.
Il va falloir créer de nouveaux bloqueurs, de chaque côtés du pont :
Ils devront être actifs seulement quand le joueur sera à une altitude inférieure à celle du pont.
Cette fois ce sont les mêmes des deux côtés, ils sont à placer selon les lignes vertes du schéma suivant :
Voilà, le héros sera canalisé quand il sera sous le pont.
- 2 - Entrées et sortie du pontIl nous reste deux choses à faire, gérer les entrées et les sorties du héros sur le pont, et créer d'autre bloqueurs conditionnels (on verra après).
Il n'y qu'une seule direction d'entrée et de sortie sur le pont mais de sens de passage : Droite->Gauche ou Gauche->Droite.
A l'entrée/sortie gauche du pont il faut mettre l'évènement suivant :
A placer selon la ligne jaune du schéma suivant :
La deuxième entrée/sortie, celle de droite possède la même structure d'évènement que celle de gauche mais la deuxième page devient :
A placer selon la ligne Orange du schéma suivant :
- 3 - Finaliser le pontLa dernière partie, enfin. On a tous remarquer qu'il y avait des arbres et des rochers sous le pont avant de supprimer les centres des ponts :
Ils sont bien sûr sensé bloquer le héros, mais en mettant un morceau de pont passable par-dessus on a éludé le blocage du héros par le tronc de l'arbre ou par le morceau de rocher. Il est hors de question de les remettre tel quel par évent, il y sont déjà, on aura donc juste à créer un nouvel évènement à copier/coller sur les différent tiles blocants, voici cet évent ; en trois pages comme d'habtitude :
C'est sans doute l'évent le plus simple de ce tutoriel, placez les là où il faut, ici selon les ronds bleus :
Manque-t-il quelque chose ? On dirait que non. On a donc le schéma complet du pont horizontal. Ca y est c'est fait, voici donc le rendu final (désolé je n'ai pas fait de vidéo).
Pour les ponts verticaux, c'est le même principe (j’abrégerais peut-être un autre tuto plus tard).
Les ponts au-dessus de l'eau
Et me revoilà, j'ai eu le temps de mettre au point la possibilité de faire des ponts au-dessus de l'eau ! Cela peut paraître facile mais je vous rappel ce qui arrive lorsque l'on s'approche d'un tile marqué du tag terrain 7 : on bloque ! Mais pourquoi ? Je suis sur mon pont bien au-dessus de l'eau moi ? Visuellement oui, mais pour le jeu le tag du terrain où est le joueur est bien le numéro 7 donc le joueur est, pour RMXP, littéralement dans l'eau et sur le pont en même temps.
Il faut remédier à cela, ce n'est pas compliqué mais j'ai du abandonner l'event-making durant un bref instant et jeter un coup d'oeil à la ligne 101 du script Game_Map de Krosk (celui qui est le plus en bas dans la liste des scripts). On y voit le passage gérant l'appel de l'évènement commun : SURF.
Et bien remplacez ce passage ci :
Code: |
# Surf if self_event != nil if $game_map.terrain_tag(x, y) == 7 and self_event.terrain_tag != 7 return false end if $game_map.terrain_tag(x, y) != 7 and self_event.terrain_tag == 7 if self_event.type == Game_Player # Retour au skin normal $game_temp.common_event_id = POKEMON_S::Skill_Info.map_use(POKEMON_S::Skill_Info.id("SURF") end return false end end |
Par celui-là :
Code: |
# Surf if self_event != nil if $game_map.terrain_tag(x, y) == 7 and self_event.terrain_tag != 7 if $on_bridge return true else return false end end if $game_map.terrain_tag(x, y) != 7 and self_event.terrain_tag == 7 if self_event.type == Game_Player if $on_bridge != true # Retour au skin normal $game_temp.common_event_id = POKEMON_S::Skill_Info.map_use(POKEMON_S::Skill_Info.id("SURF")) else return true end end return false end end |
Et vous pourrez créer vos ponts au-dessus de l'eau.
Moyennant d'activer la variable globale $on_bridge dans les events d'entrées et de sorties. Essayez de le faire vous-même.
Vous n'y arrivez pas ? Ou vous ne comprenez pas ce que je vous demande de faire ? Bien et bien vous vous souvenez des évents d'entrées et de sorties du pont ? Et bien voici comment doivent-ils être (ou juste la deuxième page, la seule qui à changée) si le pont est au-dessus de l'eau :
Entrée/Sortie Gauche :
Entrée/Sortie Droite :
Ne vous fiez pas aux nom de mes évents ils ne sont pas valides.
Ensuite, il y a une deuxième chose qui change : les bloqueur de l'altitude inférieure au pont (en vert dans le schéma suivant)
Oh, ce n'est pas une grosse modification mais elle est capitale, il suffit de changer leurs nom et de les appeler (respectez la case et chaque caractère) "BLOQUEUR_PONT".
Une modification de l'évènement commun SURF est à faire, dans le screen suivant j'ai encadré en rouge la condition à ajouter, elle doit regrouper tout ce qu'il y a en bleu (dessous) :
Son utilité ? laissez l'évènement comme il était avant et essayer de bloquer le personnage sur le bloqueur verticale ... Vous verrez que l'on peut passer à travers le pont et grimper de étages d''un coup.
Un dernier point, pour éviter les bugs graphiques du genre :
Quand le héros passe sous le pont, je vous conseille vivement de placer des Bloqueur/afficheur sur toute la ligne d'event sous les tiles du pont. Ainsi, je vous présente le schéma basique d'un pont au-dessus de l'eau :
Bon making à toutes et à tous !