Bonjour
Je réalise un RPG en perspective isométrique et je suis partagé concernant la manière d'afficher le terrain, je viens donc solliciter votre aide.
Le jeu possède donc un terrain composé de plusieurs pavés qui possèdent 3 faces, étant donné l'angle de vue en 3D iso. Il est donc évident que l'affichage des tiles doit se faire dans un ordre précis sinon le terrain ne ressemble à rien. De plus, les maps du jeu seront très grandes (peut-être plus de 1000x1000), j'ai donc décidé de découper les données de chaque map en plusieurs fichiers de 100x100 contenant les infos du terrain ainsi que les objets, ainsi seuls les fichiers/parties nécessaires de la map seront chargées dynamiquement. Je précise également que le joueur doit être en permanence au centre de l'écran, c'est le décors qui se déplace et non lui.
Je me retrouve face à 2 solutions:
- À chaque frame je détermine les tiles a dessiner ainsi que leurs positions (je crée 1 sprite par texture différente puis je le déplace) en fonction de la position du joueur et de la taille de l'écran. Cependant je ne pense pas que ce soit la solution la plus "optimisée"...
- Lors du chargement d'une partie de la map je crée 1 sprite par tile et lui attribue une position qui restera inchangée, il ne me reste plus qu'à déplacer la sf::View et à déterminer les tiles qui doivent apparaitre à l'écran. Cependant il semblerait que lorsque la view est trop éloignée le terrain oscille, ce qui peut poser problème avec les grandes maps.
- J'ai également entendu parler des vertexbuffer mais je ne suis pas sûr que ce soit adapté pour cet usage.
D'après vous, quelle serait la meilleure solution dans mon cas ?
Cordialement,