Map : décors infinis (et au dela...) pour jeux

Description

Voici la source d'une technique trés utilisée pour les jeux en 2D : les cartes (ou les Map en anglais). c'est surtout utilisé pour les jeux de plateforme,les zelda like etc... Il me semble que la GameBoy fait les map en hardware.

Une carte permet d'afficher des décors 2D gigantesques en utilisant peu de mémoire. Pour créér un décor, on dispose des petits motifs de telle sorte a former a la fin un décor complet. C'est comme une mosaique : une mosaique est formée de petits carrés de motif que l'on assemble pour former une image complette.

Concretement, on dispose d'une collection de motif (Tile), d'une matrice (la carte) (tableau a 2 dimensions) qui dans chaque case contient quel motif on doit placer. Chaque cellule de la carte contient l'index du motif a utiliser. C'est là que c'est fort. Une matrice d'entier prends peu de place en mémoire et reprensente une grande image.

Si les dimensions des motifs sont tw par th et que la carte a les dimensions w par h, la carte represente une image tw*w pixels par th*h pixels
Exemple :
tw=32 th=32
w=500 h=600
la carte represente une image de 500*32 pixels par 32*600 pixels soit 16000x19200 !!!!

La source inclue un exemple d'une carte aléatoire qui s'y balade au hasard. Le petit programme affiche en plus le FPS (nb d'images par secondes). Vous verrez que c'est assez rapide!! (300 images par secondes sur mon pc!)

Classes :
Tile : represente un motif de la carte (classe abstraite)
SingleImageTile : motif composé d'une seule image
TileWarehouse : entrepot a motif
Map : une carte toute simple sans motif
MapTiled : une carte avec ses motifs
MapDisplayer : afficheur de la carte

NOTE : MapDisplayer possede 2 fonctions de rendu : render et scroll
render affiche la carte entiere a l'écran
scroll est optimisé pour le scrolling (deplacement de l'affichage dans la carte)
        • MISE A JOUR : ***


-editeur de carte : il est pas terrible sur le plan ergonomie mais pleinement fonctionnel
-package : toutes les classes sont desormais dans un package (repertoire map)
-possibilité de charger/sauver ses maps

Conclusion :


Pour Compiler :
sous Windows : lancez compile.bat
ou tapez : javac *.java

Pour executer :
sous Windows : lancez run.bat
ou tapez : java MapTest
pour lancer l'editeur : runEditor.bat

Testé sur Windows XP et sous Java 5

Note : la map de demo est vraiment tres moche...

Codes Sources

A voir également