Déjà cela aurait peut-être aidé de poster les instructions :
FonctionnementCe script redessine dynamiquement un objet Bitmap qui représente l'écran.
Il s'agit d'un Bitmap de dimensions 640*480, 480*360 ou 320*240 (cela dépend de la résolution choisie R1, R2 ou R3) contenu dans un sprite dessiné sous tous les autres objets graphiques excepté le panorama.
Pour chaque pixel de ce Bitmap est calculé le point de la carte à afficher, via une projection spatiale d'un unique polygone texturé (la carte).
Ensuite un décalage vertical est déterminé en fonction de l'inclinaison, de la
"heightmap" du sol et des "heightmaps" des tiles des trois couches.
Tous les pixels entre la position originelle et la position après décalage vertical sont remplis, ce qui crée l'effet de relief.
Heightmaps : Une heightmap est une image en niveau de gris qui contient les informations de hauteur pour chaque pixel.
Un pixel noir signifie aucun décalage d'altitude, tandis qu'un pixel blanc représente un décalage maximal.
La décalage d'altitude maximal a une valeur fixée à 32 pixels, donc un tile associé à une heightmap complètement blache va être rendu comme un cube.
- heightmap du solVous pouvez optionnellement associer une heightmap à la carte de RM, qui servira à ajouter du relief indépendamment des tiles des trois couches.
Cette heightmap est automatiquement étirée de façon à correspondre aux dimensions de la carte, en utilisant une interpolation linéaire.
Les fichiers de heightmaps de sol doivent être nommés "Heightmap_XXX" (XXX étant un identifiant numérique), et être placés dans le répertoire "Heightmap".
- heightmaps des tilesCes heightmaps sont regroupées dans une image similaire au tileset de la carte. Ce sont des tilesets nommés "[nom du tileset lié]_Hmap" à placer dans le répertoire "Tilesets".
Pour chaque tileset utilisé dans une carte utilisant le HM7 doit correspondre une heightmap de ce type.
- heightmaps des autotilesMême système : une heightmap correspondant graphiquement au fichier de l'autotile, et suffixé "[nom de l'autotile lié]_Hmap", peut être placée dans le répertoire "Autotile" (c'est optionnel cette fois).
Y a-t-il une méthode simple pour créer des heightmaps ? Non.
Pour les motifs les plus simples n'importe quelle logiciel de manipulation peut convenir.
Pour les objets plus complexes, une solution est d'utiliser un logiciel de modélisation 3D, puis d'appliquer un dégradé de couleur noir->blanc et de récupérer la vue du dessus.
Textures verticales :Par défaut, au moment de dessiner un pixel de l'écran, tous les pixels entre le "sol" (altitude 0) et l'altitude calculée sont remplis avec la couleur du point de la carte source.
Lorsque la pente est trop important (murs verticaux, par exemple), c'est laid :
Pour remédier à ce problème, vous pouvez utiliser une "texturemap" par tile. Il s'agit d'une image composée de cinq carrés de dimensions 32*32 : une "colormap" et quatre textures verticales (une pour chaque côté).
La colormap est une image quadricolore (rouge, vert, bleu, noir) qui est en correspondance avec le tile : au moment de dessiner un pixel de l'écran, quand le point source de la carte est déterminé, le poinr correspondant sur la colormap indique
quelle texture verticale utiliser (Rouge => first texture, Vert => deuxième texture, Bleu => troisième texture, Noir => quatrième texture).
Un pixel transparent dans une texture signifie que la couleur du point d'origine de la carte foit être utilisée.
Les texturemaps doivent être placées dans le répertoire "Tilesets/[nom du tileset]_Textures" et être nommées "Texture_[numéro de tile]".
Le numéro de tile représente sa position dans le tileset (en commençant à 0), et est présenté sur trois chiffres.
- textures des autotilesIl n'y a qu'une seule colormap pour tous les autotiles, nommée "Texture_Auto". Elle est placée dans le répertoire "Autotiles/Textures" et est nécessaire.
Les texturemaps, ne contenant que les quatre textures verticales, doivent également être placées dans ce répertoire. Elles doivent être nommées "Texture_[nom de l'autotile lié]".
Divers :- L'ombrage automatique n'est pas paramétrable pour le moment (mais peut être désactivé). Cela signifie que les ombres ont toujours la même portée et la même direction.
- Comme les sprites des évènements sont toujours dessinés par dessus le sprite de rendu du HM7, ils ne sont pas utilisés ici (autrement les évènement ne pourraient pas être affichés derrière des éléments de la carte).
Les évènements sont dessinés directement dans le Bitmap du HM7, via la classe (HM7::Surface).
- Par défaut les évènements sont dessinés à l'altitude maximale correspondant à leurs coordonnées, donnée par l'altitude du sol et des tiles des trois couches.
Il est possible d'activer l'indicateur de carreaux obscurcissants dans l'onglet des tilesets de la base de données pour avoir l'altitude liée à un tile ignorée pour les évènements.
Instructions Ce qui est nécessaire :
- le script collé au dessus de Main
- le fichier MGC_Hmode7.dll à la racine du projet
- des fichiers spécifiques d'autotiles, de tilesets, de textures et de heightmaps
Pour activer le H-Mode7, il faut ajouter [HM7] dans le nom de la carte.
Les autres ajouts possibles qui suivent sont optionnels :
[HMAPXXX] : XXX est l'identifiant de la heightmap de sol à utiliser
[#XX] : XX est l'angle d'inclinaison (en degrés) : 0 -> 80, 0 par défaut
[%XXX] : XXX est l'angle de rotation (en degrés) : 0 -> 359, par défaut
[X] : active le rebouclage de la carte horizontalement
[Y] : active le rebouclage de la carte verticalement
[DA] : désactive l'animation des autotiles
[AFXXX] : XXX est la période entre deux animations des autotiles animés : 1 -> 999, 20 frames par défaut
[DL] : désactive l'ombrage automatique
[RX] : X = 1 -> haute résolution (défaut)
X = 2 -> moyenne résolution (pour augmenter les performances)
X = 3 -> basse résolution (pour défaut encore plus les performances)
[CX] : X = 0 -> pas de décalage vertical (défaut)
X = 1 -> décalage vertical pour que la caméra ne coupe pas le sol (hors tiles des trois couches) en bas de l'écran.
Ne devrait être utilisé que lorsque l'horizon est visible.
X = 2 -> décalage vertical pour que la caméra ne coupe pas la carte en bas de l'écran.
Ne devrait être utilisé que lorsque l'horizon est visible.
[DF] : désactive le filtre de floutage (plus joli, mais réduit considérablement les performances)
[HF] : rafraîchit la carte uniquement toutes les deux frames (mois fluide, mais moins de lag)
[E] : moins d'éléments coupés en bas de l'écran. Peut causer beaucoup de lag, surtout lors des rotations.
[DB] : les éléments coupés en bas de l'écran ne sont pas noirs (mais ils restent coupés).
Il est aussi possible d'associer un nom à une configuration au début du script.
Par exemple, avec la commande suivante :
HM7::Maps_Settings["MyKeyword"] = ["#60", "X", "HMAP3"]
Si un nom de carte contient "MyKeyword", alors le HM7 sera activé, avec un angle d'inclinaison de 60°, un rebouclage horizontal, et utilisant l'image "Heightmap_003" comme heightmap pour le sol.
Commandes - Pour définir un nouvel angle d'inclinaison (0~80) :
$scene.hm7_set_alpha(nouvel angle)
Pour aller de façon progressive vers un nouvel angle d'inclinaison :
$scene.hm7_to_alpha(nouvel angle, vitesse)
Pour augmenter ou réduire l'inclinaison d'une certaine valeur :
$scene.hm7_increase_alpha(valeur)
- Pour définir un nouvel angle de rotation (0~379) :
$scene.hm7_set_theta(nouvel angle)
Pour aller de façon progressive vers un nouvel angle de rotation :
$scene.hm7_to_theta(nouvel angle, vitesse, sens)
Pour augmenter ou réduire l'angle de rotation d'une certaine valeur :
$scene.hm7_increase_theta(valeur)
- Pour définir une nouvelle valeur de zoom (en pourcentage - défaut = 100) :
$scene.hm7_set_zoom(nouvelle valeur)
Pour aller de façon progressive vers une nouvelle valeur de zoom :
$scene.hm7_to_zoom(nouvelle valeur, speed)
Pour augmenter ou réduire la valeur de zoom d'une certaine valeur :
$scene.hm7_increase_zoom(valeur)
- Pour modifier le dégradé de lumière vers l'horizon :
$scene.hm7_set_fading(rouge, vert, bleu, indicateur)
indicateur = 1 : la couleur déterminée par (rouge, vert, bleu) va être ajoutée à la ligne d'horizon
indicateur = 0 : la couleur déterminée par (rouge, vert, bleu) va être soustraite à la ligne d'horizon
- Pour définir l'altitude d'un évènement :
ajouter un commentaire dans la page de l'évènement avec "Altitude X", où X est la valeur de l'altitude ("Altitude 64" va rendre l'évènement 64 pixels au-dessus de sa position d'origine)
- Pour définir l'altitude du joueur :
utiliser : $game_player.altitude = X
- Pour fixer l'altitude d'un évènement (indépendant du relief de la carte) :
ajouter un commentaire dans la page de l'évènement avec "Floating"
- Pour fixer l'altitude du joueur :
utiliser : $game_player.floating = true
Et en plus, il y a une version 1.2.2.