J'ai essayé plusieurs principes pour faire des maps 3d iso.
Si ta carte est suffisamment petite et les cases grandes, tu peux afficher la totalité des cases (visible ou non) avec les sprites des personnages/objets au dessus à chaque rafraichissement d'écran...
Tu peux aussi utiliser des cases (tiles) pour le terrain d'assez grande taille et avec une autre boucles afficher les sprites des personnages/objets qui vont dessus (ex une tile contient l'emplacement de 4 personnages/objets)
Bon, si ta carte est de taille moyenne, tu ne peux plus afficher toutes tes cases, même celles en dehors de l'écran visible comme ci-dessus... il faut alors n'afficher que celles qui sont dans les limites de ton écran visible.
Enfin, si ta carte est de taille immense et les cases petites (genre 4096x4096 tiles et tiles de 32x16, taille que j'utilise actuellement), tu dois alors ruser...
Affiche les tiles visibles, sauvegarde l'écran dans un sprite unique de la taille de celui-ci.
Ensuite, à chaque balayage, Si il n'y a pas de scrolling,tu affiche ce grand sprite correspondant aux terrain et les élement animés par dessus uniquement. (et tu vire le clearscreen() tu y gagne ainsi beaucoup)
Si il y a un scrolling, tu déplace cet immense sprite de la valeur du scrolling et tu n'affiche que les cases de bord (ex tu déplace l'écran vers la droite, tu ne raffiche que les tiles de la bordure gauche) puis tu ressauvegarde le terrain entier.
et ainsi de suite.
Les inconvégnants sont les suivants:
Lors des scrolls il est possible que tu perdes légèrement la synchro... mais qui s'en soucie, comparativement à la vitesse gagnée le reste du temps... Ca ne choque pas.
Si tu as du relief sur ta carte, tu ne peux pas avoir de montagne qui cacherai les élément sur son versant opposé. (à moins de traiter les tiles de la montagnes comme des personnages/objets, mais si la montagne est conséquente le ralentissement serait trop important)
Si tu as des éléments de terrains animés, comme de l'eau, ça nécessite de les gérer comme des personnages/objets.
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits