[XP/VX/Ace] – MGC ISO Engine

Gestion avancée de l’isométrie 2D dans RPG Maker


Ce système, développé pour RMXP puis porté sur RMVX et RMVX Ace, est un moteur gérant l’isométrie de manière bien plus poussée qu’avec le script 2D ISO. Il s’agit toujours d’un rendu 2D utilisant des tiles (carreaux), mais cette fois le moteur de jeu gère trois dimensions. Les positions des objets sont donc déterminées par trois composantes : x, y et h (z gère déjà la priorité d’affichage des sprites).
La carte est découpée en “blocs”, qui sont des demi-cubes de dimensions 32px × 32px × 16px représentés en vue isométriques.

Ce système est composé d’un éditeur de cartes et du moteur en lui-même.
L’éditeur est un project RPG Maker à placer dans le répertoire de votre projet de jeu, qui contiendra le moteur. Cet éditeur permet de créer des cartes en vue isométrique et de les exporter directement dans le projet parent.
Le moteur, quant à lui, est composé d’un script et d’une DLL capables de charger et afficher des cartes en vue isométrique, et gérer les déplacements des personnages.
Contrairement à la grande majorité de mes scripts utilisant une DLL, celle-là ne sert qu’à accélérer le chargement des cartes et n’est pas appelée à chaque rafraîchissement de l’écran. Les performances en jeu ne dépendent que du moteur de RPG Maker.

Les données à stocker pour chaque carte en vue isométrique sont bien plus importantes que celles d’une carte classique de RPG Maker. Il faut conserver les données de tous les blocs de la carte, c’est-à-dire un nombre total de largeur × profondeur × hauteur blocs, et pour chacun de ces blocs les données sont :

  • sa forme ;
  • son orientation ;
  • les trois textures utilisées (dessus, gauche et droite), sachant que pour chaque texture il faut stocker :
    • l’identifiant du tileset utilisé pour la première couche ;
    • le numéro du tile dans son tileset pour la première couche ;
    • l’identifiant du tileset utilisé pour le masque ;
    • le numéro du tile dans son tileset pour le masque ;
    • l’identifiant du tileset utilisé pour la deuxième couche ;
    • le numéro du tile dans son tileset pour la deuxième couche ;
  • ses passabilités.

Il faut également conserver les données des éléments de décor :

  • coordonnées ;
  • opacité ;
  • indicateur de miroir horizontal ;
  • mode de remplissage.

Tout cela implique des temps de chargement des cartes en vue isométrique assez importants. En effet durant le chargement de la carte tous les blocs sont dessinés par avance pour un affichage plus rapide en cours de jeu. C’est pourquoi la largeur et la hauteur de la carte sont limitées à 50 carreaux.

L’ajout de la gestion d’une dimension supplémentaire a un impact majeur sur le code : alors que le script 2D ISO était très simple et compatible avec la plupart des autres systèmes, ce script redéfinit les déplacements des personnages et leurs interactions. De ce fait ce script aura très peu de chance d’être compatible avec un autre système, à moins que celui-ci ait spécifiquement été développé pour se greffer sur ce moteur.

Téléchargement :
Télécharger la démo contenant l’ensemble des composants pour RMXP (V.1.3)
Télécharger la démo contenant l’ensemble des composants pour RMVX (V.1.3)
Télécharger la démo contenant l’ensemble des composants pour RMVX Ace (V.1.3)

Utilisation du moteur :

  • Vous pouvez déclarer un évènement comme insensible à la gravité en ajoutant le commentaire Floating dans sa page. Dans ce cas, grâce à la commande Script… de Move route, vous pouvez utilisez les commandes de déplacement incr_h et decr_h pour respectivement faire monter et faire descendre d’un bloc l’évènement.
  • L’altitude initiale d’un évènement peut être définie en ajoutant le commentaire Altitude X dans sa page, où X est un entier représentant la valeur de l’altitude en blocs.
  • Les sprites des évènements sont positionnés par défaut au centre du carreau sur lequel ils se trouvent, comme s’ils étaient des parois verticales. Pour simuler l’effet d’un évènement “couché”, ajoutez le commentaire Ground dans sa page
  • le commentaire Shadow ajoute une ombre recouvrant la surface d’un carreau sous l’évènement. Ceci est particulièrement utile pour les plates-formes mobiles afin de mieux les situer dans l’espace.
  • Les personnages ne peut pas se déplacer s’il y a un obstacle devant eux. Cependant, si l’obstacle n’excède pas 1 bloc en hauteur, et s’il n’y a pas un autre évènement posé au-dessus du personnage, la touche [A] permet au joueur de sauter pour atterrir sur le dessus de l’obstacle. Pour un PNJ, vous pouvez ajouter le commentaire Jumper afin qu’il effectue des sauts dans ce cas. S’il y a un autre évènement posé au-dessus du personnage, la commande de saut le pose à terre.

Utilisation de l’éditeur

Ajout de l’éditeur dans un projet RPG Maker :

Le dossier MGC_ISO_Editor doit être placé à la racine du projet RPG Maker parent qui contient le script MGC ISO Engine.

Vous pourrez ensuite le supprimer une fois votre jeu terminé, avant de le publier.

Les ressources graphiques :

Cinq types d’ensemble de textures sont utilisés par l’éditeur pour l’affichage des cartes en vue isométrique. A moins que le contraire ne soit explicitement spécifié, tous les ensembles de textures doivent avoir une largeur de 128px.

  • Tilesets : nommés TilesetXX, où XX est un identifiant sur deux chiffres compris entre 00 et 99, ces ensembles contiennent les tiles utilisés pour le sol, ou plus précisément le dessus des blocs. Il se trouvent dans le répertoire \Graphics\MGC_ISO_Tilesets. Les tiles que ces ensembles contiennent sont des rectangles (64px × 32 px) qui doivent être positionnés de cette manière :

    A chaque tile est attribué un numéro dépendant de sa position dans l’ensemble. Ce numéro permet de créer des tiles animés ou de définir des motifs plus larges en ajoutant des sous-fichiers graphiques nommés TilesetXX_YYY, où YYY est le numéro du tile sur trois chiffres.

    • grands motifs : ils sont un ensemble de tiles isométriques basiques, qui forment un carré en vue normale (dimensions du sous-fichier : largeur = 2 × hauteur, avec comme hauteur un multiple de 32px). Les grands motifs sont utilisés pour éviter une trop grande répétition des tiles.Exemple :
      En utilisant le tileset suivant nommé Tileset03 :

      S’il n’y a pas de fichier Tileset03_001 dans le même répertoire, alors quand la première texture est appliqué sur l’ensemble du terrain de la carte, le résultat obtenu est le suivant :

      S’il existe le fichier Tileset03_001 dans le répertoire :

      Le résultat est différent : c’est le grand motif qui est répété à la place du tile présent dans le tileset.

    • tiles animés : il faut utiliser un format d’animation en plusieurs motifs, qui doivent se présenter de la façon suivante dans le sous-fichier :

      Il est possible d’animer des grands motifs (largeur du fichier = n × 2 × hauteur).

    Concrètement, pour chaque tile d’un tileset qui doit être dessiné, s’il existe un sous-fichier, c’est ce dernier qui est utilisé.

  • Wallsets de côté gauche : nommés Wallset_LeftXX, ils contiennent les sprites utilisés pour dessiner les parois gauches des blocs. Ils sont déposés dans le répertoire \Graphics\MGC_ISO_Wallsets. Les tiles sont contenus dans des carrés de 32px de côté, et sont disposés comme suit :

    Comme pour les tilesets, des motifs plus grands peuvent être définis, qui doivent être le regroupement de n tiles en largeur, et 2 × tiles en hauteur.

    Exemple :
    Un fichier de 4 tiles en largeur, et donc 8 tiles en hauteur :

    Il n’est pas possible d’animer les tiles de paroi.

  • Wallsets de côté droit : nommés Wallset_RightXX et également placés dans le répertoire \Graphics\MGC_ISO_Wallsets, ils contiennent les sprites utilisés pour dessiner les parois droites des blocs. Ils sont similaires à ceux utilisés pour le côtés gauche, avec juste un effet “miroir”.
  • Masksets : nommés MasksetXX, ils sont placés dans le répertoire \Graphics\MGC_ISO_Masksets. Les masques contenus dans ces ensembles sont utilisés pour combiner deux tiles de sol en un, principalement pour créer des transitions plus douces entre deux terrains différents. Les masques sont également utilisés pour créer des autotiles. Ils se présentent sous la forme de tiles de sol en noir et blanc.
    • Masques simples : aux pixels noirs correspondent les pixels du tile utilisés pour la première couche, tandis qu’aux blancs correspondent ceux du tile de la deuxième couche. Les masques simples fonctionnent de la même manière que les tiles de sol, ce qui veut dire que des sous-fichiers peuvent être utilisés pour obtenir des masques d’un plus grand motif, ou des masques animés.
    • Masques autotiles : ils sont définis à l’aide d’un sous-fichier nommé MasksetXX_YYY_Auto. A l’instar des masques simples, les pixels noirs et blancs correspondent respectivement à la première et à la deuxième couche de sol. Le sous-fichier a un format spécial :

      Il est possible d’obtenir des autotiles animés en concaténant les motifs dans le sous-fichier.

      Lorsqu’un tile est créé via la combinaison de deux couches en se basant sur un masque, alors si plusieurs éléments le composant sont animés (première couche / masque / deuxième couche), le nombre de motifs de l’animation est le plus petit trouvé.

  • Scenerysets : nommés ScenerysetXX_Z, où Z est soit l, soit s, ils sont placés dans le répertoire \Graphics\MGC_ISO_Scenerysets. Ils sont utilisés pour dessiner des éléments de décor.
    Les sprites ont une hauteur de 80px (Z = l) ou 48px (Z = s).

    Des éléments de décor animés peuvent être créés via des sous-fichiers nommés ScenerysetXX_Z_YYY.

Editeur :

Les cartes créées grâce à l’éditeur n’apparaissent dans le projet parent qu’à partir du moment où elles sont exportées. L’éditeur a son propre système de sauvegarde des cartes. Cela signifie que vous pouvez déplacer le dossier de l’éditeur d’un projet à un autre, tout en conservant les cartes enregistrées dans l’éditeur.

>>Menu principal

  • New map (Nouvelle carte) : création d’une nouvelle carte en vue isométrique. Aucun fichier ne sera conservé tant que la carte n’aura pas été sauvegardée.
  • Load map (Charger une carte) : charge une carte sauvegardée dans l’éditeur.
  • Import map (Importer une carte) : permet d’importer des cartes en vue isométriques présentes dans le projet parent. Les cartes ainsi importées ne seront pas modifiées dans le projet parent à moins qu’elles ne soient exportées de nouveau en précisant l’écrasement des données de la carte.
  • Export map (Exporter une carte) : exporte des cartes en vue isométriques vers le projet parent.
  • Delete map (Supprimer une carte) : supprime des cartes sauvegardées dans l’éditeur.
  • Iso Converter (Convertisseur Iso) : outil permettant de convertir des ressources en vue isométrique.

>> Nouvelle carte :

  • Type : Seulement deux types sont disponibles pour le moment : une vue isométrique classique, et une vue hybride affichant des tiles isométriques dans une carte rectangulaire à l’écran.

    Les cartes de second type utilisent en bordure des tiles qui ne sont pas considérés comme à l’intérieur de la carte : ils ne sont pas passables, et les actions d’édition sont limitées (élever / abaisser / appliquer une texture / ajouter un élément de décor).

  • Dimensions : la largeur et la profondeur de la carte sont limitées à 50 blocs, principalement pour limiter les temps de chargement. L’altitude maximale est de 24 blocs et la hauteur de la carte n’est pas fixée à sa création. Elle est déterminée à chaque sauvegarde grâce au bloc le plus haut placé.
  • “Void” (Vide) : cette option ajoute à la carte une altitude supplémentaire souterraine (à -8 blocs)., qui n’est pas passable par défaut, principalement utilisée pour afficher des fossés ou du vide.

>> Charger une carte :

Sélectionnez la carte sauvegardée que vous désirez charger, puis accepter pour démarrer l’édition de la carte.

>> Importer une carte :

Sélectionnez la carte en vue isométrique présente dans le projet parent et que vous désirez charger, puis accepter pour démarrer l’édition de la carte. Le nom de la carte est conservé.

>> Exporter une carte :

Sélectionnez la carte sauvegardée que vous souhaitez exporter vers le projet parent et accepter pour commencer le processus d’export.
Dans le cas où il existe déjà une carte en vue isométrique de même nom dans le projet parent, il vous sera demandé si vous désirez l’écrasez ou créer une nouvelle carte.
Tous les ensembles de tiles utilisés pour la carte seront copiés dans le répertoire des ressources graphiques du projet parent.

Attention : le projet parent doit être fermé pendant l’export de cartes.
Dans l’éditeur du projet parent, vous pourrez visualiser l’altitude maximale de chaque colonne de blocs grâce à un jeu de couleurs. Pour cela, il faut utiliser :

  • RMXP : identifiant de tileset = 51
  • RMVX : le tileE
  • RMVXA : le tileE pour l’identifiant de tileset = 5

>> Supprimer une carte :

Sélectionnez la carte sauvegardée que vous souhaitez effacer et accepter pour supprimer physiquement les fichiers associés. Cette carte n’apparaîtra plus dans l’éditeur.

>> Convertisseur isométrique :

Deux répertoires input et output se trouvent dans le dossier Iso Converter. Déposez vos ressources graphiques à convertir dans le dossier input. Les ressources en vue isométriques obtenues seront placées dans le dossier output.

Edition d’une carte :

  1. Fenêtre d’information de l’éditeur : contient le nom de la carte, les coordonnées du curseur et un bloc présentant les textures sélectionnées.
  2. Fenêtre de textures : permet la sélection des textures à appliquer.
  3. Menu : pour sélectionner le mode de l’éditeur ou encore sauvegarder la carte.
  4. Fenêtre d’informations additionnelles : certaines informations peuvent apparaître ici en fonction du mode de l’éditeur.

>> Commandes :

  • [A] : appel la fenêtre de textures.
  • [B] : appel le menu.
  • [C] : applique l’action qui correspond au mode courant. Laissez le bouton [C] appuyé tout en vous déplaçant afin de lancer l’action sur chaque bloc sur la trajectoire.
  • [Bas/Gauche/Droite/Haut] : déplace le curseur dans le plan horizontal.
  • [L/R] : change l’altitude du curseur.

Des commandes supplémentaires peuvent être activées pour les touches [X], [Y] et [Z], en fonction du mode courant. Ces commandes seront précisées dans la fenêtre d’informations additionnelles.

Vous pouvez utiliser les touches de raccourci [F5], [F6], [F7] et [F8] pour naviguer rapidement entre les modes, sans passer par le menu.

Si vous pressez la touche [F9], le mode de visualisation de la carte va basculer en mode “coupe” (suivant l’axe X ou Y).

>> Fenêtre de textures :

Appelée via le bouton [A], cette fenêtre permet de sélectionner les textures qui seront appliquées.

  • [A/B] : fermer la fenêtre.
  • [C] : sélectionner la texture à la position du curseur.
  • [L/R] : parcourir les ensembles de textures pour le type courant.
  • [X/Y] : parcourir les différents types d’ensemble de textures : sol, paroi gauche, paroi droite et -si l’indicateur de masque est activé- seconde couche et masque.

Les ensembles d’éléments de décor ne sont disponibles que si le mode d’édition du décor est sélectionné.

>> Menu :

>>>> Mode d’édition du relief (Heights) :

Vous permet de sculpter la carte.

  • Add block (Ajouter un bloc) : ajoute ou remplace un bloc aux coordonnées du curseur, en appliquant les textures courantes. Appuyez sur [X] pour modifier la forme du bloc, et [Y] ou [Z] pour changer son orientation.
  • Delete block (Supprimer un bloc) : supprime le bloc aux coordonnées du curseur.
  • Elevate ground (Elever le terrain) : élève le terrain à la position du curseur via l’ajout d’un nouveau bloc reprenant les textures du bloc immédiatement en dessous. Dans ce mode le curseur ne bouge pas librement en altitude. Les touches [R] et [L] permettent cependant de parcourir les altitudes disponibles.
    Si le curseur est positionné sur un bloc de “vide”, cette commande permet de le remplir.
  • Lower ground (Abaisser le terrain) : abaisse le terrain à la position du curseur via la suppression d’un bloc. Si le “vide” est autorisé pour la carte, alors cette commande permet de creuser des fossés.

>>>> Mode d’édition des textures :

Pour appliquer des textures aux blocs disposés dans la carte.

  • Set (Appliquer) : applique la texture sélectionnée sur la partie d’un bloc (dessus, gauche, droite). Le curseur ne bouge pas librement en altitude pour l’application de textures de sol. Les touches [R] et [L] permettent cependant de parcourir les altitudes disponibles.
  • Fill (Remplir) : applique la texture de sol sélectionnée sur tous les blocs consécutifs à la même altitude partageant actuellement la même texture.
  • Fill (level) (Remplir par niveau) : applique la texture de sol sélectionnée sur tous les blocs consécutifs à la même altitude, qu’ils partagent actuellement la même texture ou non.

>>>> Mode d’édition des passabilités :

Pour modifier les passabilités des tiles de la carte. Les passabilités sont automatiquement calculées à l’ajout de blocs ou leur suppression, et donc ce mode sert principalement à spécifier les passabilités des éléments de décor.

  • Set passability (Définir la passabilité) : applique un tile de passabilité aux coordonnées du curseur, qui va spécifier la possibilité de passage dans les quatre directions.
    • [X] : permet de visualiser la carte texturée. Aucune action ne peut être effectuée dans ce mode. Pressez à nouveau [X] pour revenir au mode normal.
    • [Y] : change l’orientation du tile de passabilité.
    • [Z] : change la nature du tile de passabilité.
  • Remove passability (Supprimer la passabilité) : supprime le tile de passabilité aux coordonnées du curseur. La position devient passable.
  • Reinitialize (Réinitialiser) : réinitialiser toutes les passabilités de la cartes en prenant les valeurs par défaut.

>>>> Mode d’édition des éléments de décor (Scenery) :

  • Add (Ajouter) : ajoute l’élément de décor sélectionné aux coordonnées du curseur. La sélection d’un élément de décor s’effectue via la fenêtre de textures.
    • [X] : change l’opacité de l’élément de décor.
    • [Y] : change le mode de transparence de l’élément de décor.
    • [Z] : active ou désactive la symétrie horizontale.
  • Delete (Supprimer) : supprime tous les éléments de décor aux coordonnées du curseur.
  • Delete all (Tout supprimer) : supprime tous les éléments de décor de la carte.

>>>> Mode de placement des évènements (Events) :

Vous permet de placer plus précisément des évènements créés auparavant dans le projet parent, après l’import de la carte.

  • Move (Déplacer) : un premier appui sur le bouton [C] sélectionne l’évènement aux coordonnées du curseur. Vous pouvez ensuite déplacer ce évènement et valider sa nouvelle position avec un nouvel appui sur le bouton [C]. Tant qu’aucun évènement n’est sélectionné, les touches directionnelles vous permettent de passer d’un évènement à l’autre.

>>>> Mode de masque :

  • Enable/Disable (Activer/Désactiver) : active ou désactive l’utilisation des masques pour le dessin des blocs.

>>>> Système :

Permet de sauvegarder la carte, ou de régler quelques paramètres techniques.

  • Parameters (Paramètres) : tous les réglages sauf le langage sont enregistrés avec la carte, et affectent l’affichage dans le projet parent une fois la carte exportée. La langue sélectionnée n’affecte que l’éditeur.
    • Language (Langue) : choix de la langue utilisée pour les libellés présents dans l’éditeur.
    • Automatic borders (Bordures automatiques) : choix du style de bordure automatique des blocs.
    • Automatic shadows (Ombres automatiques) : active ou désactive les ombres automatique des blocs.
    • Patterns offsets (Décalage des motifs) : affecte l’origine des dessins de grands motifs dans la carte.
  • Save the map (Sauvegarder la carte) : sauvegarde la carte dans l’éditeur. Si la carte n’a pas été encore sauvegardée, fonctionne de la même manière que la commande Save as a new map.
  • Save as a new map (Sauvegarder en tant que nouvelle carte) : sauvegarde la carte en tant que nouvelle carte dans l’éditeur. Un nouveau nom technique est donné arbitrairement à la carte. Cela peut être utilisé pour copier des cartes.
  • Save a picture (Sauvegarder une image) : crée un fichier image au format .PNG représentant la carte entière, qui est déposé dans le dossier /Pictures.
    Cela peut aider à créer des cartes pour le script 2D ISO, repris dans le script de combat tactique de GubiD GTBS
  • Back to title (Revenir à l’écran titre) : retour au menu initial. Toutes les modifications non sauvegardées sont perdues

Leave a Reply

Your email address will not be published. Required fields are marked *