[XP] – 2D ISO

Gestion de l’isométrie dans RPG Maker

Rendu à l’écran du script 2D ISO

Ce script, qui date du 16 août 2006, fut la base de la gestion de l’isométrie dans RMXP puis dans RMVX.
Auparavant, des tentatives en isométrie dans RMXP furent menées, mais un problème majeur émergeait systématiquement : la gestion des déplacements et des collisions. En effet RMXP utilise un système de tiles qui sont des carreaux de 32px de largeur. La vue isométrique classique des jeux vidéos utilise une grille triangulaire, qu’il est alors impossible de faire correspondre précisément à la grille carrée de RMXP.

L’idée a été de séparer l’affichage de la gestion des déplacements et des collisions. Tous les personnages conservent leur déplacements sur une carte classique de RMXP, mais ils sont affichés sur une seconde carte en rendu isométrique.
Ce script a été tout d’abord modifié par Siegfried, qui a ajouté un système de hauteurs (décalage de l’affichage vertical en fonction des coordonnées en x et en y des personnages), puis repris par Gubid dans son fameux script de combats tactiques GTBS, et adapté sur par lui-même sur RMVX.

Comment utiliser ce script ?

Vous trouverez dans la démo deux parties : le script 2D ISO de base, et un addon.
L’addon ajoute les fonctions suivantes :

  • déplacements du joueur par huitième de carreau
  • déplacements du joueur dans les huit directions (désactivable)
  • le joueur peut courrir grâce à la touche [Z] (désactivable)
  • le joueur peut sauter grâce à la touche [A] (désactivable)
  • gestion des plates-formes mobiles

Le script 2D ISO doit être placé au-dessus de main et sous tous les autres scripts de base de RMXP.
L’addon, s’il est utilisé, doit être placé immédiatement sous le script 2D ISO de base.

Deux cartes sont nécessaires au fonctionnement du script : une carte gérant les données, et une le rendu isométrique.
Tout d’abord définissez les dimensions de la carte de données, puis créez la grille d’une carte en vue isométrique à partir de ces dimensions. L’origine de la carte (le coin en haut à gauche) se retrouve en haut de la carte en vue isométrique.
Un carreau isométrique est contenu dans un rectangle de 64px par 32px.

Exemple pour une carte de données de 20 carreaux de large pour 16 carreaux en hauteur :

Carte en vue isométrique (20 * 16)

La hauteur en pixels de la carte en vue isométrique doit être un multiple de 32. Par conséquent, si la somme de la hauteur et de la largeur en carreaux de la carte de données est impaire, vous devez augmenter la hauteur de la carte en vue isométrique, la carte devant toujours être calée en haut (il y aura une bande vide d’un hauteur de 16px en bas).

Exemple pour une carte de données de 19 carreaux de large pour 16 carreaux en hauteur :

Carte en vue isométrique (19 * 16)

C’est à vous de dessiner la carte en vue isométrique de la manière que vous voulez et d’en faire un tileset exploitable, en jouant sur les couches et les priorités des carreaux pour obtenir l’affichage souhaité.
Une fois cette carte créée dans RMXP, vous devez lui ajouter la carte de données en tant que carte fille dans l’arborescence.
Cette carte de données est utilisée pour définir les passabilités et autres caractéristiques des carreaux.

Exemple : utilisation du premier tilesetpour définir les endroits impassables (carreau de la tente marron) et les endroits de type “bosquet” (carreau des hautes herbes).

Exemple de carte de données en utilisant le premier tileset

Les évènements doivent être placés sur la carte de données, tandis que le panorama et le brouillard doivent être spécifiés pour le tileset de la carte en vue isométrique.

Configuration de l’addon

Au début du script vous trouverez le passage suivant :

    ###### SWITCHES/VARIABLES CONFIG ######
    $num_switch_run = 1 # switch that enables/disables running
    $num_switch_jump = 2 # switch that enables/disables jumping
    $num_switch_8dirs = 3 # switch that enables/disables 8-dirs movements
    $num_switch_void = 4 # switch triggered when falling
    $num_variable_x_secure = 1 # last x position before falling
    $num_variable_y_secure = 2 # last y position before falling
    $num_terrain_void = 1 # terrain tag number for void
    ###### END CONFIG ######

Ces lignes correspondent respectivement à :

  • numéro d’interrupteur pour activer/désactiver la possibilité de courrir pour le joueur
  • numéro d’interrupteur pour activer/désactiver la possibilité d’effectuer des sauts pour le joueur
  • numéro d’interrupteur pour activer/désactiver les déplacements dans les huit directions
  • numéro de variable stockant la composante horizontale de la dernière position sûre du joueur, avant une chute dans le vide
  • numéro de variable stockant la composante verticale de la dernière position sûre du joueur, avant une chute dans le vide
  • numéro de terrain pour indiquer les carreaux correspondant au vide

Télécharger la démo contenant le script

Leave a Reply

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