Je suis en train de créer un RPG en mosaïque 2D dans XNA et je suis dans la phase de conception initiale. Je pensais à la façon dont je voulais que mon moteur de carreaux fonctionne et j'ai fait un croquis. Fondamentalement, je veux une grille de tuiles, mais à chaque emplacement de tuiles, je veux être en mesure d'ajouter plus d'une tuile et avoir un décalage. J'aimerais cela afin que je puisse faire quelque chose comme ajouter des arbres individuels sur la carte du monde pour donner plus de flair. Ou mettre des bouteilles sur un bar dans une ville sans avoir à dessiner un tas de différents carreaux de bar avec des bouteilles différentes.Aide à la mise en œuvre de la conception de programmes C#: plusieurs tableaux de listes ou un meilleur moyen?
Mais peut-être que ma portée est plus grande que ma portée. Je suis allé à mettre en œuvre l'idée et avait quelque chose comme ça dans mon objet Carte:
List<Tile>[,] Grid;
Mais alors j'ai pensé à ce sujet. Disons que j'avais une carte du monde de 200x200, qui serait en fait assez petite en ce qui concerne les RPG. Cela équivaudrait à 40 000 listes. À mon avis, je pense qu'il doit y avoir un meilleur moyen. Maintenant c'est une optimisation prématurée. Je ne sais pas si la façon dont j'arriverai à concevoir mes cartes et mon jeu sera capable de gérer cela, mais cela semble inutilement inefficace et quelque chose qui pourrait surgir si mon jeu devenait plus complexe. Une idée que j'ai est de rendre le décalage et les multiples tuiles facultatifs de sorte que je paye seulement pour eux en cas de besoin. Mais je ne suis pas sûr de savoir comment je ferais ça. Un tableau multiple d'objets?
object[,] Grid;
Alors, voici mes critères:
- Une grille 2D d'emplacements de tuiles
- Chaque emplacement de la tuile a une tuile minimum de 1, mais peut éventuellement avoir plus
- Chaque tuile supplémentaire peut éventuellement avoir un décalage x et y pour le placement précis
Quelqu'un peut-il aider avec quelques idées pour la mise en œuvre de tels un design (n'en a pas besoin fait pour moi, juste des idées) tout en gardant l'usage de la mémoire au minimum?
Si vous avez besoin de plus de fond est ici à peu près ce que mes objets Carte et tuile montant:
public struct Map
{
public Texture2D Texture;
public List<Rectangle> Sources; //Source Rectangles for where in Texture to get the sprite
public List<Tile>[,] Grid;
}
public struct Tile
{
public int Index; //Where in Sources to find the source Rectangle
public int X, Y; //Optional offsets
}
Je veux voir votre jeu =] – Luiscencio
Qu'en est-il un dictionnaire multi-entrée? quelque chose comme «Dictionnaire>' –