Estoy tratando de crear un motor de juego flexible basado en fichas para hacer todo tipo de juegos de rompecabezas que no sean en tiempo real, como Bejeweled, Civilization, Sokoban, etc.
El primer enfoque que tuve fue tener una matriz 2D de objetos Tile, y luego tener clases heredadas de Tile que representaran los objetos del juego. Desafortunadamente de esa manera no pude apilar más elementos del juego en el mismo mosaico sin tener una matriz 3D.
Luego hice algo diferente: todavía tenía la matriz 2D de objetos Tile, pero cada objeto Tile contenía una Lista donde puse y diferentes entidades. Esto funcionó bien hasta hace 20 minutos, cuando me di cuenta de que es demasiado costoso hacer muchas cosas, mira este ejemplo:
Tengo una entidad de pared. Cada actualización tengo que verificar los 8 mosaicos adyacentes, luego verificar todas las entidades en la Lista de mosaicos, verificar si alguna de esas entidades es un Muro, y finalmente dibujar el sprite correcto. (Esto se hace para dibujar muros que están uno al lado del otro sin problemas)
La única solución que veo ahora es tener una matriz 3D, con muchas capas, que pueda adaptarse a cada situación. Pero de esa manera no puedo apilar dos entidades que comparten la misma capa en el mismo mosaico. Cada vez que quiero hacer eso tengo que crear una nueva capa.
¿Hay una mejor solución? ¿Qué harías?