Je travaille sur un rpg descendant, et je veux mettre en œuvre des cartes de défilement sans couture. C'est-à-dire que lorsque le joueur explore le monde, il n'y a pas d'écran de chargement entre les cartes et pas de «portes» vers la zone suivante.tilemaps de défilement sans soudure
J'ai deux façons de briser le monde. Au niveau supérieur, j'ai des "zones" qui sont simplement une collection de 9 "cartes" (Ces zones ne sont représentées que par des répertoires). Dans la zone, les 9 cartes sont organisées en une grille de 3x3. Je n'ai pas encore trouvé la meilleure façon de représenter ces cartes, que ce soit par index ou par coordonnées relatives à la zone parente. Ces cartes sont ce qui est réellement rendu à l'écran de l'utilisateur. Compte tenu de la taille de chaque carte, et de la taille de la fenêtre, je sais que l'utilisateur ne pourra voir qu'un maximum de quatre cartes quand elles sont au coin d'une carte.
Mon problème est, comment puis-je suivre les cartes et leurs décalages respectifs dans le code que le joueur explore le monde? Je pensais avoir un map<Point, Map*>
avec 0,0 étant la carte dans laquelle se trouve le joueur. Si le joueur était dans le coin inférieur gauche de la carte, alors la carte à l'est serait stockée comme 1,0, le carte au sud serait de 0,1 et la carte sud-est serait de 1,1. Le problème que je prévois avec ceci est, je ne suis pas sûr des points sont mutables, et si reconstruire la liste chaque fois que le joueur se déplace dans une autre carte ou une section différente de la carte poserait un problème.
Le monde entier sera-t-il en mémoire à la fois? Ou allez-vous charger des zones adjacentes lorsque le joueur marche? –
Ils seront chargés pendant que le joueur marche. Je pensais à ce problème un peu plus, et peut-être que ce n'est pas aussi dur que je le pensais. Je pourrais juste garder une liste des cartes chargées. Comme je parcours la liste pour les rendre, je fais juste quelques contrôles pour voir quelle est leur relation avec la carte dans laquelle se trouve le joueur. Je peux garder un pointeur sur la "carte actuelle" disponible pour vérifier toutes les cartes de la liste . Si le joueur est hors de portée de la carte, je peux le décharger. – rcapote