Map et mosaïques


  1. Présentation

    Comment créer des mondes très vastes quand on a peu de mémoire? Ainsi s'est posé le problème dans les RPG sur console 8 bits...
    La solution trouvée à ce problème ce sont les mosaïques ou tiles en anglais. Un écran est constitué de multiples petites zones graphiques carrées de taille constante généralement égale à 16x16...

    Voici comment est composé le décor!

    Le gain en mémoire est énorme car on peut réutiliser de multiples fois ces mosaiques! Bien sur, cette technique a tendance à rendre tout carré, tout l'art du graphiste est alors de savoir masquer l'aspect carré et rendre invisible la "supercherie" (en créant des transitions douces entre différentes mosaiques).

    Voici quelques exemples de jeu utilisant cette technique:


    chrono trigger

    Lufia 2

    secret of mana : remarquez le talent des graphistes pour cacher les mosaiques!


  2. Implémentation

    Une carte representant le monde (objet Tile_map dans notre lib) n'est donc qu'un gros tableau indexant des mosaïques (objet Tiles dans notre lib). Cette carte peut avoir plusieurs couches (liste chaînée de cartes) pour représenter les différents plans de la scène comme dans cet exemple avec un couche pour le ciel, une autre pour les ronds, une pour l'arbre et enfin une autre pour le sol:

    carte multi-couche

    Une carte peut enfin être infini, c'est à dire qu'elle boucle sur elle-même! On peut aussi avoir des vitesses de deplacement différentes suivant les couches de la carte, créant ce qu'on appelle un scrolling parallaxe...

    Les mosaiques, elles, ont différents attributs: transparentes, animées, solides (on ne peut marcher dessus, c'est le cas d'une mosaique représentant un mur) et même coût de déplacement (ex: marcher sur du sable et plus fatiguant que marcher sur des pavés).