J'essaie de créer un moteur de jeu flexible basé sur des tuiles pour créer toutes sortes de jeux de puzzle non en temps réel, tout comme Bejeweled, Civilization, Sokoban, etc.
La première approche que j'ai eue était d'avoir un tableau 2D d'objets Tile, puis d'avoir des classes héritées de Tile qui représentaient les objets du jeu. Malheureusement, de cette façon, je ne pouvais pas empiler plus d'éléments de jeu sur la même tuile sans avoir un tableau 3D.
Ensuite, j'ai fait quelque chose de différent: j'avais toujours le tableau 2D d'objets Tile, mais chaque objet Tile contenait une liste où je mettais et différentes entités. Cela a bien fonctionné jusqu'à il y a 20 minutes, quand je me suis rendu compte que c'était trop cher de faire beaucoup de choses, regardez cet exemple:
J'ai une entité Wall. À chaque mise à jour, je dois vérifier les 8 tuiles adjacentes, puis vérifier toutes les entités dans la liste des tuiles, vérifier si l'une de ces entités est un mur, puis enfin dessiner le sprite correct. (Ceci est fait pour dessiner les murs les uns à côté des autres de façon transparente)
La seule solution que je vois maintenant est d'avoir un réseau 3D, avec de nombreuses couches, qui pourrait convenir à toutes les situations. Mais de cette façon, je ne peux pas empiler deux entités qui partagent la même couche sur la même tuile. Chaque fois que je veux le faire, je dois créer un nouveau calque.
Y a-t-il une meilleure solution? Qu'est-ce que tu ferais?