Oniromancie: Tutoriels - Utilisation avancée de RPG Maker


Comment ça marche?

Aëdemphia
Par Sylvanor

Fighting Robots Quest
Par Boulon

Forstale
Par Ødd Clock

Geex
Par roys

Inexistence
Par Falco

La Légende d'Ibabou
Par Zaitan

Lije
Par Gaetz

LoveMaster
Par Cuddlefox

Sarcia
Par Kaëlar

Super Mario RPG - Lost Souls
Par Omegabowser

Jeux: Monster World RPG / Jeux: Pif et Hercule / News: Mise à jour de RPG Maker 2003 / Tutos: Création de charset / Jeux: FAYLINAWA /

Chat  (14 connectés)

Bienvenue
visiteur !






publicité RPG Maker!

Statistiques

Liste des
membres


Contact

71 connectés actuellement

9259613 visiteurs
depuis l'ouverture

657 visiteurs
aujourd'hui

Groupe Facebook

Barre de séparation

Partenaires




TOP
GAMEMAKING


Les 5 plus
visités

Lunae, le baz'arts d'Emz0

Le studio du chat vert

Pixelandgame

Tashiroworld

HeyMakeGames

Au hasard

Le Comptoir du Clikeur

RPG Maker Universe

Make & Graph'

Les deux derniers

Lunae, le baz'arts d'Emz0

Le studio du chat vert

Nos autres partenaires

Devenir
partenaire


Barre de séparation

Un site du réseau
War Paradise

Annuaires référenceurs




Utilisation avancée de RPG Maker
Ecrit par Masthiks






Il existe plusieurs manières de programmer sous Rpg Maker. Cependant, il existe des méthodes plus ou moins compliquées qui permettent d'alléger facilement le code. Ces méthodes sont rarement utilisées, pour une utilisation plus rudimentaire des evenements.

Pointeurs de variable

J'appelle cette fonction de cette manière car elle s'apparente aux pointeurs en c++.
Mais c'est quoi un pointeur, alors?
C'est une variable toute simple dont le contenu représente une autre variable.
Par exemple, si A vaut 10, alors le fait de l'utiliser comme un pointeur de variable va appeler la variable à la position 10, comme le montre ce shéma:

image

Il ne reste plus qu'à utiliser ces variables, par le menu "Modifier variable(s)" du menu des commandes d'évènements.

image

Il y a deux champs où nous pouvons les utiliser.

1 - Ici, c'est le champ pour l'affectation.
Par exemple, si la variable entrée vaut 1, c'est la variable à la position 1 qui sera modifiée, et non pas la variable entrée.

2 - Ici le champ permettant de modifier la valeur affectée.
Par exemple si la variable entrée vaut 1, a sera la variable à la position 1 qui sera affectée, et pas celle entrée.

L'intérêt des pointeurs peut sembler superficiel. Cependant, il permet grandement de simplifier les algorithmes.
On peut imaginer un script de a-rpg, qui gère 4 ennemis, qui possèdent chacun des statistiques différentes. Pour traiter le fonctionnement des ennemis (leur déplacement, enlever des hps...), on pourrait faire 4 scripts différents, qui gèrent chacun un monstre. Cependant la solution est très lourde, et la reutisabilité du ode en est amoindrie, si on veut ajouter un 5eme monstre par exemple.
Le problème est facile a régler avec l'utilisation des pointeurs. Il suffit de créer plusieurs variables génériques, qui vont pointer tour a tour vers les statistiques des monstres. Ces valeurs seront directement modifiées par l'appel des pointeurs. un seul script suffira (il faut juste modifier la valeur des pointeurs pour qu'ils pointent vers les bonnes valeurs), et la reutisabilité est bien meilleure.

Boucles et étiquettes

il est important de faire la distinction entre ces 2 notions, car les étiquettes sont utilisées bien trop souvent lorsque des boucles seraient nettement plus efficaces.
Les boucles trouvent leur véritable utilité avec l'utilisation des pointeurs.
Comment?
Une variable quelconque doit servir d'indice, qui sera incrémentée (sa valeur augmente de 1) a chaque tour de boucle.
Ainsi, la pointeur (l'indice) pointera sur une variable différente a chaque tour de boucle.

Pour revenir a l'exmple sur les 4 monstres, on peut imaginer que les HP du monstre 1 soient à la position 1, ceux du monstre 2 a la position 2, ceux du monstre 3 à la position 3, et ceux du monstre 4 à la position 4.
On veut faire un script qui va ajouter vérifier l'état de chacun d'eux, pour les retirer de la carte si leurs HP sont en dessous de 0, par exemple.
Plutot que de traiter les 4 monstre à la suite (traiter le monstre 1, traiter le monstre 2, etc.), on va créer une boucle et un indice. L'indice va pointer sur la position 1 (il contient donc 1), et sera incrémenté tous les tours de boucles. Quand il vaut 5, on sort de la boucle.
L'indice va donc pointer en premier sur 1, et va traiter les Hps du monstre 1, puis enuite sur 2, et va traiter les infos du monstres, etc.
Si on veut ajouter un monstre il suffit de modifier la condition de sortie de la boucle.
Voici le code pour cet exemple:

image

Difficulté d'utilisation des boucles

On ne peut pas toujours utiliser les boucles, car elles provoquent parfois un effet de lag: elles sont mal optimisées pour Rpg Maker.
Ainsi, il vaut mieux les utiliser en processus parallèle, ou en appel, car elles sont plus adaptées dans ces cas là, et pas pour l'automatique.

Différences avec les étiquettes

N'utilisez pas d'étiquettes quand une boucle peut être utilisée. L'étiquette (le goto) est une opération réputée pour être très lourde a gérer (horrible et monstrueuse selon mon prof d'algorithmique) pour le processeur. Cet effet est moindre sous rpg maker qu'avec un vrai langage, mais est tout de même présent.

Combinaison des boucles et pointeurs

Nous avons vu plus haut que les pointeurs sont à utiliser conjointement avec les boucles. Voici un exemple concret les combinant:

image

Ici, les variables 1 à 10 sont initialisées à 10 positions selon l'axe X. Le script permet de récupérer un pointeur qui pointe vers la position maximale, entre ces 10 positions.
Pour cela, on initialise 2 variables à 1. "Indice", qui représente la position dans la boucle, et "Indice Max", qui est le pointeur qui pointe vers la valeur maximale. On le fait pointer vers 1 pour ne provoquer de bugs.
A chaque tour de boucle, on vérifie si la valeur pointer par "Indice" est supérieure à celle pointée par "Indice Max".
Si c'est le cas, on modifie "Indice Max" pour qu'il pointe vers cette nouvelle valeur.
Quand le traitement est fini, on sort de la boucle.



Aucun commentaire n'a été posté pour le moment.

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe

Plan du site:

Activité: Accueil | News | Forum | Flash-news | Chat | Commentaires | Galerie | Screen de la semaine | Sorties | Articles perso | Livre d'or | Recherche
Jeux: Index jeux séparés | Top Classiques | Top Originaux | Les autres | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Jeux complets | Proposer
Rubriques: Le Wiki | Collection Oniro | Tutoriaux | Scripts | Guides | Gaming-Live | Tests | Making-of | Interviews | Articles perso | OST | L'Annuaire | Divers | Palmarès
Hébergés: Aëdemphia | Fighting Robots Quest | Forstale | Geex | Inexistence | La Légende d'Ibabou | Lije | LoveMaster | Sarcia | Super Mario RPG - Lost Souls
Ressources: Jeux | Programmes | Packs de ressources | Midis | Eléments séparés | Sprites
RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis